public async Task RunAsyncWithMessage()
        {
            var state = Substitute.For<IReliableStateManager>();
            var queueName = Guid.NewGuid().ToString();
            var queue = Substitute.For<IReliableQueue<object>>();
            var msg = new ConditionalValue<object>(false, null);

            var tx = Substitute.For<ITransaction>();
            //state.GetOrAddAsync<IReliableQueue<object>>(queueName).Returns(queue);
            //state.CreateTransaction().Returns(tx);
            queue.TryDequeueAsync(tx).Returns(msg);
            var processor = Substitute.For<IProcessor<object>>();

            var ds = new FakeDequeueService(state, queueName, processor);

            var ct = new CancellationTokenSource();

            using (var t = new Timer(new TimerCallback((object obj) => { ct.Cancel(); }), null, 3, Timeout.Infinite))
            {
                await ds.RunTest(ct.Token);
            }

            //await state.Received().GetOrAddAsync<IReliableQueue<object>>(queueName);
            //state.Received().CreateTransaction();
            await tx.Received(0).CommitAsync();
            await queue.Received().TryDequeueAsync(tx);
            await processor.Received(0).Process(Arg.Any<object>());
            await tx.Received(0).CommitAsync();
            Assert.Inconclusive();
        }
        public async Task RunAsyncCancelled()
        {
            var context = Substitute.ForPartsOf<StatefulServiceContext>();
            var queueName = Guid.NewGuid().ToString();
            var processor = Substitute.For<IProcessor<object>>();
            var state = Substitute.For<IReliableStateManager>();
            var ds = new FakeDequeueService(state, queueName, processor);
            var token = new CancellationToken(true);
            await ds.RunTest(token);

            await processor.Received(0).Process(Arg.Any<object>());
            //await context.Received(0).GetOrAddAsync<IReliableQueue<object>>(queueName);
            Assert.Inconclusive("Fix Code");
        }