Example #1
0
            public async Task <bool> RunAsync(TimeSpan signalDelay, bool signalWithResult)
            {
                SyncSignal.Clear();

                // Start a child workflow and then send a synchronous
                // signal that returns void or a result depending on
                // the parameter.
                //
                // The method returns TRUE on success.

                var childStub = Workflow.NewChildWorkflowFutureStub <ISyncSignal>();
                var future    = await childStub.StartAsync(SyncSignal.WorkflowDelay);

                var pass = true;

                if (signalWithResult)
                {
                    var result = await childStub.Stub.SignalAsync(signalDelay, "Hello World!");

                    pass = result == "Hello World!";
                }
                else
                {
                    await childStub.Stub.SignalAsync(signalDelay);
                }

                pass = pass && SyncSignal.SignalBeforeDelay;
                pass = pass && SyncSignal.SignalAfterDelay;

                await future.GetAsync();

                return(pass);
            }
Example #2
0
        public async Task SyncSignal_WithResult(int iteration)
        {
            LogStart(iteration);

            // Verify that sending a synchronous signal returning a result
            // works as expected when there's no delay executing the signal.

            SyncSignal.Clear();

            var stub   = client.NewWorkflowStub <ISyncSignal>();
            var task   = stub.RunAsync(SyncSignal.WorkflowDelay);
            var result = await stub.SignalAsync(TimeSpan.Zero, "Hello World!");

            Assert.True(SyncSignal.SignalBeforeDelay);
            Assert.True(SyncSignal.SignalAfterDelay);
            Assert.Equal("Hello World!", result);

            await task;
        }
Example #3
0
        public async Task SyncSignal_WithResult_AndDelay(int iteration)
        {
            LogStart(iteration);

            // Verify that sending a synchronous signal returning a result
            // works as expected when we delay the signal execution long
            // enough to force query retries.

            SyncSignal.Clear();

            var stub   = client.NewWorkflowStub <ISyncSignal>();
            var task   = stub.RunAsync(SyncSignal.WorkflowDelay);
            var result = await stub.SignalAsync(SyncSignal.SignalDelay, "Hello World!");

            Assert.True(SyncSignal.SignalBeforeDelay);
            Assert.True(SyncSignal.SignalAfterDelay);
            Assert.Equal("Hello World!", result);

            await task;
        }
Example #4
0
        public async Task SyncSignalFuture_WithoutResult(int iteration)
        {
            LogStart(iteration);

            // Verify that sending a synchronous signal returning void
            // via a future works as expected when there's no delay
            // executing the signal.

            SyncSignal.Clear();

            var stub   = client.NewWorkflowFutureStub <ISyncSignal>();
            var future = await stub.StartAsync(SyncSignal.WorkflowDelay);

            await stub.SyncSignalAsync("signal-void", TimeSpan.Zero);

            await future.GetAsync();

            Assert.True(SyncSignal.SignalBeforeDelay);
            Assert.True(SyncSignal.SignalAfterDelay);
        }