public void ExistingDataFilesAreCompactedOnCompactCall() { // Create one bucket at present time so that remaining buckets // being created are out of compaction var timeStamp = DateTime.UtcNow; var bucket = new DataBucket <InternalHitCount>(this.dimensionSet, timeStamp, TimeSpan.TicksPerMinute, this.storagePath, this.properties.MemoryStreamManager); bucket.AddValue(this.dimensions, 5); bucket.Seal(); bucket.Persist(); // Create buckets manually at 1 min and 5 min quantum // but they actually belong at a 10 min once compacted var expectedNewBucketQuantum = customCompaction.Intervals.ElementAt(2).Interval.Ticks; var timeStamp2 = RoundTimeStamp(timeStamp.Subtract(new TimeSpan(2, 20, 0)), expectedNewBucketQuantum); // The buckets will have files written out but not be // part of the dataset until it is created var bucket1 = new DataBucket <InternalHitCount>(this.dimensionSet, timeStamp2, TimeSpan.TicksPerMinute, this.storagePath, this.properties.MemoryStreamManager); bucket1.AddValue(this.dimensions, 5); bucket1.Seal(); bucket1.Persist(); var timeStamp3 = timeStamp2.Add(new TimeSpan(0, 5, 0)); var bucket2 = new DataBucket <InternalHitCount>(this.dimensionSet, timeStamp3, TimeSpan.TicksPerMinute * 5, this.storagePath, this.properties.MemoryStreamManager); bucket2.AddValue(this.dimensions, 2); bucket2.Seal(); bucket2.Persist(); bucket.Dispose(); bucket1.Dispose(); bucket2.Dispose(); this.InitializeDataSet(null); this.dataSet.Compact(); // Verify that a 10 minute compacted bucket was created var newBucket = this.dataSet.GetDataBucket(timeStamp2); Assert.AreEqual(timeStamp2.Ticks, newBucket.StartTicks); Assert.AreEqual(expectedNewBucketQuantum, newBucket.EndTicks - newBucket.StartTicks); var matches = newBucket.GetMatches(this.dimensions).ToList(); Assert.AreEqual(1, matches.Count); var result = matches[0].Data; Assert.AreEqual((ulong)7, result.HitCount); }
public void ExistingDataFilesAreCompactedOnCompactCall() { // Create one bucket at present time so that remaining buckets // being created are out of compaction var timeStamp = DateTime.UtcNow; var bucket = new DataBucket<InternalHitCount>(this.dimensionSet, timeStamp, TimeSpan.TicksPerMinute, this.storagePath, this.properties.MemoryStreamManager); bucket.AddValue(this.dimensions, 5); bucket.Seal(); bucket.Persist(); // Create buckets manually at 1 min and 5 min quantum // but they actually belong at a 10 min once compacted var expectedNewBucketQuantum = customCompaction.Intervals.ElementAt(2).Interval.Ticks; var timeStamp2 = RoundTimeStamp(timeStamp.Subtract(new TimeSpan(2, 20, 0)), expectedNewBucketQuantum); // The buckets will have files written out but not be // part of the dataset until it is created var bucket1 = new DataBucket<InternalHitCount>(this.dimensionSet, timeStamp2, TimeSpan.TicksPerMinute, this.storagePath, this.properties.MemoryStreamManager); bucket1.AddValue(this.dimensions, 5); bucket1.Seal(); bucket1.Persist(); var timeStamp3 = timeStamp2.Add(new TimeSpan(0, 5, 0)); var bucket2 = new DataBucket<InternalHitCount>(this.dimensionSet, timeStamp3, TimeSpan.TicksPerMinute * 5, this.storagePath, this.properties.MemoryStreamManager); bucket2.AddValue(this.dimensions, 2); bucket2.Seal(); bucket2.Persist(); bucket.Dispose(); bucket1.Dispose(); bucket2.Dispose(); this.InitializeDataSet(null); this.dataSet.Compact(); // Verify that a 10 minute compacted bucket was created var newBucket = this.dataSet.GetDataBucket(timeStamp2); Assert.AreEqual(timeStamp2.Ticks, newBucket.StartTicks); Assert.AreEqual(expectedNewBucketQuantum, newBucket.EndTicks - newBucket.StartTicks); var matches = newBucket.GetMatches(this.dimensions).ToList(); Assert.AreEqual(1, matches.Count); var result = matches[0].Data; Assert.AreEqual((ulong)7, result.HitCount); }