示例#1
0
        public void ExportIntervalAndDurationsAreUpdatedInCircularManner()
        {
            var  storageTransmissionEvaluator = new StorageTransmissionEvaluator(SampleSize);
            long timeInMilliseconds           = 2000;
            long exportInterval = 0;

            // Add data points equal to sample size
            for (int i = 0; i < SampleSize; i++)
            {
                exportInterval += 2000;
                storageTransmissionEvaluator.AddExportIntervalToDataSample(exportInterval);
                storageTransmissionEvaluator.AddExportDurationToDataSample(timeInMilliseconds);
            }

            var exportIntervalsInSecondsBefore = typeof(StorageTransmissionEvaluator)
                                                 .GetField("_exportIntervalsInMilliseconds", BindingFlags.Instance | BindingFlags.NonPublic)
                                                 .GetValue(storageTransmissionEvaluator) as long[];

            var exportDurationInSecondsBefore = typeof(StorageTransmissionEvaluator)
                                                .GetField("_exportDurationsInMilliseconds", BindingFlags.Instance | BindingFlags.NonPublic)
                                                .GetValue(storageTransmissionEvaluator) as long[];

            // Add data points equal to sample size
            for (int i = 0; i < SampleSize; i++)
            {
                Assert.Equal(2000, exportIntervalsInSecondsBefore[i]);
                Assert.Equal(2000, exportDurationInSecondsBefore[i]);
            }

            // Add 3 more data points with different time values
            for (int i = 0; i < 3; i++)
            {
                exportInterval += 1000;
                storageTransmissionEvaluator.AddExportIntervalToDataSample(exportInterval);
                storageTransmissionEvaluator.AddExportDurationToDataSample(1000);
            }

            // First 3 elements should be updated
            for (int i = 0; i < 3; i++)
            {
                Assert.Equal(1000, exportIntervalsInSecondsBefore[i]);
                Assert.Equal(1000, exportDurationInSecondsBefore[i]);
            }

            // Last two should remain the same
            for (int i = 3; i < SampleSize; i++)
            {
                Assert.Equal(2000, exportIntervalsInSecondsBefore[i]);
                Assert.Equal(2000, exportDurationInSecondsBefore[i]);
            }

            // Adding samples more than sample szie should not throw any exception
            for (int i = 3; i < 2 * SampleSize; i++)
            {
                storageTransmissionEvaluator.AddExportIntervalToDataSample((i + 1) * timeInMilliseconds);
                storageTransmissionEvaluator.AddExportDurationToDataSample(timeInMilliseconds);
            }
        }
示例#2
0
        internal void StartExporterTimer()
        {
            // Get export start time
            _exportStartTimeInMilliseconds = _stopwatch.ElapsedMilliseconds;

            // Add export time interval to data sample
            _storageTransmissionEvaluator.AddExportIntervalToDataSample(_exportStartTimeInMilliseconds);
        }
示例#3
0
        public void MaxFilesToBeTransmittedIsZeroWhenExportDurationIsGreaterThanExportInterval()
        {
            var storageTransmissionEvaluator = new StorageTransmissionEvaluator(SampleSize);

            for (int i = 0; i < SampleSize; i++)
            {
                storageTransmissionEvaluator.AddExportIntervalToDataSample((i + 1) * 1000);
                storageTransmissionEvaluator.AddExportDurationToDataSample(2000);
            }
            var maxFiles = storageTransmissionEvaluator.GetMaxFilesToTransmitFromStorage();

            Assert.Equal(0, maxFiles);
        }
示例#4
0
        public void MaxFilesToBeTransmittedIsNonZeroWhenExportDurationIsLessThanExportInterval()
        {
            var storageTransmissionEvaluator = new StorageTransmissionEvaluator(SampleSize);

            for (int i = 0; i < SampleSize; i++)
            {
                storageTransmissionEvaluator.AddExportIntervalToDataSample((i + 1) * 3000);
                storageTransmissionEvaluator.AddExportDurationToDataSample(1000);
            }
            var maxFiles = storageTransmissionEvaluator.GetMaxFilesToTransmitFromStorage();

            Assert.True(maxFiles > 0);
        }
示例#5
0
        public void MaxFilesToBeTransmittedIsZeroWhenCurrentBatchExportDurationIsGreaterThanExportInterval()
        {
            var storageTransmissionEvaluator = new StorageTransmissionEvaluator(SampleSize);

            for (int i = 0; i < SampleSize; i++)
            {
                storageTransmissionEvaluator.AddExportIntervalToDataSample((i + 1) * 3000);
                storageTransmissionEvaluator.AddExportDurationToDataSample(1000);
            }

            // Update the currentBatchExportDuration to a greater value
            // than avg export interval.
            typeof(StorageTransmissionEvaluator)
            .GetField("_currentBatchExportDurationInMilliseconds", BindingFlags.Instance | BindingFlags.NonPublic)
            .SetValue(storageTransmissionEvaluator, 10000);
            var maxFiles = storageTransmissionEvaluator.GetMaxFilesToTransmitFromStorage();

            Assert.Equal(0, maxFiles);
        }