|
31 | 31 | import com.uber.cadence.testing.TestWorkflowEnvironment;
|
32 | 32 | import com.uber.cadence.worker.Worker;
|
33 | 33 | import com.uber.cadence.workflow.interceptors.SignalWorkflowInterceptor;
|
34 |
| -import com.uber.cadence.workflow.workflows.ReceiveSignalObject_ChildWorkflowImpl; |
35 |
| -import com.uber.cadence.workflow.workflows.SendSignalObject_Workflow; |
36 |
| -import com.uber.cadence.workflow.workflows.SendSignalObject_WorkflowImpl; |
37 | 34 | import com.uber.m3.tally.RootScopeBuilder;
|
38 | 35 | import com.uber.m3.tally.Scope;
|
39 | 36 | import com.uber.m3.tally.StatsReporter;
|
|
43 | 40 | import java.util.Map;
|
44 | 41 | import java.util.function.Function;
|
45 | 42 |
|
46 |
| -import org.junit.Before; |
47 | 43 | import org.junit.Rule;
|
48 | 44 | import org.junit.Test;
|
49 | 45 | import org.junit.rules.TestWatcher;
|
@@ -108,6 +104,64 @@ public void executeChild() {
|
108 | 104 | }
|
109 | 105 | }
|
110 | 106 |
|
| 107 | + public interface ReceiveSignalObject_ChildWorkflow { |
| 108 | + |
| 109 | + @WorkflowMethod |
| 110 | + String execute(); |
| 111 | + |
| 112 | + @SignalMethod(name = "testSignal") |
| 113 | + void signal(Signal arg); |
| 114 | + |
| 115 | + @SignalMethod(name = "endWorkflow") |
| 116 | + void close(); |
| 117 | + } |
| 118 | + |
| 119 | + public static class ReceiveSignalObject_ChildWorkflowImpl implements ReceiveSignalObject_ChildWorkflow { |
| 120 | + private String receivedSignal = "Initial State"; |
| 121 | + // Keep workflow open so that we can send signal |
| 122 | + CompletablePromise<Void> promise = Workflow.newPromise(); |
| 123 | + @Override |
| 124 | + public String execute() { |
| 125 | + promise.get(); |
| 126 | + return receivedSignal; |
| 127 | + } |
| 128 | + |
| 129 | + @Override |
| 130 | + public void signal(Signal arg) { |
| 131 | + receivedSignal = arg.value; |
| 132 | + } |
| 133 | + |
| 134 | + @Override |
| 135 | + public void close() { |
| 136 | + promise.complete(null); |
| 137 | + } |
| 138 | + } |
| 139 | + |
| 140 | + public interface SendSignalObject_Workflow { |
| 141 | + |
| 142 | + @WorkflowMethod |
| 143 | + String execute(); |
| 144 | + } |
| 145 | + |
| 146 | + public static class SendSignalObject_WorkflowImpl implements SendSignalObject_Workflow { |
| 147 | + @Override |
| 148 | + public String execute() { |
| 149 | + ReceiveSignalObject_ChildWorkflow child = |
| 150 | + Workflow.newChildWorkflowStub(ReceiveSignalObject_ChildWorkflow.class); |
| 151 | + Promise<String> greeting = Async.function(child::execute); |
| 152 | + Signal sig = new Signal(); |
| 153 | + sig.value = "Hello World"; |
| 154 | + child.signal(sig); |
| 155 | + child.close(); |
| 156 | + return greeting.get(); |
| 157 | + } |
| 158 | + } |
| 159 | + |
| 160 | + public static class Signal { |
| 161 | + |
| 162 | + public String value; |
| 163 | + } |
| 164 | + |
111 | 165 | public void setUp(com.uber.m3.util.Duration reportingFrequecy){
|
112 | 166 | reporter = mock(StatsReporter.class);
|
113 | 167 | Scope scope =
|
|
0 commit comments