Ejemplo n.º 1
0
        public async Task TestConcurrentNotOkMerge()
        {
            var ioc = TestUtils.GetTestIoc();

            var dbOperations = ioc.GetRequiredService <DbOperations>();

            var dbInstance = ioc.GetRequiredService <DbInstance>();

            var table = dbInstance.CreateTableIfNotExists("mytable", false);

            var rawClass1 = new MergeEntity1
            {
                PartitionKey = "test",
                RowKey       = "test",
                TimeStamp    = "12:00:00",
                Value1       = "123"
            };

            var memory1 = rawClass1.ToMemory();

            await dbOperations.InsertAsync(table, memory1, DataSynchronizationPeriod.Sec1, DateTime.UtcNow);

            var insertedEntity1 = table.GetEntity("test", "test").AsResult <MergeEntity2>();

            insertedEntity1.Value2 = "456";

            var insertedEntity2 = table.GetEntity("test", "test").AsResult <MergeEntity2>();

            insertedEntity2.Value2 = "789";

            var mergeDateTime1 = DateTime.UtcNow.AddSeconds(1);

            var opResult1 = await dbOperations.MergeAsync(table, insertedEntity1.ToMemory(),
                                                          DataSynchronizationPeriod.Immediately, mergeDateTime1);

            var entity = table.GetEntity(rawClass1.PartitionKey, rawClass1.RowKey);

            Assert.AreEqual(mergeDateTime1.ToTimeStampString(), entity.TimeStamp);

            var mergeDateTime2 = DateTime.UtcNow.AddSeconds(1);
            var opResult2      = await dbOperations.MergeAsync(table, insertedEntity2.ToMemory(),
                                                               DataSynchronizationPeriod.Immediately, mergeDateTime2);

            Assert.AreEqual(OperationResult.Ok, opResult1);
            Assert.AreEqual(OperationResult.RecordChangedConcurrently, opResult2);

            var result = table.GetEntity("test", "test").AsResult <MergedEntity>();

            Assert.AreEqual("123", result.Value1);
            Assert.AreEqual("456", result.Value2);
        }
Ejemplo n.º 2
0
        public async Task TestOkMerge()
        {
            var ioc = TestUtils.GetTestIoc();

            var dbOperations = ioc.GetRequiredService <DbOperations>();

            var dbInstance = ioc.GetRequiredService <DbInstance>();

            var table = dbInstance.CreateTableIfNotExists("mytable", false);

            var rawClass1 = new MergeEntity1
            {
                PartitionKey = "test",
                RowKey       = "test",
                TimeStamp    = "12:00:00",
                Value1       = "123"
            };

            var memory1 = rawClass1.ToMemory();

            await dbOperations.InsertAsync(table,
                                           memory1,
                                           DataSynchronizationPeriod.Sec1,
                                           DateTime.UtcNow);

            var insertedEntity = table
                                 .GetEntity("test", "test")
                                 .AsResult <MergeEntity2>();

            insertedEntity.Value2 = "456";

            var memory2 = insertedEntity.ToMemory();

            var opResult = await dbOperations
                           .MergeAsync(table,
                                       memory2,
                                       DataSynchronizationPeriod.Immediately,
                                       DateTime.UtcNow);

            Assert.AreEqual(OperationResult.Ok, opResult);

            var result = table.GetEntity("test", "test").AsResult <MergedEntity>();

            Assert.AreEqual("123", result.Value1);
            Assert.AreEqual("456", result.Value2);
        }