public void CanCleanExpiredMetrics() { var files = new List <string>(new[] { "file1.txt", "file2.txt", "file3.txt" }); using (var env = new StorageEnvironment(StorageEnvironmentOptions.CreateMemoryOnly())) { var envWithType = new StorageEnvironmentWithType("test", StorageEnvironmentWithType.StorageEnvironmentType.Documents, env); foreach (var fileName in files) { for (var i = 0; i < 2 * 256; i++) { var now = DateTime.UtcNow.AddHours(-7); var meterIoRate = env.Options.IoMetrics.MeterIoRate(fileName, IoMetrics.MeterType.JournalWrite, i + 1); var durationMeasurement = new IoMeterBuffer.DurationMeasurement(meterIoRate.Parent, IoMetrics.MeterType.JournalWrite, i + 1, 0, null) { Start = now, End = now.AddMilliseconds(2) }; meterIoRate.Parent.Mark(ref durationMeasurement); } } CheckMetricFiles(env, files, checkForNull: false); IEnumerable <StorageEnvironmentWithType> environments = new[] { envWithType }; IoMetricsUtil.CleanIoMetrics(environments, DateTime.UtcNow.Ticks); CheckMetricFiles(env, files, checkForNull: true); } }
public void CanProperlyReportIoMetrics() { var metrics = new IoMetrics(4, 4); for (var i = 0; i < 6; i++) { var now = DateTime.UtcNow; var meterIoRate = metrics.MeterIoRate("file1.txt", IoMetrics.MeterType.JournalWrite, i + 1); var durationMeasurement = new IoMeterBuffer.DurationMeasurement(meterIoRate.Parent, IoMetrics.MeterType.JournalWrite, i + 1, 0, null) { Start = now, End = now.AddMilliseconds(2) }; meterIoRate.Parent.Mark(ref durationMeasurement); } int filesCount = 0; foreach (var file in metrics.Files) { filesCount++; var currentItems = new List <IoMeterBuffer.MeterItem>(file.JournalWrite.GetCurrentItems()); var historyItems = new List <IoMeterBuffer.SummerizedItem>(file.JournalWrite.GetSummerizedItems()); foreach (var currentItem in currentItems) { Assert.InRange(currentItem.Duration.TotalMilliseconds, 0, 2); } Assert.Equal(1, historyItems.Count); Assert.Equal(1, currentItems.Count); Assert.Equal(1 + 2 + 3 + 4 + 5, historyItems[0].TotalSize); Assert.Equal(6L, currentItems[0].Size); } Assert.Equal(1, filesCount); }