public void TestWaitForSignalOrDelayVersion1() { var a = new WaitForSignalOrDelay() { Duration = TimeSpan.FromSeconds(10), BookmarkName = "Wakeup", }; var definitionIdentity = new WorkflowIdentity("WaitForSignalOrDelay", new Version(1, 0), null); AutoResetEvent syncEvent = new AutoResetEvent(false); bool completed1 = false; bool unloaded1 = false; var app = new WorkflowApplication(a, definitionIdentity) { InstanceStore = WFDefinitionStore.Instance.Store, PersistableIdle = (eventArgs) => { return(PersistableIdleAction.Unload); }, OnUnhandledException = (e) => { return(UnhandledExceptionAction.Abort); }, Completed = delegate(WorkflowApplicationCompletedEventArgs e) { completed1 = true; syncEvent.Set(); }, Unloaded = (eventArgs) => { unloaded1 = true; syncEvent.Set(); }, }; var id = app.Id; app.Run(); syncEvent.WaitOne(); Assert.False(completed1); Assert.True(unloaded1); WFDefinitionIdentityStore.Instance.TryAdd(definitionIdentity, a); Thread.Sleep(5000); // from 1 seconds to 9 seconds, the total time of the test case is the same. var outputs = LoadAndCompleteLongRunning(id, definitionIdentity); Assert.False((bool)outputs["Result"]); }
public void TestWaitForSignalOrDelayWithBookmarkToWakup() { var bookmarkName = "Wakup Now"; var a = new WaitForSignalOrDelay() { Duration = TimeSpan.FromSeconds(10), BookmarkName = bookmarkName, }; AutoResetEvent syncEvent = new AutoResetEvent(false); bool completed1 = false; bool unloaded1 = false; IDictionary <string, object> outputs = null; var app = new WorkflowApplication(a) { InstanceStore = WFDefinitionStore.Instance.Store, PersistableIdle = (eventArgs) => { return(PersistableIdleAction.Unload); }, OnUnhandledException = (e) => { return(UnhandledExceptionAction.Abort); }, Completed = delegate(WorkflowApplicationCompletedEventArgs e) { completed1 = true; outputs = e.Outputs; syncEvent.Set(); }, Aborted = (eventArgs) => { }, Unloaded = (eventArgs) => { unloaded1 = true; syncEvent.Set(); } }; var id = app.Id; app.Run(); syncEvent.WaitOne(); Assert.False(completed1); Assert.True(unloaded1); outputs = LoadWithBookmarkAndComplete(a, id, bookmarkName, null);//Wakup does not need bookmark value Assert.True((bool)outputs["Result"]); }