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); }
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; }
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; }
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); }