Beispiel #1
0
        public void RunAsyncBlockingCall()
        {
            Console.WriteLine("StatefulServiceLifeCycleTests - Test Method: RunAsyncBlockingCall()");

            var serviceContext = TestMocksRepository.GetMockStatefulServiceContext();

            var testService = new RunAsyncBlockingCallTestService(serviceContext);
            IStatefulServiceReplica testServiceReplica = new StatefulServiceReplicaAdapter(serviceContext, testService);

            var partition = new Mock <IStatefulServicePartition>();

            partition.SetupGet(p => p.WriteStatus).Returns(PartitionAccessStatus.Granted);

            testServiceReplica.OpenAsync(ReplicaOpenMode.New, partition.Object, CancellationToken.None).GetAwaiter().GetResult();

            Console.WriteLine(@"// U -> P");
            var changeRoleTask = testServiceReplica.ChangeRoleAsync(ReplicaRole.Primary, CancellationToken.None);

            CancellationTokenSource source = new CancellationTokenSource(10000);

            while (!testService.RunAsyncInvoked)
            {
                Task.Delay(100, source.Token).GetAwaiter().GetResult();
            }

            Assert.True(changeRoleTask.IsCompleted && !changeRoleTask.IsCanceled && !changeRoleTask.IsFaulted);
            ((StatefulServiceReplicaAdapter)testServiceReplica).Test_IsRunAsyncTaskRunning().Should().BeTrue();

            testServiceReplica.CloseAsync(CancellationToken.None).GetAwaiter().GetResult();
        }
Beispiel #2
0
        public void RunAsyncBlockingCall()
        {
            Console.WriteLine("StatelessServiceLifeCycleTests - Test Method: RunAsyncBlockingCall()");

            var serviceContext = TestMocksRepository.GetMockStatelessServiceContext();

            var testService = new RunAsyncBlockingCallTestService(serviceContext);
            IStatelessServiceInstance testServiceReplica = new StatelessServiceInstanceAdapter(serviceContext, testService);

            var partition = new Mock <IStatelessServicePartition>();

            var openTask = testServiceReplica.OpenAsync(partition.Object, CancellationToken.None);

            CancellationTokenSource source = new CancellationTokenSource(10000);

            while (!testService.RunAsyncInvoked)
            {
                Task.Delay(100, source.Token).GetAwaiter().GetResult();
            }

            Assert.True(openTask.IsCompleted && !openTask.IsCanceled && !openTask.IsFaulted);
            ((StatelessServiceInstanceAdapter)testServiceReplica).Test_IsRunAsyncTaskRunning().Should().BeTrue();

            testServiceReplica.CloseAsync(CancellationToken.None).GetAwaiter().GetResult();
        }