示例#1
0
        public async Task TestServiceState_100TransactionsCommitted()
        {
            var context      = MockStatefulServiceContextFactory.Default;
            var stateManager = new MockReliableStateManager();
            var service      = new MyStatefulService(context, stateManager);

            int abortedCount = 0;

            stateManager.MockTransactionChanged +=
                (s, t) =>
            {
                Assert.IsTrue(t.IsCommitted == !t.IsAborted, "Expected IsCommitted != IsAborted");
                if (t.IsAborted)
                {
                    Interlocked.Increment(ref abortedCount);
                }
            };

            const string stateName = "test";
            var          payload   = new Payload(StatePayload);

            var tasks = new List <Task>(100);

            for (int i = 0; i < 100; i++)
            {
                //create state
                tasks.Add(service.InsertAsync(stateName + i.ToString(), payload));
            }
            await Task.WhenAll(tasks);

            Assert.AreEqual(0, abortedCount);
            CheckDictionaryCount(stateManager, 100);
        }
示例#2
0
        public async Task TestServiceState_TwoTransactionsCommitted()
        {
            var context      = MockStatefulServiceContextFactory.Default;
            var stateManager = new MockReliableStateManager();
            var service      = new MyStatefulService(context, stateManager);

            int abortedCount = 0;

            stateManager.MockTransactionChanged +=
                (s, t) =>
            {
                Assert.IsTrue(t.IsCommitted == !t.IsAborted, "Expected IsCommitted != IsAborted");
                if (t.IsAborted)
                {
                    Interlocked.Increment(ref abortedCount);
                }
            };

            const string stateName = "test";
            var          payload   = new Payload(StatePayload);

            //create state-->Tran 1
            await service.InsertAsync(stateName + "1", payload);

            //create state-->Tran 2
            await service.InsertAsync(stateName + "2", payload);

            Assert.AreEqual(0, abortedCount);
            CheckDictionaryCount(stateManager, 2);
        }
        public async Task TestServiceState_99TransactionsCommittedOneAborted()
        {
            var context      = MockStatefulServiceContextFactory.Default;
            var stateManager = new MockReliableStateManager();
            var service      = new MyStatefulService(context, stateManager);

            const string stateName = "test";
            var          payload   = new Payload(StatePayload);

            var tasks = new List <Task>(99);

            for (int i = 0; i < 99; i++)
            {
                //create state
                tasks.Add(service.InsertAsync(stateName, payload));
            }
            ;
            await Task.WhenAll(tasks);

            await service.InsertAndAbortAsync(stateName, payload);

            Assert.IsInstanceOfType(stateManager.Transaction, typeof(MockTransaction));
            Assert.AreEqual(100, stateManager.AllTransactions.Count());
            Assert.IsFalse(stateManager.Transaction.IsCommitted);
            Assert.IsTrue(stateManager.Transaction.IsAborted);
            //check ordering
            Assert.IsTrue(stateManager.AllTransactions.Select(t => t.InstanceCount).SequenceEqual(Enumerable.Range(1, 100)));
        }
        public async Task TestServiceState_TransactionCommitted()
        {
            var context      = MockStatefulServiceContextFactory.Default;
            var stateManager = new MockReliableStateManager();
            var service      = new MyStatefulService(context, stateManager);

            const string stateName = "test";
            var          payload   = new Payload(StatePayload);

            //create state-->Tran 1
            await service.InsertAsync(stateName, payload);

            Assert.IsInstanceOfType(stateManager.Transaction, typeof(MockTransaction));
            Assert.AreEqual(1, stateManager.AllTransactions.Count());
            Assert.IsTrue(stateManager.Transaction.IsCommitted);
            Assert.IsFalse(stateManager.Transaction.IsAborted);
        }
示例#5
0
        public async Task TestServiceState_ConcurrentQueue()
        {
            var context      = MockStatefulServiceContextFactory.Default;
            var stateManager = new MockReliableStateManager();
            var service      = new MyStatefulService(context, stateManager);

            var payload = new Payload(StatePayload);

            //create state
            await service.ConcurrentEnqueueAsync(payload);

            //get state
            var queue = await stateManager.TryGetAsync <IReliableConcurrentQueue <Payload> >(MyStatefulService.StateManagerConcurrentQueueKey);

            var actual = (await queue.Value.TryDequeueAsync(stateManager.CreateTransaction())).Value;

            Assert.AreEqual(StatePayload, actual.Content);
        }
示例#6
0
        public async Task TestServiceState_Dictionary()
        {
            var context      = MockStatefulServiceContextFactory.Default;
            var stateManager = new MockReliableStateManager();
            var service      = new MyStatefulService(context, stateManager);

            const string stateName = "test";
            var          payload   = new Payload(StatePayload);

            //create state
            await service.InsertAsync(stateName, payload);

            //get state
            var dictionary = await stateManager.TryGetAsync <IReliableDictionary <string, Payload> >(MyStatefulService.StateManagerDictionaryKey);

            var actual = (await dictionary.Value.TryGetValueAsync(stateManager.CreateTransaction(), stateName)).Value;

            Assert.AreEqual(StatePayload, actual.Content);
        }
        public async Task TestServiceState_100TransactionsCommitted()
        {
            var context      = MockStatefulServiceContextFactory.Default;
            var stateManager = new MockReliableStateManager();
            var service      = new MyStatefulService(context, stateManager);

            const string stateName = "test";
            var          payload   = new Payload(StatePayload);

            var tasks = new List <Task>(100);

            for (int i = 0; i < 100; i++)
            {
                //create state
                tasks.Add(service.InsertAsync(stateName, payload));
            }
            ;
            await Task.WhenAll(tasks);

            Assert.IsInstanceOfType(stateManager.Transaction, typeof(MockTransaction));
            Assert.AreEqual(100, stateManager.AllTransactions.Count());
            Assert.IsTrue(stateManager.Transaction.IsCommitted);
            Assert.IsFalse(stateManager.Transaction.IsAborted);
        }