Skip to content

Commit 6c32186

Browse files
committed
Merge branch 'master' into newer-tools
2 parents db8cc43 + 610f39f commit 6c32186

File tree

3 files changed

+88
-8
lines changed

3 files changed

+88
-8
lines changed

test/replaytests/activity_check.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
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+
"go.uber.org/cadence/workflow"
25+
"go.uber.org/zap"
26+
"time"
27+
)
28+
29+
// greetingsWorkflowActivity demonstrates the case in replayer where if an activity name is changed in a workflow or if a new activity is introdced in a workflow then the shdower fails.
30+
// There is also no other way to register the activity except for changing the json file so far.
31+
// CDNC-2267 addresses a fix for this.
32+
func greetingsWorkflowActivity(ctx workflow.Context) error {
33+
// Get Greeting.
34+
ao := workflow.ActivityOptions{
35+
ScheduleToStartTimeout: time.Minute,
36+
StartToCloseTimeout: time.Minute,
37+
HeartbeatTimeout: time.Second * 20,
38+
}
39+
ctx = workflow.WithActivityOptions(ctx, ao)
40+
41+
logger := workflow.GetLogger(ctx)
42+
var greetResult int64
43+
err := workflow.ExecuteActivity(ctx, getGreetingActivitytest).Get(ctx, &greetResult)
44+
if err != nil {
45+
logger.Error("Get greeting failed.", zap.Error(err))
46+
return err
47+
}
48+
49+
// Get Name.
50+
var nameResult string
51+
err = workflow.ExecuteActivity(ctx, getNameActivity).Get(ctx, &nameResult)
52+
if err != nil {
53+
logger.Error("Get name failed.", zap.Error(err))
54+
return err
55+
}
56+
57+
// Say Greeting.
58+
var sayResult string
59+
err = workflow.ExecuteActivity(ctx, sayGreetingActivity, greetResult, nameResult).Get(ctx, &sayResult)
60+
if err != nil {
61+
logger.Error("Marshalling failed with error.", zap.Error(err))
62+
return err
63+
}
64+
65+
logger.Info("Workflow completed.", zap.String("Result", sayResult))
66+
return nil
67+
}
68+
69+
// Get Greeting Activity.
70+
func getGreetingActivitytest() (string, error) {
71+
return "Hello", nil
72+
}

test/replaytests/replay_test.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,14 @@ func TestReplayChildWorkflowBugBackport(t *testing.T) {
5454
require.NoError(t, err)
5555
}
5656

57+
// Gives a non-deterministic-error because the getGreetingActivitytest was not registered on the replayer.
58+
func TestGreetingsWorkflowforActivity(t *testing.T) {
59+
replayer := worker.NewWorkflowReplayer()
60+
replayer.RegisterWorkflowWithOptions(greetingsWorkflowActivity, workflow.RegisterOptions{Name: "greetings"})
61+
err := replayer.ReplayWorkflowHistoryFromJSONFile(zaptest.NewLogger(t), "greetings.json")
62+
require.Error(t, err)
63+
}
64+
5765
func TestGreetingsWorkflow(t *testing.T) {
5866
replayer := worker.NewWorkflowReplayer()
5967
replayer.RegisterWorkflowWithOptions(greetingsWorkflow, workflow.RegisterOptions{Name: "greetings"})
@@ -76,16 +84,18 @@ func TestGreetingsWorkflow4(t *testing.T) {
7684
activity.RegisterWithOptions(getNameActivity4, activity.RegisterOptions{Name: "main.getNameActivity", DisableAlreadyRegisteredCheck: true})
7785
replayer.RegisterWorkflowWithOptions(greetingsWorkflow4, workflow.RegisterOptions{Name: "greetings"})
7886
err := replayer.ReplayWorkflowHistoryFromJSONFile(zaptest.NewLogger(t), "greetings.json")
79-
require.NoError(t, err)
87+
require.Error(t, err)
8088
}
8189

82-
// Fails with a non deterministic error. This passes in cadence_samples because it's registered in Helper.
90+
// Panic with failed to register activity. This passes in cadence_samples because it's registered in Helper.
8391
// To test it on cadence_samples change the https://github.com/uber-common/cadence-samples/blob/master/cmd/samples/recipes/greetings/greetings_workflow.go
8492
// to include the extra return types in getNameActivity.
8593
func TestGreetingsWorkflow2(t *testing.T) {
94+
95+
t.Skip("Panic with failed to register activity. Here the activity returns incompatible arguments so the test should fail")
8696
replayer := worker.NewWorkflowReplayer()
8797
activity.RegisterWithOptions(getNameActivity2, activity.RegisterOptions{Name: "main.getNameActivity", DisableAlreadyRegisteredCheck: true})
8898
replayer.RegisterWorkflowWithOptions(greetingsWorkflow2, workflow.RegisterOptions{Name: "greetings"})
8999
err := replayer.ReplayWorkflowHistoryFromJSONFile(zaptest.NewLogger(t), "greetings.json")
90-
require.NoError(t, err)
100+
require.Error(t, err)
91101
}

test/replaytests/signatureBugWorkflow.go renamed to test/replaytests/signature_bug.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2017-2021 Uber Technologies Inc.
1+
// Copyright (c) 2017 Uber Technologies, Inc.
22
//
33
// Permission is hereby granted, free of charge, to any person obtaining a copy
44
// of this software and associated documentation files (the "Software"), to deal
@@ -22,11 +22,9 @@ package replaytests
2222

2323
import (
2424
"fmt"
25-
"time"
26-
27-
"go.uber.org/zap"
28-
2925
"go.uber.org/cadence/workflow"
26+
"go.uber.org/zap"
27+
"time"
3028
)
3129

3230
// greetingWorkflow demonstrates the normal case where we are executing multiple acitivities and expect a certain result.

0 commit comments

Comments
 (0)