Mercurial > hg > thermostat-ng > agent
changeset 2746:f902a9f69e4b
Add VmClassloaderInfoExtractor for accessing (un)loaded class count
Reviewed-by: jerboaa, stooke, neugens
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-August/024516.html
author | Miloslav Zezulka <mzezulka@redhat.com> |
---|---|
date | Mon, 04 Sep 2017 14:39:53 +0200 |
parents | c21830a1925f |
children | 2397ba60a7d6 |
files | plugins/jvm-overview/agent/src/main/java/com/redhat/thermostat/jvm/overview/agent/internal/model/VmClassloaderInfoExtractor.java plugins/jvm-overview/agent/src/test/java/com/redhat/thermostat/jvm/overview/agent/internal/model/VmClassloaderInfoExtractorTest.java |
diffstat | 2 files changed, 126 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/jvm-overview/agent/src/main/java/com/redhat/thermostat/jvm/overview/agent/internal/model/VmClassloaderInfoExtractor.java Mon Sep 04 14:39:53 2017 +0200 @@ -0,0 +1,57 @@ +/* + * Copyright 2012-2017 Red Hat, Inc. + * + * This file is part of Thermostat. + * + * Thermostat is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * Thermostat is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Thermostat; see the file COPYING. If not see + * <http://www.gnu.org/licenses/>. + * + * Linking this code with other modules is making a combined work + * based on this code. Thus, the terms and conditions of the GNU + * General Public License cover the whole combination. + * + * As a special exception, the copyright holders of this code give + * you permission to link this code with independent modules to + * produce an executable, regardless of the license terms of these + * independent modules, and to copy and distribute the resulting + * executable under terms of your choice, provided that you also + * meet, for each linked independent module, the terms and conditions + * of the license of that module. An independent module is a module + * which is not derived from or based on this code. If you modify + * this code, you may extend this exception to your version of the + * library, but you are not obligated to do so. If you do not wish + * to do so, delete this exception statement from your version. + */ + +package com.redhat.thermostat.jvm.overview.agent.internal.model; + +import com.redhat.thermostat.jvm.overview.agent.VmUpdate; +import com.redhat.thermostat.jvm.overview.agent.VmUpdateException; + +class VmClassloaderInfoExtractor { + + final VmUpdate vmUpdate; + + VmClassloaderInfoExtractor(VmUpdate update) { + this.vmUpdate = update; + } + + public Long getLoadedClassesCount() throws VmUpdateException { + return vmUpdate.getPerformanceCounterLong("java.cls.loadedClasses"); + } + + public Long getUnloadedClassesCount() throws VmUpdateException { + return vmUpdate.getPerformanceCounterLong("java.cls.unloadedClasses"); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/jvm-overview/agent/src/test/java/com/redhat/thermostat/jvm/overview/agent/internal/model/VmClassloaderInfoExtractorTest.java Mon Sep 04 14:39:53 2017 +0200 @@ -0,0 +1,69 @@ +/* + * Copyright 2012-2017 Red Hat, Inc. + * + * This file is part of Thermostat. + * + * Thermostat is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * Thermostat is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Thermostat; see the file COPYING. If not see + * <http://www.gnu.org/licenses/>. + * + * Linking this code with other modules is making a combined work + * based on this code. Thus, the terms and conditions of the GNU + * General Public License cover the whole combination. + * + * As a special exception, the copyright holders of this code give + * you permission to link this code with independent modules to + * produce an executable, regardless of the license terms of these + * independent modules, and to copy and distribute the resulting + * executable under terms of your choice, provided that you also + * meet, for each linked independent module, the terms and conditions + * of the license of that module. An independent module is a module + * which is not derived from or based on this code. If you modify + * this code, you may extend this exception to your version of the + * library, but you are not obligated to do so. If you do not wish + * to do so, delete this exception statement from your version. + */ + +package com.redhat.thermostat.jvm.overview.agent.internal.model; + +import com.redhat.thermostat.jvm.overview.agent.VmUpdate; +import com.redhat.thermostat.jvm.overview.agent.VmUpdateException; +import org.junit.Test; +import static org.junit.Assert.*; +import org.junit.Before; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class VmClassloaderInfoExtractorTest { + + private VmClassloaderInfoExtractor extractor; + private VmUpdate update; + + @Before + public void setup() { + update = mock(VmUpdate.class); + extractor = new VmClassloaderInfoExtractor(update); + } + + @Test + public void testClassesCount() throws VmUpdateException { + final String MONITOR_NAME = "java.cls.loadedClasses"; + final Long MONITOR_VALUE = 300l; + + when(update.getPerformanceCounterLong(eq(MONITOR_NAME))).thenReturn(MONITOR_VALUE); + + Long returned = extractor.getLoadedClassesCount(); + assertEquals(MONITOR_VALUE, returned); + } +}