Skip to content

Commit 55f58be

Browse files
replay test sequential
1 parent e537cbf commit 55f58be

File tree

3 files changed

+66
-1
lines changed

3 files changed

+66
-1
lines changed

test/replaytests/branch_workflow.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func sampleBranchWorkflow2(ctx workflow.Context) error {
7272
}
7373
ctx = workflow.WithActivityOptions(ctx, ao)
7474

75-
for i := 1; i <= 4; i++ {
75+
for i := 1; i <= 2; i++ {
7676
activityInput := fmt.Sprintf("branch %d of 4", i)
7777
future := workflow.ExecuteActivity(ctx, sampleActivity, activityInput)
7878
futures = append(futures, future)

test/replaytests/replay_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,17 @@ func TestBranchWorkflowWithExtraBranch(t *testing.T) {
151151
assert.ErrorContains(t, err, "nondeterministic workflow")
152152
}
153153

154+
// ####### my test
155+
func TestSequentialStepsWorkflow(t *testing.T) {
156+
replayer := worker.NewWorkflowReplayer()
157+
158+
replayer.RegisterWorkflowWithOptions(sequantialStepsWorkflow, workflow.RegisterOptions{Name: "sequentialStepsWorkflow"})
159+
160+
// branch.json file contains history of a run with 3 activity calls
161+
err := replayer.ReplayWorkflowHistoryFromJSONFile(zaptest.NewLogger(t), "sequential.json")
162+
assert.ErrorContains(t, err, "nondeterministic workflow")
163+
}
164+
154165
func TestParallel(t *testing.T) {
155166
replayer := worker.NewWorkflowReplayer()
156167

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// Copyright (c) 2017 Uber Technologies, Inc.
2+
//
3+
// Permission is hereby granted, free of charge, to any person obtaining a copy
4+
// of this software and associated documentation files (the "Software"), to deal
5+
// in the Software without restriction, including without limitation the rights
6+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7+
// copies of the Software, and to permit persons to whom the Software is
8+
// furnished to do so, subject to the following conditions:
9+
//
10+
// The above copyright notice and this permission notice shall be included in
11+
// all copies or substantial portions of the Software.
12+
//
13+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19+
// THE SOFTWARE.
20+
21+
package replaytests
22+
23+
import (
24+
"fmt"
25+
"time"
26+
27+
"go.uber.org/cadence/workflow"
28+
)
29+
30+
/**
31+
* This sample workflow executes sample activity 3 times sequentially.
32+
*/
33+
34+
// sampleBranchWorkflow workflow decider
35+
func sequantialStepsWorkflow(ctx workflow.Context) error {
36+
// starts activities in parallel
37+
ao := workflow.ActivityOptions{
38+
ScheduleToStartTimeout: time.Minute,
39+
StartToCloseTimeout: time.Minute,
40+
HeartbeatTimeout: time.Second * 20,
41+
}
42+
ctx = workflow.WithActivityOptions(ctx, ao)
43+
44+
for i := 1; i <= 3; i++ {
45+
activityInput := fmt.Sprintf("step %d", i)
46+
err := workflow.ExecuteActivity(ctx, sampleActivity, activityInput).Get(ctx, nil)
47+
if err != nil {
48+
return fmt.Errorf("Failed to execute sampleActivity %dth time, err: $v", err)
49+
}
50+
}
51+
52+
workflow.GetLogger(ctx).Info("Workflow completed.")
53+
return nil
54+
}

0 commit comments

Comments
 (0)