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