示例#1
0
        public Task GetLoadMetricsSingleItem()
        {
            return(this.RunDataSizeUnitsPermutationAsync(async config =>
            {
                Uri collectionName = new Uri("test://dictionary");

                int key = 1;
                string value = "Homer";

                BinaryValueConverter converter = new BinaryValueConverter(collectionName, new JsonReliableStateSerializerResolver());

                double size =
                    converter.Serialize <int>(key).Buffer.Length + converter.Serialize <string>(value).Buffer.Length;

                double expectedMemory = size / (double)config.MemoryMetricUnits;
                double expectedDisk = size / (double)config.DiskMetricUnits;

                MockReliableDictionary <BinaryValue, BinaryValue> store = new MockReliableDictionary <BinaryValue, BinaryValue>(collectionName);
                MetricReliableDictionary <int, string> target = new MetricReliableDictionary <int, string>(store, converter, config);

                using (ITransaction tx = new MockTransaction())
                {
                    await target.SetAsync(tx, key, value);
                    await tx.CommitAsync();
                }

                using (ITransaction tx = new MockTransaction())
                {
                    IEnumerable <DecimalLoadMetric> result = await target.GetLoadMetricsAsync(tx, CancellationToken.None);

                    Assert.AreEqual <int>(1, result.Count(x => x.Name == config.MemoryMetricName && x.Value == expectedMemory));
                    Assert.AreEqual <int>(1, result.Count(x => x.Name == config.DiskMetricName && x.Value == expectedDisk));
                }
            }));
        }
示例#2
0
        public async Task EnumerateSingleItem()
        {
            Uri name = new Uri("test://dictionary");
            MetricReliableStateManager target = new MetricReliableStateManager(
                this.GetContext(),
                new JsonReliableStateSerializerResolver(),
                this.GetConfig(),
                new MockReliableStateManager());

            await target.GetOrAddAsync <IReliableDictionary <int, string> >(name);

            IAsyncEnumerator <IReliableState> enumerator = target.GetAsyncEnumerator();

            bool next = await enumerator.MoveNextAsync(CancellationToken.None);

            MetricReliableDictionary <int, string> actual = enumerator.Current as MetricReliableDictionary <int, string>;

            Assert.IsNotNull(actual);
            Assert.AreEqual <Uri>(name, actual.Name);
            Assert.IsFalse(await enumerator.MoveNextAsync(CancellationToken.None));
        }
示例#3
0
        public Task GetLoadMetricsEmptyDictionary()
        {
            return(RunDataSizeUnitsPermutationAsync(async config =>
            {
                int expected = 0;

                Uri collectionName = new Uri("test://dictionary");
                MockReliableDictionary <BinaryValue, BinaryValue> store = new MockReliableDictionary <BinaryValue, BinaryValue>(collectionName);

                BinaryValueConverter converter = new BinaryValueConverter(collectionName, new JsonReliableStateSerializerResolver());

                MetricReliableDictionary <int, string> target = new MetricReliableDictionary <int, string>(store, converter, config);

                using (ITransaction tx = new MockTransaction())
                {
                    IEnumerable <DecimalLoadMetric> result = await target.GetLoadMetricsAsync(tx, CancellationToken.None);

                    Assert.AreEqual <int>(1, result.Count(x => x.Name == config.MemoryMetricName && x.Value == expected));
                    Assert.AreEqual <int>(1, result.Count(x => x.Name == config.DiskMetricName && x.Value == expected));
                }
            }));
        }