Skip to content

Commit c17ff97

Browse files
authored
[UNIT TEST] Update mockgen and create client mock (#72)
1 parent 02b964c commit c17ff97

18 files changed

+770
-98
lines changed

README.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
# iWF Golang SDK
2+
23
[![Go Reference](https://pkg.go.dev/badge/github.com/indeedeng/iwf-golang-sdk.svg)](https://pkg.go.dev/github.com/indeedeng/iwf-golang-sdk)
34
[![Go Report Card](https://goreportcard.com/badge/github.com/indeedeng/iwf-golang-sdk)](https://goreportcard.com/report/github.com/indeedeng/iwf-golang-sdk)
45
[![Coverage Status](https://codecov.io/github/indeedeng/iwf-golang-sdk/coverage.svg?branch=main)](https://app.codecov.io/gh/indeedeng/iwf-golang-sdk/branch/main)
56

67
[![Build status](https://github.com/indeedeng/iwf-golang-sdk/actions/workflows/ci-integ-test.yml/badge.svg?branch=main)](https://github.com/indeedeng/iwf-golang-sdk/actions/workflows/ci-integ-test.yml)
78

8-
9-
109
Golang SDK for [iWF workflow engine](https://github.com/indeedeng/iwf)
1110

1211
See [samples](https://github.com/indeedeng/iwf-golang-samples) for how to use this SDK.
13-
# Contribution
12+
13+
## Contribution
14+
1415
See [contribution guide](CONTRIBUTION.md)
1516

16-
# Development Plan
17+
## Development Plan
1718

18-
## 1.0
19+
### 1.0
1920

2021
- [x] Start workflow API
2122
- [x] Executing `start`/`decide` APIs and completing workflow
@@ -37,20 +38,22 @@ See [contribution guide](CONTRIBUTION.md)
3738
- [x] Reset workflow by stateId/StateExecutionId
3839
- [x] More workflow start options: initial search attributes
3940

40-
## 1.1
41+
### 1.1
4142

4243
- [x] Skip timer API for testing/operation
4344
- [x] Decider trigger type: any command combination
4445

45-
## 1.2
46+
### 1.2
47+
4648
- [x] API improvements to reduce boilerplate code
4749

48-
## 1.3
50+
### 1.3
51+
4952
- [x] Support failing workflow with results
5053
- [x] Improve workflow uncompleted error return(canceled, failed, timeout, terminated)
5154

5255
### 1.4
5356

54-
- [x] Renaming some concepts/APIs with breaking changes(see releaste notes)
57+
- [x] Renaming some concepts/APIs with breaking changes(see release notes)
5558
- [x] Support workflow RPC
5659
- [x] PARTIAL_WITH_EXCLUSIVE_LOCK persistence loading type

go.mod

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ go 1.18
44

55
require (
66
github.com/gin-gonic/gin v1.8.2
7-
github.com/golang/mock v1.6.0
87
github.com/stretchr/testify v1.8.1
9-
golang.org/x/oauth2 v0.3.0
8+
go.uber.org/mock v0.3.0
109
)
1110

1211
require (
@@ -16,7 +15,7 @@ require (
1615
github.com/go-playground/universal-translator v0.18.0 // indirect
1716
github.com/go-playground/validator/v10 v10.11.1 // indirect
1817
github.com/goccy/go-json v0.9.11 // indirect
19-
github.com/golang/protobuf v1.5.2 // indirect
18+
github.com/google/go-cmp v0.5.8 // indirect
2019
github.com/json-iterator/go v1.1.12 // indirect
2120
github.com/leodido/go-urn v1.2.1 // indirect
2221
github.com/mattn/go-isatty v0.0.16 // indirect
@@ -29,7 +28,6 @@ require (
2928
golang.org/x/net v0.4.0 // indirect
3029
golang.org/x/sys v0.3.0 // indirect
3130
golang.org/x/text v0.5.0 // indirect
32-
google.golang.org/appengine v1.6.7 // indirect
3331
google.golang.org/protobuf v1.28.1 // indirect
3432
gopkg.in/yaml.v2 v2.4.0 // indirect
3533
gopkg.in/yaml.v3 v3.0.1 // indirect

go.sum

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,10 @@ github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJ
1616
github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
1717
github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk=
1818
github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
19-
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
20-
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
21-
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
2219
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
23-
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
24-
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
2520
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
2621
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
22+
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
2723
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
2824
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
2925
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
@@ -64,53 +60,28 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o
6460
github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
6561
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
6662
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
67-
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
68-
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
69-
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
63+
go.uber.org/mock v0.3.0 h1:3mUxI1No2/60yUYax92Pt8eNOEecx2D3lcXZh2NEZJo=
64+
go.uber.org/mock v0.3.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
7065
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 h1:0es+/5331RGQPcXlMfP+WrnIIS6dNnNRe0WB02W0F4M=
7166
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
72-
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
73-
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
74-
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
75-
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
76-
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
7767
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
7868
golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU=
7969
golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
80-
golang.org/x/oauth2 v0.3.0 h1:6l90koy8/LaBLmLu8jpHeHexzMwEita0zFfYlggy2F8=
81-
golang.org/x/oauth2 v0.3.0/go.mod h1:rQrIauxkUhJ6CuwEXwymO2/eh4xz2ZWF1nBkcxS+tGk=
82-
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
83-
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
84-
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
85-
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
8670
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
87-
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
8871
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
89-
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
9072
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
9173
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
9274
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
9375
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
9476
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
9577
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
96-
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
97-
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
98-
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
9978
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
10079
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
10180
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
10281
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
10382
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
104-
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
105-
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
106-
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
107-
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
10883
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
109-
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
110-
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
111-
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
11284
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
113-
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
11485
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
11586
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
11687
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

integ/basic_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,5 @@ func TestProceedOnStateStartFailWorkflow(t *testing.T) {
5151
var output string
5252
err = client.GetSimpleWorkflowResult(context.Background(), wfId, "", &output)
5353
assert.Equal(t, "input_state1_start_state1_decide_state2_start_state2_decide", output)
54+
assert.Nil(t, err)
5455
}

integ/main_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ package integ
22

33
import (
44
"fmt"
5-
"github.com/gin-gonic/gin"
6-
"github.com/indeedeng/iwf-golang-sdk/gen/iwfidl"
7-
"github.com/indeedeng/iwf-golang-sdk/iwf"
85
"log"
96
"net/http"
107
"os"
118
"testing"
9+
10+
"github.com/gin-gonic/gin"
11+
"github.com/indeedeng/iwf-golang-sdk/gen/iwfidl"
12+
"github.com/indeedeng/iwf-golang-sdk/iwf"
1213
)
1314

1415
func TestMain(m *testing.M) {
@@ -33,7 +34,6 @@ func apiV1WorkflowStateStart(c *gin.Context) {
3334
return
3435
}
3536
c.JSON(http.StatusOK, resp)
36-
return
3737
}
3838
func apiV1WorkflowStateDecide(c *gin.Context) {
3939
var req iwfidl.WorkflowStateExecuteRequest
@@ -48,7 +48,6 @@ func apiV1WorkflowStateDecide(c *gin.Context) {
4848
return
4949
}
5050
c.JSON(http.StatusOK, resp)
51-
return
5251
}
5352

5453
func apiV1WorkflowWorkerRpc(c *gin.Context) {
@@ -67,7 +66,6 @@ func apiV1WorkflowWorkerRpc(c *gin.Context) {
6766
return
6867
}
6968
c.JSON(http.StatusOK, resp)
70-
return
7169
}
7270

7371
func startWorkflowWorker() (closeFunc func()) {

integ/persistence_workflow_state2.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func (b persistenceWorkflowState2) WaitUntil(ctx iwf.WorkflowContext, input iwf.
2121
dv := persistence.GetSearchAttributeDatetime(testSearchAttributeDatetime)
2222
bv := persistence.GetSearchAttributeBool(testSearchAttributeBool)
2323
persistence.SetSearchAttributeDouble(testSearchAttributeDouble, 1.0)
24-
if dv.Unix() == do.Datetime.Unix() && bv == true {
24+
if dv.Unix() == do.Datetime.Unix() && bv {
2525
persistence.SetSearchAttributeText(testSearchAttributeText, testText)
2626
return iwf.EmptyCommandRequest(), nil
2727
}

integ/signal_test.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package integ
22

33
import (
44
"context"
5-
"github.com/indeedeng/iwf-golang-sdk/iwf"
6-
"github.com/stretchr/testify/assert"
75
"strconv"
86
"testing"
97
"time"
8+
9+
"github.com/indeedeng/iwf-golang-sdk/iwf"
10+
"github.com/stretchr/testify/assert"
1011
)
1112

1213
func TestSignalWorkflow(t *testing.T) {
@@ -15,11 +16,15 @@ func TestSignalWorkflow(t *testing.T) {
1516
assert.Nil(t, err)
1617
assert.NotEmpty(t, runId)
1718
err = client.SignalWorkflow(context.Background(), &signalWorkflow{}, wfId, "", testChannelName2, 10)
19+
assert.Nil(t, err)
1820

1921
// wait for timer to be ready to be skipped
2022
time.Sleep(time.Second)
2123
err = client.SignalWorkflow(context.Background(), &signalWorkflow{}, wfId, "", testChannelName1, 100)
24+
assert.Nil(t, err)
25+
2226
err = client.SkipTimerByCommandIndex(context.Background(), wfId, "", signalWorkflowState2{}, 1, 0)
27+
assert.Nil(t, err)
2328

2429
var output int
2530
err = client.GetSimpleWorkflowResult(context.Background(), wfId, "", &output)
@@ -39,11 +44,15 @@ func TestSignalWorkflowWithUntypedClient(t *testing.T) {
3944
assert.Nil(t, err)
4045
assert.NotEmpty(t, runId)
4146
err = unregisteredClient.SignalWorkflow(context.Background(), wfId, "", testChannelName2, 10)
47+
assert.Nil(t, err)
4248

4349
// wait for timer to be ready to be skipped
4450
time.Sleep(time.Second)
4551
err = unregisteredClient.SignalWorkflow(context.Background(), wfId, "", testChannelName1, 100)
52+
assert.Nil(t, err)
53+
4654
err = unregisteredClient.SkipTimerByCommandIndex(context.Background(), wfId, "", iwf.GetFinalWorkflowStateId(signalWorkflowState2{}), 1, 0)
55+
assert.Nil(t, err)
4756

4857
var output int
4958
err = unregisteredClient.GetSimpleWorkflowResult(context.Background(), wfId, "", &output)

iwf/client.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package iwf
22

3+
//go:generate mockgen -source=./client.go -package=iwftest -destination=../iwftest/client.go
4+
35
import (
46
"context"
7+
58
"github.com/indeedeng/iwf-golang-sdk/gen/iwfidl"
69
)
710

iwf/communication.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package iwf
22

3+
//go:generate mockgen -source=./communication.go -package=iwftest -destination=../iwftest/communication.go
4+
35
import "github.com/indeedeng/iwf-golang-sdk/gen/iwfidl"
46

57
type Communication interface {

iwf/persistence.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package iwf
22

3+
//go:generate mockgen -source=./persistence.go -package=iwftest -destination=../iwftest/persistence.go
4+
35
import (
4-
"github.com/indeedeng/iwf-golang-sdk/gen/iwfidl"
56
"time"
7+
8+
"github.com/indeedeng/iwf-golang-sdk/gen/iwfidl"
69
)
710

811
// Persistence APIs are for read/write persistence of workflow

0 commit comments

Comments
 (0)