You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/08/15 18:43:36 UTC
[08/23] incubator-geode git commit: GEODE-1781: repackage internal
statistics classes and refactor statistics tests
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/866bacec/geode-core/src/test/java/com/gemstone/gemfire/internal/SimpleStatSamplerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/SimpleStatSamplerJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/SimpleStatSamplerJUnitTest.java
deleted file mode 100755
index 5d7c9f4..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/SimpleStatSamplerJUnitTest.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal;
-
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.util.List;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TestName;
-
-import com.gemstone.gemfire.CancelCriterion;
-import com.gemstone.gemfire.Statistics;
-import com.gemstone.gemfire.StatisticsType;
-import com.gemstone.gemfire.internal.stats50.VMStats50;
-import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
-
-/**
- * Integration tests for SimpleStatSampler.
- *
- * @since GemFire 7.0
- */
-@Category(IntegrationTest.class)
-public class SimpleStatSamplerJUnitTest extends StatSamplerTestCase {
-
- @Rule
- public TestName testName = new TestName();
-
- private LocalStatisticsFactory statisticsFactory;
-
- private File testDir = new File(getClass().getSimpleName());
-
- @BeforeClass
- public static void beforeClass() throws Exception {
- final String dirName = SimpleStatSamplerJUnitTest.class.getSimpleName();
- final File dir = new File(dirName);
- if (dir.exists()) {
- FileUtil.delete(dir);
- }
- }
- @Before
- public void setUp() throws Exception {
- if (!this.testDir.exists()) {
- this.testDir.mkdir();
- }
- assertTrue(this.testDir.exists());
- System.setProperty(SimpleStatSampler.ARCHIVE_FILE_NAME_PROPERTY,
- this.testDir.getName() + File.separator + SimpleStatSampler.DEFAULT_ARCHIVE_FILE_NAME);
- }
-
- @After
- public void tearDown() throws Exception {
- System.clearProperty(SimpleStatSampler.ARCHIVE_FILE_NAME_PROPERTY);
- System.clearProperty(SimpleStatSampler.FILE_SIZE_LIMIT_PROPERTY);
- System.clearProperty(SimpleStatSampler.DISK_SPACE_LIMIT_PROPERTY);
- System.clearProperty(SimpleStatSampler.SAMPLE_RATE_PROPERTY);
- closeStatisticsFactory();
- }
-
- /**
- * Tests the majority of getters and the basic functionality of the sampler.
- */
- @Test
- public void testBasics() throws Exception {
- initStatisticsFactory();
-
- SimpleStatSampler statSampler = getSimpleStatSampler();
- assertTrue(statSampler.waitForInitialization(5000));
-
- assertEquals(new File(System.getProperty(SimpleStatSampler.ARCHIVE_FILE_NAME_PROPERTY)),
- statSampler.getArchiveFileName());
- assertEquals(0, statSampler.getArchiveFileSizeLimit());
- assertEquals(0, statSampler.getArchiveDiskSpaceLimit());
- assertEquals(SimpleStatSampler.DEFAULT_SAMPLE_RATE, statSampler.getSampleRate());
- assertEquals(true, statSampler.isSamplingEnabled());
-
- int statsCount = statSampler.getStatisticsManager().getStatisticsCount();
-
- assertEquals(statsCount, statSampler.getStatisticsModCount());
- assertEquals(statsCount, statSampler.getStatisticsManager().getStatisticsCount());
- assertEquals(statsCount, statSampler.getStatistics().length);
-
- assertTrue(statsCount > 0);
-
- assertEquals(getStatisticsManager().getId(), statSampler.getSystemId());
- assertTrue(statSampler.getSystemStartTime() <= System.currentTimeMillis());
- assertEquals(SocketCreator.getHostName(SocketCreator.getLocalHost()),
- statSampler.getSystemDirectoryPath());
-
- VMStatsContract vmStats = statSampler.getVMStats();
- assertNotNull(vmStats);
- assertTrue(vmStats instanceof VMStats50);
- /* NOTE: VMStats50 is not an instance of Statistics but instead its
- * instance contains 3 instances of Statistics:
- * 1) vmStats
- * 2) heapMemStats
- * 3) nonHeapMemStats
- */
-
- Method getProcessStats = null;
- try {
- getProcessStats = SimpleStatSampler.class.getMethod("getProcessStats");
- fail("SimpleStatSampler should not have the method getProcessStats()");
- } catch (NoSuchMethodException exected) {
- // passed
- }
- assertNull(getProcessStats);
-
- assertEquals("Unknown product", statSampler.getProductDescription());
- }
-
- /**
- * Tests that the configured archive file is created and exists.
- */
- @Test
- public void testArchiveFileExists() throws Exception {
- final String dir = this.testDir.getName();
- final String archiveFileName = dir + File.separator + this.testName + ".gfs";
- final File archiveFile1 = new File(dir + File.separator + this.testName + ".gfs");
- System.setProperty(SimpleStatSampler.ARCHIVE_FILE_NAME_PROPERTY, archiveFileName);
- initStatisticsFactory();
-
- SimpleStatSampler statSampler = getSimpleStatSampler();
- assertTrue(statSampler.waitForInitialization(5000));
-
- final File archiveFile = statSampler.getArchiveFileName();
- assertNotNull(archiveFile);
- assertEquals(archiveFile1, archiveFile);
-
- waitForFileToExist(archiveFile, 5000, 10);
-
- assertTrue("File name incorrect: archiveFile.getName()=" + archiveFile.getName() +
- " archiveFile.getAbsolutePath()=" + archiveFile.getAbsolutePath() +
- " getCanonicalPath()" + archiveFile.getCanonicalPath(),
- archiveFileName.contains(archiveFile.getName()));
- }
-
- /**
- * Tests the statistics sample rate within an acceptable margin of error.
- */
- @Test
- public void testSampleRate() throws Exception {
- initStatisticsFactory();
-
- SimpleStatSampler statSampler = getSimpleStatSampler();
- assertTrue(statSampler.waitForInitialization(5000));
-
- assertEquals(SimpleStatSampler.DEFAULT_SAMPLE_RATE, statSampler.getSampleRate());
-
- assertTrue(getStatisticsManager().getStatListModCount() > 0);
-
- List<Statistics> statistics = getStatisticsManager().getStatsList();
- assertNotNull(statistics);
- assertTrue(statistics.size() > 0);
-
- StatisticsType statSamplerType = getStatisticsManager().findType("StatSampler");
- Statistics[] statsArray = getStatisticsManager().findStatisticsByType(statSamplerType);
- assertEquals(1, statsArray.length);
-
- final Statistics statSamplerStats = statsArray[0];
- final int initialSampleCount = statSamplerStats.getInt("sampleCount");
- final int expectedSampleCount = initialSampleCount + 2;
-
- waitForStatSample(statSamplerStats, expectedSampleCount, 20000, 10);
- }
-
- /**
- * Tests lack of methods for supporting LocalStatListener.
- */
- @Test
- public void testLocalStatListener() throws Exception {
- initStatisticsFactory();
-
- SimpleStatSampler statSampler = getSimpleStatSampler();
- assertTrue(statSampler.waitForInitialization(5000));
-
- Method getLocalListeners = null;
- try {
- getLocalListeners = getSimpleStatSampler().getClass().getMethod("getLocalListeners");
- fail("SimpleStatSampler should not have the method getLocalListeners()");
- } catch (NoSuchMethodException exected) {
- // passed
- }
- assertNull(getLocalListeners);
-
- Method addLocalStatListener = null;
- try {
- addLocalStatListener = getSimpleStatSampler().getClass().getMethod("addLocalStatListener", LocalStatListener.class, Statistics.class, String.class);
- fail("SimpleStatSampler should not have the method addLocalStatListener()");
- } catch (NoSuchMethodException exected) {
- // passed
- }
- assertNull(addLocalStatListener);
-
- Method removeLocalStatListener = null;
- try {
- removeLocalStatListener = getSimpleStatSampler().getClass().getMethod("removeLocalStatListener", LocalStatListener.class);
- fail("SimpleStatSampler should not have the method addLocalStatListener()");
- } catch (NoSuchMethodException exected) {
- // passed
- }
- assertNull(removeLocalStatListener);
- }
-
- /**
- * Invokes stop() and then validates that the sampler did in fact stop.
- */
- @Test
- public void testStop() throws Exception {
- initStatisticsFactory();
-
- SimpleStatSampler statSampler = getSimpleStatSampler();
- assertTrue(statSampler.waitForInitialization(5000));
-
- // validate the stat sampler is running
- StatisticsType statSamplerType = getStatisticsManager().findType("StatSampler");
- Statistics[] statsArray = getStatisticsManager().findStatisticsByType(statSamplerType);
- assertEquals(1, statsArray.length);
-
- final Statistics statSamplerStats = statsArray[0];
- final int initialSampleCount = statSamplerStats.getInt("sampleCount");
- final int expectedSampleCount = initialSampleCount + 2;
-
- waitForStatSample(statSamplerStats, expectedSampleCount, 20000, 10);
-
- // stop the stat sampler
- statSampler.stop();
-
- // validate the stat sampler has stopped
- final int stoppedSampleCount = statSamplerStats.getInt("sampleCount");
-
- // the following should timeout without completing
- assertStatValueDoesNotChange(statSamplerStats, "sampleCount", stoppedSampleCount, 5000, 10);
-
- assertEquals(stoppedSampleCount, statSamplerStats.getInt("sampleCount"));
- }
-
- /**
- * Verifies that archive rolling works correctly when archive-file-size-limit
- * is specified. This feature is broken in SimpleStatSampler.
- */
- @Test
- public void testArchiveRolling() throws Exception {
- // set the system property to use KB instead of MB for file size
- System.setProperty(HostStatSampler.TEST_FILE_SIZE_LIMIT_IN_KB_PROPERTY, "true");
-
- final String dir = this.testDir.getName() + File.separator + this.testName;
- new File(dir).mkdir();
-
- final String archiveFileName = dir + File.separator + this.testName + ".gfs";
- System.setProperty(SimpleStatSampler.ARCHIVE_FILE_NAME_PROPERTY, archiveFileName);
- System.setProperty(SimpleStatSampler.FILE_SIZE_LIMIT_PROPERTY, "1");
- System.setProperty(SimpleStatSampler.DISK_SPACE_LIMIT_PROPERTY, "0");
- System.setProperty(SimpleStatSampler.SAMPLE_RATE_PROPERTY, "1000");
- initStatisticsFactory();
-
- final File archiveFile1 = new File(dir + File.separator + this.testName + "-01-01.gfs");
- final File archiveFile2 = new File(dir + File.separator + this.testName + "-01-02.gfs");
- final File archiveFile3 = new File(dir + File.separator + this.testName + "-01-03.gfs");
- final File archiveFile4 = new File(dir + File.separator + this.testName + "-01-04.gfs");
-
- assertTrue(getSimpleStatSampler().waitForInitialization(5000));
-
- assertTrue(getSimpleStatSampler().fileSizeLimitInKB());
- assertEquals(1024, getSimpleStatSampler().getArchiveFileSizeLimit());
-
- waitForFileToExist(archiveFile1, 4000, 10);
- waitForFileToExist(archiveFile2, 4000, 10);
- waitForFileToExist(archiveFile3, 4000, 10);
- waitForFileToExist(archiveFile4, 4000, 10);
- }
-
- /**
- * Verifies that archive removal works correctly when archive-disk-space-limit
- * is specified. This feature is broken in SimpleStatSampler.
- */
- @Test
- public void testArchiveRemoval() throws Exception {
- // set the system property to use KB instead of MB for file size
- System.setProperty(HostStatSampler.TEST_FILE_SIZE_LIMIT_IN_KB_PROPERTY, "true");
-
- final String dir = this.testDir.getName() + File.separator + this.testName;
- new File(dir).mkdir();
-
- final String archiveFileName = dir + File.separator + this.testName + ".gfs";
- final int sampleRate = 1000;
- System.setProperty(SimpleStatSampler.ARCHIVE_FILE_NAME_PROPERTY, archiveFileName);
- System.setProperty(SimpleStatSampler.FILE_SIZE_LIMIT_PROPERTY, "1");
- System.setProperty(SimpleStatSampler.DISK_SPACE_LIMIT_PROPERTY, "12");
- System.setProperty(SimpleStatSampler.SAMPLE_RATE_PROPERTY, String.valueOf(sampleRate));
- initStatisticsFactory();
-
- final File archiveFile1 = new File(dir + File.separator + this.testName + "-01-01.gfs");
- final File archiveFile2 = new File(dir + File.separator + this.testName + "-01-02.gfs");
- final File archiveFile3 = new File(dir + File.separator + this.testName + "-01-03.gfs");
- final File archiveFile4 = new File(dir + File.separator + this.testName + "-01-04.gfs");
- final File archiveFile5 = new File(dir + File.separator + this.testName + "-01-05.gfs");
-
- assertTrue(getSimpleStatSampler().waitForInitialization(5000));
-
- waitForFileToExist(archiveFile1, 4*sampleRate, 10);
- waitForFileToExist(archiveFile2, 4*sampleRate, 10);
- waitForFileToExist(archiveFile3, 4*sampleRate, 10);
- waitForFileToExist(archiveFile4, 4*sampleRate, 10);
- waitForFileToExist(archiveFile5, 4*sampleRate, 10);
- waitForFileToDelete(archiveFile1, 10*sampleRate, 10);
- }
-
- @Override
- protected StatisticsManager getStatisticsManager() {
- return this.statisticsFactory;
- }
-
- private SimpleStatSampler getSimpleStatSampler() {
- return this.statisticsFactory.getStatSampler();
- }
-
- private void initStatisticsFactory() {
- CancelCriterion stopper = new CancelCriterion() {
- public String cancelInProgress() {
- return null;
- }
- public RuntimeException generateCancelledException(Throwable e) {
- return null;
- }
- };
- this.statisticsFactory = new LocalStatisticsFactory(stopper);
- }
-
- private void closeStatisticsFactory() {
- if (this.statisticsFactory != null) {
- this.statisticsFactory.close();
- this.statisticsFactory = null;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/866bacec/geode-core/src/test/java/com/gemstone/gemfire/internal/StatArchiveWriterReaderJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/StatArchiveWriterReaderJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/StatArchiveWriterReaderJUnitTest.java
deleted file mode 100755
index ea9ff4b..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/StatArchiveWriterReaderJUnitTest.java
+++ /dev/null
@@ -1,1728 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.*;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.StatisticDescriptor;
-import com.gemstone.gemfire.Statistics;
-import com.gemstone.gemfire.StatisticsType;
-import com.gemstone.gemfire.i18n.LogWriterI18n;
-import com.gemstone.gemfire.internal.StatArchiveReader.StatValue;
-import com.gemstone.gemfire.internal.logging.InternalLogWriter;
-import com.gemstone.gemfire.internal.logging.PureLogWriter;
-import com.gemstone.gemfire.internal.statistics.ResourceInstance;
-import com.gemstone.gemfire.internal.statistics.ResourceType;
-import com.gemstone.gemfire.internal.statistics.SampleCollector;
-import com.gemstone.gemfire.internal.statistics.StatArchiveDescriptor;
-import com.gemstone.gemfire.internal.statistics.TestStatArchiveWriter;
-import com.gemstone.gemfire.internal.statistics.TestStatisticsManager;
-import com.gemstone.gemfire.internal.statistics.TestStatisticsSampler;
-import com.gemstone.gemfire.util.test.TestUtil;
-import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
-
-/**
- * Integration tests for StatArchiveWriter and StatArchiveReader. The tests
- * are very redundant and desperately need refactoring.
- *
- * @since GemFire 7.0
- */
-@Category(IntegrationTest.class)
-public class StatArchiveWriterReaderJUnitTest {
-
- private static final String dir = "StatArchiveWriterReaderJUnitTest";
-
- private Map<String,String> statisticTypes;
-
- private Map<String,Map<String,Number>> allStatistics;
-
- @Before
- public void setUp() throws Exception {
- this.statisticTypes = new HashMap<String,String>();
- this.allStatistics = new HashMap<String,Map<String,Number>>();
- new File(dir).mkdir();
- }
-
- @After
- public void tearDown() throws Exception {
- this.statisticTypes = null;
- this.allStatistics = null;
- StatisticsTypeFactoryImpl.clear();
- }
-
- private static void deleteTestOutputDir() {
- try {
- for (File file : new File(dir).listFiles()) {
- file.delete();
- }
- new File(dir).delete();
- } catch (NullPointerException e) {
- // dir probably doesn't exist
- }
- }
-
- @Test
- public void testDoubleCounterOneSample() throws Exception {
- final String testName = "testDoubleCounterOneSample";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final InternalLogWriter log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
- final TestStatisticsManager manager = new TestStatisticsManager(
- 1,
- "StatArchiveWriterReaderJUnitTest_" + testName,
- TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS);
-
- final TestStatisticsSampler sampler = new TestStatisticsSampler(manager);
- final SampleCollector sampleCollector = new SampleCollector(sampler);
-
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
- sampleCollector.addSampleHandler(writer);
-
- final StatisticDescriptor[] statsST1 = new StatisticDescriptor[] {
- manager.createDoubleCounter("long_double_1", "d1", "u1")
- };
-
- final StatisticsType ST1 = manager.createType("ST1", "ST1", statsST1);
- final Statistics st1_1 = manager.createAtomicStatistics(ST1, "st1_1", 1);
- final double value = 32317.716467;
- incDouble(st1_1, "long_double_1", value);
-
- final long sampleIncNanos = StatArchiveFormat.NANOS_PER_MILLI*1000;
- final long sampleTimeNanos = TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS + sampleIncNanos;
- sampleCollector.sample(sampleTimeNanos);
-
- writer.close();
-
- final StatisticDescriptor[] sds = ST1.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- assertEquals(value, st1_1.get(sds[i].getName()));
- }
-
- final StatArchiveReader reader = new StatArchiveReader(
- new File[]{new File(archiveFileName)}, null, false);
-
- // compare all resourceInst values against what was printed above
-
- @SuppressWarnings("rawtypes")
- final List resources = reader.getResourceInstList();
- assertNotNull(resources);
- assertEquals(1, resources.size());
-
- final StatArchiveReader.ResourceInst ri = (StatArchiveReader.ResourceInst) resources.get(0);
- assertNotNull(ri);
- final String statsName = ri.getName();
- assertNotNull(statsName);
- assertEquals("st1_1", statsName);
- assertEquals("ST1", ri.getType().getName());
-
- final StatValue[] statValues = ri.getStatValues();
- assertNotNull(statValues);
- assertEquals(1, statValues.length);
-
- final String statName = ri.getType().getStats()[0].getName();
- assertNotNull(statName);
- assertEquals("long_double_1", statName);
- assertEquals(statName, statValues[0].getDescriptor().getName());
- assertEquals(1, statValues[0].getSnapshotsSize());
- assertEquals(value, statValues[0].getSnapshotsMostRecent(), 0.01);
-
- final long[] timeStampsMillis = statValues[0].getRawAbsoluteTimeStamps();
- assertNotNull(timeStampsMillis);
- assertEquals(1, timeStampsMillis.length);
-
- final long initPreviousTimeStampMillis = NanoTimer.nanosToMillis(TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS);
- final long timeStampMillis = NanoTimer.nanosToMillis(sampleTimeNanos);
- final long deltaMillis = timeStampMillis - initPreviousTimeStampMillis;
- assertEquals(NanoTimer.nanosToMillis(sampleIncNanos), deltaMillis);
-
- final long expectedTimeStampMillis = deltaMillis + TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS;
- assertEquals(expectedTimeStampMillis, timeStampsMillis[0]);
-
- final double[] snapshots = statValues[0].getRawSnapshots();
- assertNotNull(snapshots);
- assertEquals(1, snapshots.length);
- assertEquals(value, snapshots[0], 0.01);
- }
-
- @Test
- public void testIntCounterOneSample() throws Exception {
- final String testName = "testIntCounterOneSample";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final InternalLogWriter log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
- final TestStatisticsManager manager = new TestStatisticsManager(
- 1,
- "StatArchiveWriterReaderJUnitTest_" + testName,
- TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS);
-
- final TestStatisticsSampler sampler = new TestStatisticsSampler(manager);
- final SampleCollector sampleCollector = new SampleCollector(sampler);
-
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
- sampleCollector.addSampleHandler(writer);
-
- final StatisticDescriptor[] statsST1 = new StatisticDescriptor[] {
- manager.createIntCounter("int_counter_1", "d1", "u1")
- };
-
- final StatisticsType ST1 = manager.createType("ST1", "ST1", statsST1);
- final Statistics st1_1 = manager.createAtomicStatistics(ST1, "st1_1", 1);
- final int value = 5;
- incInt(st1_1, "int_counter_1", value);
-
- final long sampleIncNanos = StatArchiveFormat.NANOS_PER_MILLI*1000;
- final long sampleTimeNanos = TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS + sampleIncNanos;
- sampleCollector.sample(sampleTimeNanos);
-
- writer.close();
-
- final StatisticDescriptor[] sds = ST1.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- assertEquals(value, st1_1.get(sds[i].getName()));
- }
-
- final StatArchiveReader reader = new StatArchiveReader(
- new File[]{new File(archiveFileName)}, null, false);
-
- // compare all resourceInst values against what was printed above
-
- @SuppressWarnings("rawtypes")
- final List resources = reader.getResourceInstList();
- assertNotNull(resources);
- assertEquals(1, resources.size());
-
- final StatArchiveReader.ResourceInst ri = (StatArchiveReader.ResourceInst) resources.get(0);
- assertNotNull(ri);
- final String statsName = ri.getName();
- assertNotNull(statsName);
- assertEquals("st1_1", statsName);
- assertEquals("ST1", ri.getType().getName());
-
- final StatValue[] statValues = ri.getStatValues();
- assertNotNull(statValues);
- assertEquals(1, statValues.length);
-
- final String statName = ri.getType().getStats()[0].getName();
- assertNotNull(statName);
- assertEquals("int_counter_1", statName);
- assertEquals(statName, statValues[0].getDescriptor().getName());
- assertEquals(1, statValues[0].getSnapshotsSize());
- assertEquals((double)value, statValues[0].getSnapshotsMostRecent(), 0.01);
-
- final long[] timeStampsMillis = statValues[0].getRawAbsoluteTimeStamps();
- assertNotNull(timeStampsMillis);
- assertEquals(1, timeStampsMillis.length);
-
- final long initPreviousTimeStampMillis = NanoTimer.nanosToMillis(TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS);
- final long timeStampMillis = NanoTimer.nanosToMillis(sampleTimeNanos);
- final long deltaMillis = timeStampMillis - initPreviousTimeStampMillis;
- assertEquals(NanoTimer.nanosToMillis(sampleIncNanos), deltaMillis);
-
- final long expectedTimeStampMillis = deltaMillis + TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS;
- assertEquals(expectedTimeStampMillis, timeStampsMillis[0]);
-
- final double[] snapshots = statValues[0].getRawSnapshots();
- assertNotNull(snapshots);
- assertEquals(1, snapshots.length);
- assertEquals((double)value, snapshots[0], 0.01);
- }
-
- @Test
- public void testIntGaugeOneSample() throws Exception {
- final String testName = "testIntGaugeOneSample";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final InternalLogWriter log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
- final TestStatisticsManager manager = new TestStatisticsManager(
- 1,
- "StatArchiveWriterReaderJUnitTest_" + testName,
- TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS);
-
- final TestStatisticsSampler sampler = new TestStatisticsSampler(manager);
- final SampleCollector sampleCollector = new SampleCollector(sampler);
-
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
- sampleCollector.addSampleHandler(writer);
-
- final StatisticDescriptor[] statsST1 = new StatisticDescriptor[] {
- manager.createIntGauge("int_gauge_1", "d1", "u1")
- };
-
- final StatisticsType ST1 = manager.createType("ST1", "ST1", statsST1);
- final Statistics st1_1 = manager.createAtomicStatistics(ST1, "st1_1", 1);
- final int value = 5;
- incInt(st1_1, "int_gauge_1", value);
-
- final long sampleIncNanos = StatArchiveFormat.NANOS_PER_MILLI*1000;
- final long sampleTimeNanos = TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS + sampleIncNanos;
- sampleCollector.sample(sampleTimeNanos);
-
- writer.close();
-
- final StatisticDescriptor[] sds = ST1.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- assertEquals(value, st1_1.get(sds[i].getName()));
- }
-
- final StatArchiveReader reader = new StatArchiveReader(
- new File[]{new File(archiveFileName)}, null, false);
-
- // compare all resourceInst values against what was printed above
-
- @SuppressWarnings("rawtypes")
- final List resources = reader.getResourceInstList();
- assertNotNull(resources);
- assertEquals(1, resources.size());
-
- final StatArchiveReader.ResourceInst ri = (StatArchiveReader.ResourceInst) resources.get(0);
- assertNotNull(ri);
- final String statsName = ri.getName();
- assertNotNull(statsName);
- assertEquals("st1_1", statsName);
- assertEquals("ST1", ri.getType().getName());
-
- final StatValue[] statValues = ri.getStatValues();
- assertNotNull(statValues);
- assertEquals(1, statValues.length);
-
- final String statName = ri.getType().getStats()[0].getName();
- assertNotNull(statName);
- assertEquals("int_gauge_1", statName);
- assertEquals(statName, statValues[0].getDescriptor().getName());
- assertEquals(1, statValues[0].getSnapshotsSize());
- assertEquals((double)value, statValues[0].getSnapshotsMostRecent(), 0.01);
-
- final long[] timeStampsMillis = statValues[0].getRawAbsoluteTimeStamps();
- assertNotNull(timeStampsMillis);
- assertEquals(1, timeStampsMillis.length);
-
- final long initialPreviousTimeStampMillis = NanoTimer.nanosToMillis(TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS);
- final long timeStampMillis = NanoTimer.nanosToMillis(sampleTimeNanos);
- final long deltaMillis = timeStampMillis - initialPreviousTimeStampMillis;
- assertEquals(NanoTimer.nanosToMillis(sampleIncNanos), deltaMillis);
-
- final long expectedTimeStampMillis = deltaMillis + TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS;
- assertEquals(expectedTimeStampMillis, timeStampsMillis[0]);
-
- final double[] snapshots = statValues[0].getRawSnapshots();
- assertNotNull(snapshots);
- assertEquals(1, snapshots.length);
- assertEquals((double)value, snapshots[0], 0.01);
- }
-
- @Test
- public void testLongCounterOneSample() throws Exception {
- final String testName = "testLongCounterOneSample";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final InternalLogWriter log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
- final TestStatisticsManager manager = new TestStatisticsManager(
- 1,
- "StatArchiveWriterReaderJUnitTest_" + testName,
- TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS);
-
- final TestStatisticsSampler sampler = new TestStatisticsSampler(manager);
- final SampleCollector sampleCollector = new SampleCollector(sampler);
-
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
- sampleCollector.addSampleHandler(writer);
-
- final StatisticDescriptor[] statsST1 = new StatisticDescriptor[] {
- manager.createLongCounter("long_counter_1", "d1", "u1")
- };
-
- final StatisticsType ST1 = manager.createType("ST1", "ST1", statsST1);
- final Statistics st1_1 = manager.createAtomicStatistics(ST1, "st1_1", 1);
- final long value = 5;
- incLong(st1_1, "long_counter_1", value);
-
- final long sampleIncNanos = StatArchiveFormat.NANOS_PER_MILLI*1000;
- final long sampleTimeNanos = TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS + sampleIncNanos;
- sampleCollector.sample(sampleTimeNanos);
-
- writer.close();
-
- final StatisticDescriptor[] sds = ST1.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- assertEquals(value, st1_1.get(sds[i].getName()));
- }
-
- final StatArchiveReader reader = new StatArchiveReader(
- new File[]{new File(archiveFileName)}, null, false);
-
- // compare all resourceInst values against what was printed above
-
- @SuppressWarnings("rawtypes")
- final List resources = reader.getResourceInstList();
- assertNotNull(resources);
- assertEquals(1, resources.size());
-
- final StatArchiveReader.ResourceInst ri = (StatArchiveReader.ResourceInst) resources.get(0);
- assertNotNull(ri);
- final String statsName = ri.getName();
- assertNotNull(statsName);
- assertEquals("st1_1", statsName);
- assertEquals("ST1", ri.getType().getName());
-
- final StatValue[] statValues = ri.getStatValues();
- assertNotNull(statValues);
- assertEquals(1, statValues.length);
-
- final String statName = ri.getType().getStats()[0].getName();
- assertNotNull(statName);
- assertEquals("long_counter_1", statName);
- assertEquals(statName, statValues[0].getDescriptor().getName());
- assertEquals(1, statValues[0].getSnapshotsSize());
- assertEquals((double)value, statValues[0].getSnapshotsMostRecent(), 0.01);
-
- final long[] timeStampsMillis = statValues[0].getRawAbsoluteTimeStamps();
- assertNotNull(timeStampsMillis);
- assertEquals(1, timeStampsMillis.length);
-
- final long initialPreviousTimeStampMillis = NanoTimer.nanosToMillis(TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS);
- final long timeStampMillis = NanoTimer.nanosToMillis(sampleTimeNanos);
- final long deltaMillis = timeStampMillis - initialPreviousTimeStampMillis;
- assertEquals(NanoTimer.nanosToMillis(sampleIncNanos), deltaMillis);
-
- final long expectedTimeStampMillis = deltaMillis + TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS;
- assertEquals(expectedTimeStampMillis, timeStampsMillis[0]);
-
- final double[] snapshots = statValues[0].getRawSnapshots();
- assertNotNull(snapshots);
- assertEquals(1, snapshots.length);
- assertEquals((double)value, snapshots[0], 0.01);
- }
-
- @Test
- public void testLongGaugeOneSample() throws Exception {
- final String testName = "testLongGaugeOneSample";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final InternalLogWriter log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
- final TestStatisticsManager manager = new TestStatisticsManager(
- 1,
- "StatArchiveWriterReaderJUnitTest_" + testName,
- TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS);
-
- final TestStatisticsSampler sampler = new TestStatisticsSampler(manager);
- final SampleCollector sampleCollector = new SampleCollector(sampler);
-
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
- sampleCollector.addSampleHandler(writer);
-
- final StatisticDescriptor[] statsST1 = new StatisticDescriptor[] {
- manager.createLongGauge("long_gauge_1", "d1", "u1")
- };
-
- final StatisticsType ST1 = manager.createType("ST1", "ST1", statsST1);
- final Statistics st1_1 = manager.createAtomicStatistics(ST1, "st1_1", 1);
- incLong(st1_1, "long_gauge_1", 5);
-
- final long sampleTimeNanos = TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS + StatArchiveFormat.NANOS_PER_MILLI*2;
- sampleCollector.sample(sampleTimeNanos);
-
- writer.close();
-
- final StatisticDescriptor[] sds = ST1.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- assertEquals(5L, st1_1.get(sds[i].getName()));
- }
-
- final StatArchiveReader reader = new StatArchiveReader(
- new File[]{new File(archiveFileName)}, null, false);
-
- // compare all resourceInst values against what was printed above
-
- @SuppressWarnings("rawtypes")
- final List resources = reader.getResourceInstList();
- assertNotNull(resources);
- assertEquals(1, resources.size());
-
- final StatArchiveReader.ResourceInst ri = (StatArchiveReader.ResourceInst) resources.get(0);
- assertNotNull(ri);
- final String statsName = ri.getName();
- assertNotNull(statsName);
- assertEquals("st1_1", statsName);
- assertEquals("ST1", ri.getType().getName());
-
- final StatValue[] statValues = ri.getStatValues();
- assertNotNull(statValues);
- assertEquals(1, statValues.length);
-
- final String statName = ri.getType().getStats()[0].getName();
- assertNotNull(statName);
- assertEquals("long_gauge_1", statName);
- assertEquals(statName, statValues[0].getDescriptor().getName());
- assertEquals(1, statValues[0].getSnapshotsSize());
- assertEquals(5.0, statValues[0].getSnapshotsMostRecent(), 0.01);
-
- final long[] timeStampsMillis = statValues[0].getRawAbsoluteTimeStamps();
- assertNotNull(timeStampsMillis);
- assertEquals(1, timeStampsMillis.length);
-
- final long initialPreviousTimeStampMillis = NanoTimer.nanosToMillis(TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS);
- final long timeStampMillis = NanoTimer.nanosToMillis(sampleTimeNanos);
- final long deltaMillis = timeStampMillis - initialPreviousTimeStampMillis;
- assertEquals(2, deltaMillis);
-
- final long expectedTimeStampMillis = deltaMillis + TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS;
- assertEquals(expectedTimeStampMillis, timeStampsMillis[0]);
-
- final double[] snapshots = statValues[0].getRawSnapshots();
- assertNotNull(snapshots);
- assertEquals(1, snapshots.length);
- assertEquals(5.0, snapshots[0], 0.01);
- }
-
- @Test
- public void testLongCounterTwoSamples() throws Exception {
- final String testName = "testLongCounterTwoSamples";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final InternalLogWriter log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
- final TestStatisticsManager manager = new TestStatisticsManager(
- 1,
- "StatArchiveWriterReaderJUnitTest_" + testName,
- TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS);
-
- final TestStatisticsSampler sampler = new TestStatisticsSampler(manager);
- final SampleCollector sampleCollector = new SampleCollector(sampler);
-
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
- sampleCollector.addSampleHandler(writer);
-
- final StatisticDescriptor[] statsST1 = new StatisticDescriptor[] {
- manager.createLongCounter("long_counter_1", "d1", "u1")
- };
-
- final StatisticsType ST1 = manager.createType("ST1", "ST1", statsST1);
- final Statistics st1_1 = manager.createAtomicStatistics(ST1, "st1_1", 1);
- final long value1 = 5;
- incLong(st1_1, "long_counter_1", value1);
-
- final long sampleIncNanos = StatArchiveFormat.NANOS_PER_MILLI*1000;
- long sampleTimeNanos = TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS + sampleIncNanos;
- sampleCollector.sample(sampleTimeNanos);
-
- final long value2 = 15;
- incLong(st1_1, "long_counter_1", value2);
- sampleTimeNanos += sampleIncNanos;
- sampleCollector.sample(sampleTimeNanos);
-
- writer.close();
-
- final StatisticDescriptor[] sds = ST1.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- assertEquals(value1 + value2, st1_1.get(sds[i].getName()));
- }
-
- final StatArchiveReader reader = new StatArchiveReader(
- new File[]{new File(archiveFileName)}, null, false);
-
- // compare all resourceInst values against what was printed above
-
- @SuppressWarnings("rawtypes")
- final List resources = reader.getResourceInstList();
- assertNotNull(resources);
- assertEquals(1, resources.size());
-
- final StatArchiveReader.ResourceInst ri = (StatArchiveReader.ResourceInst) resources.get(0);
- assertNotNull(ri);
- final String statsName = ri.getName();
- assertNotNull(statsName);
- assertEquals("st1_1", statsName);
- assertEquals("ST1", ri.getType().getName());
-
- final StatValue[] statValues = ri.getStatValues();
- assertNotNull(statValues);
- assertEquals(1, statValues.length);
-
- statValues[0].setFilter(StatValue.FILTER_NONE);
-
- final String statName = ri.getType().getStats()[0].getName();
- assertNotNull(statName);
- assertEquals("long_counter_1", statName);
- assertEquals(statName, statValues[0].getDescriptor().getName());
- assertEquals(2, statValues[0].getSnapshotsSize());
- assertEquals((double)(value1+value2), statValues[0].getSnapshotsMostRecent(), 0.01);
-
- final long[] timeStampsMillis = statValues[0].getRawAbsoluteTimeStamps();
- assertNotNull(timeStampsMillis);
- assertEquals(2, timeStampsMillis.length);
-
- final long initialPreviousTimeStampMillis = NanoTimer.nanosToMillis(TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS);
- final long timeStampMillis = NanoTimer.nanosToMillis(sampleTimeNanos);
- final long deltaMillis = timeStampMillis - initialPreviousTimeStampMillis;
- assertEquals(NanoTimer.nanosToMillis(sampleIncNanos*2), deltaMillis);
-
- long expectedTimeStampMillis = TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS;
- for (int i = 0; i < timeStampsMillis.length; i++) {
- expectedTimeStampMillis += 1000;
- assertEquals("expectedTimeStampMillis for " + i + " is wrong",
- expectedTimeStampMillis, timeStampsMillis[i]);
- }
-
- final double[] snapshots = statValues[0].getRawSnapshots();
- assertNotNull(snapshots);
- assertEquals(2, snapshots.length);
- assertEquals((double)value1, snapshots[0], 0.01);
- assertEquals((double)(value1+value2), snapshots[1], 0.01);
- }
-
- /**
- * Tests the stat archive file written by StatArchiveWriter.
- */
- @SuppressWarnings("unused")
- @Test
- public void testWriteAfterSamplingBegins() throws Exception {
- final String testName = "testWriteAfterSamplingBegins";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final InternalLogWriter log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
- final TestStatisticsManager manager = new TestStatisticsManager(
- 1,
- "StatArchiveWriterReaderJUnitTest_" + testName,
- TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS);
-
- final TestStatisticsSampler sampler = new TestStatisticsSampler(manager);
- final SampleCollector sampleCollector = new SampleCollector(sampler);
-
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS - 2000)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
- sampleCollector.addSampleHandler(writer);
-
- long sampleTimeNanos = TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS + StatArchiveFormat.NANOS_PER_MILLI*1000;
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 1) create ST1 and st1_1
-
- final StatisticDescriptor[] statsST1 = new StatisticDescriptor[] {
- manager.createDoubleCounter("double_counter_1", "d1", "u1"),
- manager.createDoubleCounter("double_counter_2", "d2", "u2", true),
- manager.createDoubleGauge( "double_gauge_3", "d3", "u3"),
- manager.createDoubleGauge( "double_gauge_4", "d4", "u4", false),
- manager.createIntCounter( "int_counter_5", "d5", "u5"),
- manager.createIntCounter( "int_counter_6", "d6", "u6", true),
- manager.createIntGauge( "int_gauge_7", "d7", "u7"),
- manager.createIntGauge( "int_gauge_8", "d8", "u8", false),
- manager.createLongCounter( "long_counter_9", "d9", "u9"),
- manager.createLongCounter( "long_counter_10", "d10", "u10", true),
- manager.createLongGauge( "long_gauge_11", "d11", "u11"),
- manager.createLongGauge( "long_gauge_12", "d12", "u12", false)
- };
- final StatisticsType ST1 = manager.createType("ST1", "ST1", statsST1);
- final Statistics st1_1 = manager.createAtomicStatistics(ST1, "st1_1", 1);
-
- // 2) create st1_2
-
- final Statistics st1_2 = manager.createAtomicStatistics(ST1, "st1_2", 2);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 3) some new values
-
- incDouble(st1_1, "double_counter_1", 18347.94880);
- incDouble(st1_1, "double_gauge_4", 24885.02346);
- incInt(st1_1, "int_counter_5", 3);
- incInt(st1_1, "int_gauge_8", 4);
- incLong(st1_1, "long_counter_9", 1073741824);
- incLong(st1_1, "long_gauge_12", 154367897);
-
- incDouble(st1_2, "double_counter_2", 346.95);
- incDouble(st1_2, "double_gauge_3", 9865.23008);
- incInt(st1_2, "int_counter_6", 4);
- incInt(st1_2, "int_gauge_7", 3);
- incLong(st1_2, "long_counter_10", 3497536);
- incLong(st1_2, "long_gauge_11", 103909646);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 4) all new values
-
- incDouble(st1_1, "double_counter_1", 1.098367);
- incDouble(st1_1, "double_counter_2", 50247.0983254);
- incDouble(st1_1, "double_gauge_3", 987654.2344);
- incDouble(st1_1, "double_gauge_4", 23.097);
- incInt(st1_1, "int_counter_5", 3);
- incInt(st1_1, "int_counter_6", 4);
- incInt(st1_1, "int_gauge_7", 3);
- incInt(st1_1, "int_gauge_8", 4);
- incLong(st1_1, "long_counter_9", 5);
- incLong(st1_1, "long_counter_10", 465793);
- incLong(st1_1, "long_gauge_11", -203050);
- incLong(st1_1, "long_gauge_12", 6);
-
- incDouble(st1_2, "double_counter_1", 0.000846643);
- incDouble(st1_2, "double_counter_2", 4.0);
- incDouble(st1_2, "double_gauge_3", -4.0);
- incDouble(st1_2, "double_gauge_4", 19276.0346624);
- incInt(st1_2, "int_counter_5", 1);
- incInt(st1_2, "int_counter_6", 2);
- incInt(st1_2, "int_gauge_7", -1);
- incInt(st1_2, "int_gauge_8", -2);
- incLong(st1_2, "long_counter_9", 309876);
- incLong(st1_2, "long_counter_10", 4);
- incLong(st1_2, "long_gauge_11", -4);
- incLong(st1_2, "long_gauge_12", 1098764);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 5) no new values
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 6) some new values
-
- incDouble(st1_1, "double_counter_2", 10.255);
- incDouble(st1_1, "double_gauge_3", -4123.05);
- incInt(st1_1, "int_counter_6", 2);
- incInt(st1_1, "int_gauge_7", 3);
- incLong(st1_1, "long_counter_10", 4);
- incLong(st1_1, "long_gauge_11", -2);
-
- incDouble(st1_2, "double_counter_1", 5.00007634);
- incDouble(st1_2, "double_gauge_4", 16904.06524);
- incInt(st1_2, "int_counter_5", 4);
- incInt(st1_2, "int_gauge_8", 1);
- incLong(st1_2, "long_counter_9", 8);
- incLong(st1_2, "long_gauge_12", 10);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 7) all new values
-
- incDouble(st1_1, "double_counter_1", 4065.340);
- incDouble(st1_1, "double_counter_2", 2.01342568);
- incDouble(st1_1, "double_gauge_3", 1.367890);
- incDouble(st1_1, "double_gauge_4", 8.0549003);
- incInt(st1_1, "int_counter_5", 2);
- incInt(st1_1, "int_counter_6", 9);
- incInt(st1_1, "int_gauge_7", 1);
- incInt(st1_1, "int_gauge_8", 2);
- incLong(st1_1, "long_counter_9", 6);
- incLong(st1_1, "long_counter_10", 2);
- incLong(st1_1, "long_gauge_11", -10);
- incLong(st1_1, "long_gauge_12", 8);
-
- incDouble(st1_2, "double_counter_1", 128.2450);
- incDouble(st1_2, "double_counter_2", 113.550);
- incDouble(st1_2, "double_gauge_3", 21.0676);
- incDouble(st1_2, "double_gauge_4", 2.01346);
- incInt(st1_2, "int_counter_5", 3);
- incInt(st1_2, "int_counter_6", 4);
- incInt(st1_2, "int_gauge_7", 4);
- incInt(st1_2, "int_gauge_8", 2);
- incLong(st1_2, "long_counter_9", 1);
- incLong(st1_2, "long_counter_10", 2);
- incLong(st1_2, "long_gauge_11", 3);
- incLong(st1_2, "long_gauge_12", -2);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 8) create ST2 and ST3 and st2_1 and st3_1 and st3_2
-
- final StatisticDescriptor[] statsST2 = new StatisticDescriptor[] {
- manager.createIntGauge( "int_gauge_7", "d7", "u7"),
- manager.createIntGauge( "int_gauge_8", "d8", "u8", false),
- manager.createLongCounter( "long_counter_9", "d9", "u9"),
- manager.createLongCounter( "long_counter_10", "d10", "u10", true),
- manager.createLongGauge( "long_gauge_11", "d11", "u11"),
- manager.createLongGauge( "long_gauge_12", "d12", "u12", false)
- };
- final StatisticsType ST2 = manager.createType("ST2", "ST2", statsST2);
- final Statistics st2_1 = manager.createAtomicStatistics(ST2, "st2_1", 1);
-
- final StatisticDescriptor[] statsST3 = new StatisticDescriptor[] {
- manager.createDoubleCounter("double_counter_1", "d1", "u1"),
- manager.createDoubleCounter("double_counter_2", "d2", "u2", true),
- manager.createDoubleGauge( "double_gauge_3", "d3", "u3"),
- manager.createDoubleGauge( "double_gauge_4", "d4", "u4", false),
- manager.createIntCounter( "int_counter_5", "d5", "u5"),
- manager.createIntCounter( "int_counter_6", "d6", "u6", true),
- };
- final StatisticsType ST3 = manager.createType("ST3", "ST3", statsST3);
- final Statistics st3_1 = manager.createAtomicStatistics(ST3, "st3_1", 1);
- final Statistics st3_2 = manager.createAtomicStatistics(ST3, "st3_2", 2);
-
- // 9) all new values
-
- incDouble(st1_1, "double_counter_1", 9499.10);
- incDouble(st1_1, "double_counter_2", 83.0);
- incDouble(st1_1, "double_gauge_3", -7.05678);
- incDouble(st1_1, "double_gauge_4", 5111.031);
- incInt(st1_1, "int_counter_5", 1);
- incInt(st1_1, "int_counter_6", 3);
- incInt(st1_1, "int_gauge_7", 9);
- incInt(st1_1, "int_gauge_8", -3);
- incLong(st1_1, "long_counter_9", 3);
- incLong(st1_1, "long_counter_10", 8);
- incLong(st1_1, "long_gauge_11", 5);
- incLong(st1_1, "long_gauge_12", 4);
-
- incDouble(st1_2, "double_counter_1", 2509.0235);
- incDouble(st1_2, "double_counter_2", 409.10063);
- incDouble(st1_2, "double_gauge_3", -42.66904);
- incDouble(st1_2, "double_gauge_4", 21.0098);
- incInt(st1_2, "int_counter_5", 8);
- incInt(st1_2, "int_counter_6", 9);
- incInt(st1_2, "int_gauge_7", -2);
- incInt(st1_2, "int_gauge_8", 6);
- incLong(st1_2, "long_counter_9", 4);
- incLong(st1_2, "long_counter_10", 5);
- incLong(st1_2, "long_gauge_11", 5);
- incLong(st1_2, "long_gauge_12", -1);
-
- incInt(st2_1, "int_gauge_7", 2);
- incInt(st2_1, "int_gauge_8", -1);
- incLong(st2_1, "long_counter_9", 1002948);
- incLong(st2_1, "long_counter_10", 29038856);
- incLong(st2_1, "long_gauge_11", -2947465);
- incLong(st2_1, "long_gauge_12", 4934745);
-
- incDouble(st3_1, "double_counter_1", 562.0458);
- incDouble(st3_1, "double_counter_2", 14.0086);
- incDouble(st3_1, "double_gauge_3", -2.0);
- incDouble(st3_1, "double_gauge_4", 1.0);
- incInt(st3_1, "int_counter_5", 2);
- incInt(st3_1, "int_counter_6", 1);
-
- incDouble(st3_2, "double_counter_1", 33.087);
- incDouble(st3_2, "double_counter_2", 2.02);
- incDouble(st3_2, "double_gauge_3", 1.06);
- incDouble(st3_2, "double_gauge_4", 3.021);
- incInt(st3_2, "int_counter_5", 1);
- incInt(st3_2, "int_counter_6", 4);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 10) some new values
-
- incDouble(st1_1, "double_counter_1", 3.014);
- incDouble(st1_1, "double_gauge_3", 57.003);
- incInt(st1_1, "int_counter_5", 3);
- incInt(st1_1, "int_gauge_7", 5);
- incLong(st1_1, "long_counter_9", 1);
- incLong(st1_1, "long_gauge_11", 1);
-
- incDouble(st1_2, "double_counter_2", 20.107);
- incDouble(st1_2, "double_gauge_4", 1.5078);
- incInt(st1_2, "int_counter_6", 1);
- incInt(st1_2, "int_gauge_8", -1);
- incLong(st1_2, "long_counter_10", 1073741824);
- incLong(st1_2, "long_gauge_12", 5);
-
- incInt(st2_1, "int_gauge_7", 2);
- incLong(st2_1, "long_counter_9", 2);
- incLong(st2_1, "long_gauge_11", -2);
-
- incDouble(st3_1, "double_counter_1", 24.80097);
- incDouble(st3_1, "double_gauge_3", -22.09834);
- incInt(st3_1, "int_counter_5", 2);
-
- incDouble(st3_2, "double_counter_2", 21.0483);
- incDouble(st3_2, "double_gauge_4", 36310.012);
- incInt(st3_2, "int_counter_6", 4);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 11) remove ST2 and st2_1
-
- manager.destroyStatistics(st2_1);
-
- // 12) some new values
-
- incDouble(st1_1, "double_counter_1", 339.0803);
- incDouble(st1_1, "double_counter_2", 21.06);
- incDouble(st1_1, "double_gauge_3", 12.056);
- incDouble(st1_1, "double_gauge_4", 27.108);
- incInt(st1_1, "int_counter_5", 2);
- incInt(st1_1, "int_counter_6", 4);
-
- incInt(st1_2, "int_gauge_7", 4);
- incInt(st1_2, "int_gauge_8", 7);
- incLong(st1_2, "long_counter_9", 8);
- incLong(st1_2, "long_counter_10", 4);
- incLong(st1_2, "long_gauge_11", 2);
- incLong(st1_2, "long_gauge_12", 1);
-
- incDouble(st3_1, "double_counter_1", 41.103);
- incDouble(st3_1, "double_counter_2", 2.0333);
- incDouble(st3_1, "double_gauge_3", -14.0);
-
- incDouble(st3_2, "double_gauge_4", 26.01);
- incInt(st3_2, "int_counter_5", 3);
- incInt(st3_2, "int_counter_6", 1);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 13) no new values
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 14) remove st1_2
-
- manager.destroyStatistics(st1_2);
-
- // 15) all new values
-
- incDouble(st1_1, "double_counter_1", 62.1350);
- incDouble(st1_1, "double_counter_2", 33.306);
- incDouble(st1_1, "double_gauge_3", 41.1340);
- incDouble(st1_1, "double_gauge_4", -1.04321);
- incInt(st1_1, "int_counter_5", 2);
- incInt(st1_1, "int_counter_6", 2);
- incInt(st1_1, "int_gauge_7", 1);
- incInt(st1_1, "int_gauge_8", 9);
- incLong(st1_1, "long_counter_9", 2);
- incLong(st1_1, "long_counter_10", 5);
- incLong(st1_1, "long_gauge_11", 3);
- incLong(st1_1, "long_gauge_12", -2);
-
- incDouble(st3_1, "double_counter_1", 3461.0153);
- incDouble(st3_1, "double_counter_2", 5.03167);
- incDouble(st3_1, "double_gauge_3", -1.31051);
- incDouble(st3_1, "double_gauge_4", 71.031);
- incInt(st3_1, "int_counter_5", 4);
- incInt(st3_1, "int_counter_6", 2);
-
- incDouble(st3_2, "double_counter_1", 531.5608);
- incDouble(st3_2, "double_counter_2", 55.0532);
- incDouble(st3_2, "double_gauge_3", 8.40956);
- incDouble(st3_2, "double_gauge_4", 23230.0462);
- incInt(st3_2, "int_counter_5", 9);
- incInt(st3_2, "int_counter_6", 5);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // close the writer
-
- writer.close();
-
- // print out all the stat values
-
- if (false) {
- StatisticDescriptor[]
- sds = ST1.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- log.convertToLogWriter().info("testWriteAfterSamplingBegins#st1_1#"
- + sds[i].getName() + "=" + st1_1.get(sds[i].getName()));
- }
- for (int i = 0; i < sds.length; i++) {
- log.convertToLogWriter().info("testWriteAfterSamplingBegins#st1_2#"
- + sds[i].getName() + "=" + st1_2.get(sds[i].getName()));
- }
-
- sds = ST2.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- log.convertToLogWriter().info("testWriteAfterSamplingBegins#st2_1#"
- + sds[i].getName() + "=" + st2_1.get(sds[i].getName()));
- }
-
- sds = ST3.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- log.convertToLogWriter().info("testWriteAfterSamplingBegins#st3_1#"
- + sds[i].getName() + "=" + st3_1.get(sds[i].getName()));
- }
- for (int i = 0; i < sds.length; i++) {
- log.convertToLogWriter().info("testWriteAfterSamplingBegins#st3_2#"
- + sds[i].getName() + "=" + st3_2.get(sds[i].getName()));
- }
- }
-
- // validate that stat archive file exists
-
- final File actual = new File(archiveFileName);
- assertTrue(actual.exists());
-
- // validate content of stat archive file using StatArchiveReader
-
- final StatArchiveReader reader = new StatArchiveReader(
- new File[]{actual}, null, false);
-
- // compare all resourceInst values against what was printed above
-
- @SuppressWarnings("rawtypes")
- final List resources = reader.getResourceInstList();
- for (@SuppressWarnings("rawtypes")
- final Iterator iter = resources.iterator(); iter.hasNext();) {
- final StatArchiveReader.ResourceInst ri = (StatArchiveReader.ResourceInst) iter.next();
- final String resourceName = ri.getName();
- assertNotNull(resourceName);
-
- final String expectedStatsType = this.statisticTypes.get(resourceName);
- assertNotNull(expectedStatsType);
- assertEquals(expectedStatsType, ri.getType().getName());
-
- final Map<String,Number> expectedStatValues = this.allStatistics.get(resourceName);
- assertNotNull(expectedStatValues);
-
- final StatValue[] statValues = ri.getStatValues();
- for (int i = 0; i < statValues.length; i++) {
- final String statName = ri.getType().getStats()[i].getName();
- assertNotNull(statName);
- assertNotNull(expectedStatValues.get(statName));
-
- assertEquals(statName, statValues[i].getDescriptor().getName());
-
- statValues[i].setFilter(StatValue.FILTER_NONE);
- final double[] rawSnapshots = statValues[i].getRawSnapshots();
- //for (int j = 0; j < rawSnapshots.length; j++) {
- // log.convertToLogWriter().info("DEBUG " + ri.getName() + " " + statName + " rawSnapshots[" + j + "] = " + rawSnapshots[j]);
- //}
- assertEquals("Value " + i + " for " + statName + " is wrong: " + expectedStatValues,
- expectedStatValues.get(statName).doubleValue(),
- statValues[i].getSnapshotsMostRecent(), 0.01);
- }
- }
-
- // validate byte content of stat archive file against saved expected file
-
- final File expected = new File(TestUtil.getResourcePath(getClass(), "StatArchiveWriterReaderJUnitTest_" + testName + "_expected.gfs"));
- assertTrue(expected + " does not exist!", expected.exists());
- assertEquals(expected.length(), actual.length());
-
- assertTrue("Actual stat archive file bytes differ from expected stat archive file bytes!",
- Arrays.equals(readBytes(expected), readBytes(actual)));
- }
-
- /**
- * Tests the stat archive file written by StatArchiveWriter.
- */
- @SuppressWarnings("unused")
- @Test
- public void testWriteWhenSamplingBegins() throws Exception {
- final String testName = "testWriteWhenSamplingBegins";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final InternalLogWriter log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
- final TestStatisticsManager manager = new TestStatisticsManager(
- 1,
- "StatArchiveWriterReaderJUnitTest_" + testName,
- TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS);
-
- final TestStatisticsSampler sampler = new TestStatisticsSampler(manager);
- final SampleCollector sampleCollector = new SampleCollector(sampler);
-
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS - 2000)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
- sampleCollector.addSampleHandler(writer);
-
- long sampleTimeNanos = TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS + StatArchiveFormat.NANOS_PER_MILLI*1000;
-
- // 1) create ST1 and st1_1
-
- final StatisticDescriptor[] statsST1 = new StatisticDescriptor[] {
- manager.createDoubleCounter("double_counter_1", "d1", "u1"),
- manager.createDoubleCounter("double_counter_2", "d2", "u2", true),
- manager.createDoubleGauge( "double_gauge_3", "d3", "u3"),
- manager.createDoubleGauge( "double_gauge_4", "d4", "u4", false),
- manager.createIntCounter( "int_counter_5", "d5", "u5"),
- manager.createIntCounter( "int_counter_6", "d6", "u6", true),
- manager.createIntGauge( "int_gauge_7", "d7", "u7"),
- manager.createIntGauge( "int_gauge_8", "d8", "u8", false),
- manager.createLongCounter( "long_counter_9", "d9", "u9"),
- manager.createLongCounter( "long_counter_10", "d10", "u10", true),
- manager.createLongGauge( "long_gauge_11", "d11", "u11"),
- manager.createLongGauge( "long_gauge_12", "d12", "u12", false)
- };
- final StatisticsType ST1 = manager.createType("ST1", "ST1", statsST1);
- final Statistics st1_1 = manager.createAtomicStatistics(ST1, "st1_1", 1);
-
- // 2) create st1_2
-
- final Statistics st1_2 = manager.createAtomicStatistics(ST1, "st1_2", 2);
-
- // 3) some new values
-
- incDouble(st1_1, "double_counter_1", 18347.94880);
- incDouble(st1_1, "double_gauge_4", 24885.02346);
- incInt(st1_1, "int_counter_5", 3);
- incInt(st1_1, "int_gauge_8", 4);
- incLong(st1_1, "long_counter_9", 1073741824);
- incLong(st1_1, "long_gauge_12", 154367897);
-
- incDouble(st1_2, "double_counter_2", 346.95);
- incDouble(st1_2, "double_gauge_3", 9865.23008);
- incInt(st1_2, "int_counter_6", 4);
- incInt(st1_2, "int_gauge_7", 3);
- incLong(st1_2, "long_counter_10", 3497536);
- incLong(st1_2, "long_gauge_11", 103909646);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 4) all new values
-
- incDouble(st1_1, "double_counter_1", 1.098367);
- incDouble(st1_1, "double_counter_2", 50247.0983254);
- incDouble(st1_1, "double_gauge_3", 987654.2344);
- incDouble(st1_1, "double_gauge_4", 23.097);
- incInt(st1_1, "int_counter_5", 3);
- incInt(st1_1, "int_counter_6", 4);
- incInt(st1_1, "int_gauge_7", 3);
- incInt(st1_1, "int_gauge_8", 4);
- incLong(st1_1, "long_counter_9", 5);
- incLong(st1_1, "long_counter_10", 465793);
- incLong(st1_1, "long_gauge_11", -203050);
- incLong(st1_1, "long_gauge_12", 6);
-
- incDouble(st1_2, "double_counter_1", 0.000846643);
- incDouble(st1_2, "double_counter_2", 4.0);
- incDouble(st1_2, "double_gauge_3", -4.0);
- incDouble(st1_2, "double_gauge_4", 19276.0346624);
- incInt(st1_2, "int_counter_5", 1);
- incInt(st1_2, "int_counter_6", 2);
- incInt(st1_2, "int_gauge_7", -1);
- incInt(st1_2, "int_gauge_8", -2);
- incLong(st1_2, "long_counter_9", 309876);
- incLong(st1_2, "long_counter_10", 4);
- incLong(st1_2, "long_gauge_11", -4);
- incLong(st1_2, "long_gauge_12", 1098764);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 5) no new values
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 6) some new values
-
- incDouble(st1_1, "double_counter_2", 10.255);
- incDouble(st1_1, "double_gauge_3", -4123.05);
- incInt(st1_1, "int_counter_6", 2);
- incInt(st1_1, "int_gauge_7", 3);
- incLong(st1_1, "long_counter_10", 4);
- incLong(st1_1, "long_gauge_11", -2);
-
- incDouble(st1_2, "double_counter_1", 5.00007634);
- incDouble(st1_2, "double_gauge_4", 16904.06524);
- incInt(st1_2, "int_counter_5", 4);
- incInt(st1_2, "int_gauge_8", 1);
- incLong(st1_2, "long_counter_9", 8);
- incLong(st1_2, "long_gauge_12", 10);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 7) all new values
-
- incDouble(st1_1, "double_counter_1", 4065.340);
- incDouble(st1_1, "double_counter_2", 2.01342568);
- incDouble(st1_1, "double_gauge_3", 1.367890);
- incDouble(st1_1, "double_gauge_4", 8.0549003);
- incInt(st1_1, "int_counter_5", 2);
- incInt(st1_1, "int_counter_6", 9);
- incInt(st1_1, "int_gauge_7", 1);
- incInt(st1_1, "int_gauge_8", 2);
- incLong(st1_1, "long_counter_9", 6);
- incLong(st1_1, "long_counter_10", 2);
- incLong(st1_1, "long_gauge_11", -10);
- incLong(st1_1, "long_gauge_12", 8);
-
- incDouble(st1_2, "double_counter_1", 128.2450);
- incDouble(st1_2, "double_counter_2", 113.550);
- incDouble(st1_2, "double_gauge_3", 21.0676);
- incDouble(st1_2, "double_gauge_4", 2.01346);
- incInt(st1_2, "int_counter_5", 3);
- incInt(st1_2, "int_counter_6", 4);
- incInt(st1_2, "int_gauge_7", 4);
- incInt(st1_2, "int_gauge_8", 2);
- incLong(st1_2, "long_counter_9", 1);
- incLong(st1_2, "long_counter_10", 2);
- incLong(st1_2, "long_gauge_11", 3);
- incLong(st1_2, "long_gauge_12", -2);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 8) create ST2 and ST3 and st2_1 and st3_1 and st3_2
-
- final StatisticDescriptor[] statsST2 = new StatisticDescriptor[] {
- manager.createIntGauge( "int_gauge_7", "d7", "u7"),
- manager.createIntGauge( "int_gauge_8", "d8", "u8", false),
- manager.createLongCounter( "long_counter_9", "d9", "u9"),
- manager.createLongCounter( "long_counter_10", "d10", "u10", true),
- manager.createLongGauge( "long_gauge_11", "d11", "u11"),
- manager.createLongGauge( "long_gauge_12", "d12", "u12", false)
- };
- final StatisticsType ST2 = manager.createType("ST2", "ST2", statsST2);
- final Statistics st2_1 = manager.createAtomicStatistics(ST2, "st2_1", 1);
-
- final StatisticDescriptor[] statsST3 = new StatisticDescriptor[] {
- manager.createDoubleCounter("double_counter_1", "d1", "u1"),
- manager.createDoubleCounter("double_counter_2", "d2", "u2", true),
- manager.createDoubleGauge( "double_gauge_3", "d3", "u3"),
- manager.createDoubleGauge( "double_gauge_4", "d4", "u4", false),
- manager.createIntCounter( "int_counter_5", "d5", "u5"),
- manager.createIntCounter( "int_counter_6", "d6", "u6", true),
- };
- final StatisticsType ST3 = manager.createType("ST3", "ST3", statsST3);
- final Statistics st3_1 = manager.createAtomicStatistics(ST3, "st3_1", 1);
- final Statistics st3_2 = manager.createAtomicStatistics(ST3, "st3_2", 2);
-
- // 9) all new values
-
- incDouble(st1_1, "double_counter_1", 9499.10);
- incDouble(st1_1, "double_counter_2", 83.0);
- incDouble(st1_1, "double_gauge_3", -7.05678);
- incDouble(st1_1, "double_gauge_4", 5111.031);
- incInt(st1_1, "int_counter_5", 1);
- incInt(st1_1, "int_counter_6", 3);
- incInt(st1_1, "int_gauge_7", 9);
- incInt(st1_1, "int_gauge_8", -3);
- incLong(st1_1, "long_counter_9", 3);
- incLong(st1_1, "long_counter_10", 8);
- incLong(st1_1, "long_gauge_11", 5);
- incLong(st1_1, "long_gauge_12", 4);
-
- incDouble(st1_2, "double_counter_1", 2509.0235);
- incDouble(st1_2, "double_counter_2", 409.10063);
- incDouble(st1_2, "double_gauge_3", -42.66904);
- incDouble(st1_2, "double_gauge_4", 21.0098);
- incInt(st1_2, "int_counter_5", 8);
- incInt(st1_2, "int_counter_6", 9);
- incInt(st1_2, "int_gauge_7", -2);
- incInt(st1_2, "int_gauge_8", 6);
- incLong(st1_2, "long_counter_9", 4);
- incLong(st1_2, "long_counter_10", 5);
- incLong(st1_2, "long_gauge_11", 5);
- incLong(st1_2, "long_gauge_12", -1);
-
- incInt(st2_1, "int_gauge_7", 2);
- incInt(st2_1, "int_gauge_8", -1);
- incLong(st2_1, "long_counter_9", 1002948);
- incLong(st2_1, "long_counter_10", 29038856);
- incLong(st2_1, "long_gauge_11", -2947465);
- incLong(st2_1, "long_gauge_12", 4934745);
-
- incDouble(st3_1, "double_counter_1", 562.0458);
- incDouble(st3_1, "double_counter_2", 14.0086);
- incDouble(st3_1, "double_gauge_3", -2.0);
- incDouble(st3_1, "double_gauge_4", 1.0);
- incInt(st3_1, "int_counter_5", 2);
- incInt(st3_1, "int_counter_6", 1);
-
- incDouble(st3_2, "double_counter_1", 33.087);
- incDouble(st3_2, "double_counter_2", 2.02);
- incDouble(st3_2, "double_gauge_3", 1.06);
- incDouble(st3_2, "double_gauge_4", 3.021);
- incInt(st3_2, "int_counter_5", 1);
- incInt(st3_2, "int_counter_6", 4);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 10) some new values
-
- incDouble(st1_1, "double_counter_1", 3.014);
- incDouble(st1_1, "double_gauge_3", 57.003);
- incInt(st1_1, "int_counter_5", 3);
- incInt(st1_1, "int_gauge_7", 5);
- incLong(st1_1, "long_counter_9", 1);
- incLong(st1_1, "long_gauge_11", 1);
-
- incDouble(st1_2, "double_counter_2", 20.107);
- incDouble(st1_2, "double_gauge_4", 1.5078);
- incInt(st1_2, "int_counter_6", 1);
- incInt(st1_2, "int_gauge_8", -1);
- incLong(st1_2, "long_counter_10", 1073741824);
- incLong(st1_2, "long_gauge_12", 5);
-
- incInt(st2_1, "int_gauge_7", 2);
- incLong(st2_1, "long_counter_9", 2);
- incLong(st2_1, "long_gauge_11", -2);
-
- incDouble(st3_1, "double_counter_1", 24.80097);
- incDouble(st3_1, "double_gauge_3", -22.09834);
- incInt(st3_1, "int_counter_5", 2);
-
- incDouble(st3_2, "double_counter_2", 21.0483);
- incDouble(st3_2, "double_gauge_4", 36310.012);
- incInt(st3_2, "int_counter_6", 4);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 11) remove ST2 and st2_1
-
- manager.destroyStatistics(st2_1);
-
- // 12) some new values
-
- incDouble(st1_1, "double_counter_1", 339.0803);
- incDouble(st1_1, "double_counter_2", 21.06);
- incDouble(st1_1, "double_gauge_3", 12.056);
- incDouble(st1_1, "double_gauge_4", 27.108);
- incInt(st1_1, "int_counter_5", 2);
- incInt(st1_1, "int_counter_6", 4);
-
- incInt(st1_2, "int_gauge_7", 4);
- incInt(st1_2, "int_gauge_8", 7);
- incLong(st1_2, "long_counter_9", 8);
- incLong(st1_2, "long_counter_10", 4);
- incLong(st1_2, "long_gauge_11", 2);
- incLong(st1_2, "long_gauge_12", 1);
-
- incDouble(st3_1, "double_counter_1", 41.103);
- incDouble(st3_1, "double_counter_2", 2.0333);
- incDouble(st3_1, "double_gauge_3", -14.0);
-
- incDouble(st3_2, "double_gauge_4", 26.01);
- incInt(st3_2, "int_counter_5", 3);
- incInt(st3_2, "int_counter_6", 1);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 13) no new values
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // 14) remove st1_2
-
- manager.destroyStatistics(st1_2);
-
- // 15) all new values
-
- incDouble(st1_1, "double_counter_1", 62.1350);
- incDouble(st1_1, "double_counter_2", 33.306);
- incDouble(st1_1, "double_gauge_3", 41.1340);
- incDouble(st1_1, "double_gauge_4", -1.04321);
- incInt(st1_1, "int_counter_5", 2);
- incInt(st1_1, "int_counter_6", 2);
- incInt(st1_1, "int_gauge_7", 1);
- incInt(st1_1, "int_gauge_8", 9);
- incLong(st1_1, "long_counter_9", 2);
- incLong(st1_1, "long_counter_10", 5);
- incLong(st1_1, "long_gauge_11", 3);
- incLong(st1_1, "long_gauge_12", -2);
-
- incDouble(st3_1, "double_counter_1", 3461.0153);
- incDouble(st3_1, "double_counter_2", 5.03167);
- incDouble(st3_1, "double_gauge_3", -1.31051);
- incDouble(st3_1, "double_gauge_4", 71.031);
- incInt(st3_1, "int_counter_5", 4);
- incInt(st3_1, "int_counter_6", 2);
-
- incDouble(st3_2, "double_counter_1", 531.5608);
- incDouble(st3_2, "double_counter_2", 55.0532);
- incDouble(st3_2, "double_gauge_3", 8.40956);
- incDouble(st3_2, "double_gauge_4", 23230.0462);
- incInt(st3_2, "int_counter_5", 9);
- incInt(st3_2, "int_counter_6", 5);
-
- sampleCollector.sample(sampleTimeNanos+=(1000*StatArchiveFormat.NANOS_PER_MILLI));
-
- // close the writer
-
- writer.close();
-
- // print out all the stat values
-
- if (false) {
- StatisticDescriptor[]
- sds = ST1.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- log.convertToLogWriter().info("testWriteAfterSamplingBegins#st1_1#"
- + sds[i].getName() + "=" + st1_1.get(sds[i].getName()));
- }
- for (int i = 0; i < sds.length; i++) {
- log.convertToLogWriter().info("testWriteAfterSamplingBegins#st1_2#"
- + sds[i].getName() + "=" + st1_2.get(sds[i].getName()));
- }
-
- sds = ST2.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- log.convertToLogWriter().info("testWriteAfterSamplingBegins#st2_1#"
- + sds[i].getName() + "=" + st2_1.get(sds[i].getName()));
- }
-
- sds = ST3.getStatistics();
- for (int i = 0; i < sds.length; i++) {
- log.convertToLogWriter().info("testWriteAfterSamplingBegins#st3_1#"
- + sds[i].getName() + "=" + st3_1.get(sds[i].getName()));
- }
- for (int i = 0; i < sds.length; i++) {
- log.convertToLogWriter().info("testWriteAfterSamplingBegins#st3_2#"
- + sds[i].getName() + "=" + st3_2.get(sds[i].getName()));
- }
- }
-
- // validate that stat archive file exists
-
- final File actual = new File(archiveFileName);
- assertTrue(actual.exists());
-
- // validate content of stat archive file using StatArchiveReader
-
- final StatArchiveReader reader = new StatArchiveReader(
- new File[]{actual}, null, false);
-
- // compare all resourceInst values against what was printed above
-
- @SuppressWarnings("rawtypes")
- final List resources = reader.getResourceInstList();
- for (@SuppressWarnings("rawtypes")
- final Iterator iter = resources.iterator(); iter.hasNext();) {
- final StatArchiveReader.ResourceInst ri = (StatArchiveReader.ResourceInst) iter.next();
- final String resourceName = ri.getName();
- assertNotNull(resourceName);
-
- final String expectedStatsType = this.statisticTypes.get(resourceName);
- assertNotNull(expectedStatsType);
- assertEquals(expectedStatsType, ri.getType().getName());
-
- final Map<String,Number> expectedStatValues = this.allStatistics.get(resourceName);
- assertNotNull(expectedStatValues);
-
- final StatValue[] statValues = ri.getStatValues();
- for (int i = 0; i < statValues.length; i++) {
- final String statName = ri.getType().getStats()[i].getName();
- assertNotNull(statName);
- assertNotNull(expectedStatValues.get(statName));
-
- assertEquals(statName, statValues[i].getDescriptor().getName());
-
- statValues[i].setFilter(StatValue.FILTER_NONE);
- final double[] rawSnapshots = statValues[i].getRawSnapshots();
- //for (int j = 0; j < rawSnapshots.length; j++) {
- // log.convertToLogWriter().info("DEBUG " + ri.getName() + " " + statName + " rawSnapshots[" + j + "] = " + rawSnapshots[j]);
- //}
- assertEquals("Value " + i + " for " + statName + " is wrong: " + expectedStatValues,
- expectedStatValues.get(statName).doubleValue(),
- statValues[i].getSnapshotsMostRecent(), 0.01);
- }
- }
-
- // validate byte content of stat archive file against saved expected file
-
- final File expected = new File(TestUtil.getResourcePath(getClass(), "StatArchiveWriterReaderJUnitTest_" + testName + "_expected.gfs"));
- assertTrue(expected + " does not exist!", expected.exists());
- assertEquals(expected.length(), actual.length());
-
- assertTrue("Actual stat archive file bytes differ from expected stat archive file bytes!",
- Arrays.equals(readBytes(expected), readBytes(actual)));
- }
-
- /**
- * Validates that IllegalArgumentException is thrown if sample time stamp is
- * before the previous time stamp. Tests the fix for cause of bug #45268.
- */
- @Test
- public void testNegativeSampleTimeStamp() throws Exception {
- final String testName = "testNegativeSampleTimeStamp";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final LogWriterI18n log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
-
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
-
- final long sampleIncNanos = StatArchiveFormat.NANOS_PER_MILLI*1000;
-
- try {
- writer.sampled(TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS - sampleIncNanos,
- Collections.<ResourceInstance>emptyList());
- fail("Expected IllegalArgumentException to be thrown from StatArchiveWriter#writeTimeStamp(long)");
- } catch (IllegalArgumentException expected) {
- // test passed
- } finally {
- writer.close();
- }
- }
-
- /**
- * Validates that IllegalArgumentException is thrown if sample time stamp is
- * same as the previous time stamp. Tests the fix for cause of bug #45268.
- */
- @Test
- public void testPreviousSampleTimeStamp() throws Exception {
- final String testName = "testPreviousSampleTimeStamp";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final LogWriterI18n log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
-
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
-
- try {
- writer.sampled(TestStatArchiveWriter.WRITER_PREVIOUS_TIMESTAMP_NANOS,
- Collections.<ResourceInstance>emptyList());
- fail("Expected IllegalArgumentException to be thrown from StatArchiveWriter#writeTimeStamp(long)");
- } catch (IllegalArgumentException expected) {
- // test passed
- } finally {
- writer.close();
- }
-
- writer.close();
- }
-
- /**
- * Verifies fix for bug #45377.
- */
- @Test
- public void testDestroyClosedStatistics() throws Exception {
- final String testName = "testDestroyClosedStatistics";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final LogWriterI18n log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS - 2000)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
-
- final StatisticsType statsType = createDummyStatisticsType();
- final ResourceType rt = new ResourceType(0, statsType);
- final Statistics statistics = mock(Statistics.class);
- when(statistics.isClosed()).thenReturn(true);
- final ResourceInstance ri = new ResourceInstance(0, statistics, rt);
-
- // if bug #45377 still existed, this call would throw IllegalStateException
- writer.destroyedResourceInstance(ri);
- }
-
- /**
- * Control which helps verify fix for bug #45377.
- */
- @Test
- public void testDestroyUnallocatedStatistics() throws Exception {
- final String testName = "testDestroyUnallocatedStatistics";
- final String archiveFileName = dir + File.separator + testName + ".gfs";
-
- final LogWriterI18n log = new PureLogWriter(InternalLogWriter.CONFIG_LEVEL);
- final StatArchiveDescriptor archiveDescriptor = new StatArchiveDescriptor.Builder()
- .setArchiveName(archiveFileName)
- .setSystemId(1)
- .setSystemStartTime(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS - 2000)
- .setSystemDirectoryPath(testName)
- .setProductDescription("StatArchiveWriterReaderJUnitTest")
- .build();
- final StatArchiveWriter writer = new TestStatArchiveWriter(archiveDescriptor, log);
-
- final StatisticsType statsType = createDummyStatisticsType();
- final ResourceType rt = new ResourceType(0, statsType);
- final Statistics statistics = mock(Statistics.class);
- final ResourceInstance ri = new ResourceInstance(0, statistics, rt);
-
- writer.sampled(TestStatArchiveWriter.WRITER_INITIAL_DATE_MILLIS + 1000,
- Collections.<ResourceInstance>singletonList(ri));
-
- writer.destroyedResourceInstance(ri);
- writer.close();
-
- // Verify StatArchiveRader.update returns cleanly, without throwing an exception
- final StatArchiveReader reader = new StatArchiveReader(
- new File[]{new File(archiveFileName)}, null, false);
- reader.update();
- reader.close();
- }
-
- private void incDouble(Statistics statistics, String stat, double value) {
- assertFalse(statistics.isClosed());
- Map<String,Number> statValues = this.allStatistics.get(statistics.getTextId());
- if (statValues == null) {
- statValues = new HashMap<String,Number>();
- this.allStatistics.put(statistics.getTextId(), statValues);
- }
- statistics.incDouble(stat, value);
- statValues.put(stat, statistics.getDouble(stat));
- if (this.statisticTypes.get(statistics.getTextId()) == null) {
- this.statisticTypes.put(statistics.getTextId(), statistics.getType().getName());
- }
- }
-
- private void incInt(Statistics statistics, String stat, int value) {
- assertFalse(statistics.isClosed());
- Map<String,Number> statValues = this.allStatistics.get(statistics.getTextId());
- if (statValues == null) {
- statValues = new HashMap<String,Number>();
- this.allStatistics.put(statistics.getTextId(), statValues);
- }
- statistics.incInt(stat, value);
- statValues.put(stat, statistics.getInt(stat));
- if (this.statisticTypes.get(statistics.getTextId()) == null) {
- this.statisticTypes.put(statistics.getTextId(), statistics.getType().getName());
- }
- }
-
- private void incLong(Statistics statistics, String stat, long value) {
- assertFalse(statistics.isClosed());
- Map<String,Number> statValues = this.allStatistics.get(statistics.getTextId());
- if (statValues == null) {
- statValues = new HashMap<String,Number>();
- this.allStatistics.put(statistics.getTextId(), statValues);
- }
- statistics.incLong(stat, value);
- statValues.put(stat, statistics.getLong(stat));
- if (this.statisticTypes.get(statistics.getTextId()) == null) {
- this.statisticTypes.put(statistics.getTextId(), statistics.getType().getName());
- }
- }
-
- private byte[] readBytes(File file) throws MalformedURLException, IOException {
- int byteCount = (int)file.length();
-
- byte[] input = new byte[byteCount];
-
- @SuppressWarnings("deprecation")
- URL url = file.toURL();
- assertNotNull(url);
-
- InputStream is = url.openStream();
- assertNotNull(is);
-
- BufferedInputStream bis = new BufferedInputStream(is);
- int bytesRead = bis.read(input);
- bis.close();
-
- assertEquals(byteCount, bytesRead);
- return input;
- }
-
- private static StatisticsType createDummyStatisticsType() {
- return new StatisticsType() {
-
- @Override
- public String getName() {
- return null;
- }
-
- @Override
- public String getDescription() {
- return null;
- }
-
- @Override
- public StatisticDescriptor[] getStatistics() {
- return new StatisticDescriptor[0];
- }
-
- @Override
- public int nameToId(String name) {
- return 0;
- }
-
- @Override
- public StatisticDescriptor nameToDescriptor(String name) {
- return null;
- }
- };
- }
-
- /* [KEEP] alternative method for getting an expected golden file:
- Class clazz = getClass();
- assertNotNull(clazz);
- URL url = clazz.getResource("StatArchiveWriterReaderJUnitTest.gfs.expected");
- assertNotNull(url);
-
- File expected;
- try {
- expected = new File(url.toURI());
- } catch(URISyntaxException e) {
- expected = new File(url.getPath());
- }
- assertTrue(expected.exists());
- */
-}