Skip to content

Commit 22feed6

Browse files
Copilotcschleiden
andcommitted
Expose WorkflowLockTimeout and ActivityLockTimeout options
Co-authored-by: cschleiden <[email protected]>
1 parent cf49a11 commit 22feed6

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed

backend/options.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,18 @@ func WithWorkerName(workerName string) BackendOption {
124124
}
125125
}
126126

127+
func WithWorkflowLockTimeout(timeout time.Duration) BackendOption {
128+
return func(o *Options) {
129+
o.WorkflowLockTimeout = timeout
130+
}
131+
}
132+
133+
func WithActivityLockTimeout(timeout time.Duration) BackendOption {
134+
return func(o *Options) {
135+
o.ActivityLockTimeout = timeout
136+
}
137+
}
138+
127139
func ApplyOptions(opts ...BackendOption) *Options {
128140
options := DefaultOptions
129141

backend/options_test.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package backend
2+
3+
import (
4+
"testing"
5+
"time"
6+
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func TestWithWorkflowLockTimeout(t *testing.T) {
11+
timeout := 5 * time.Minute
12+
option := WithWorkflowLockTimeout(timeout)
13+
14+
opts := ApplyOptions(option)
15+
16+
assert.Equal(t, timeout, opts.WorkflowLockTimeout)
17+
}
18+
19+
func TestWithActivityLockTimeout(t *testing.T) {
20+
timeout := 3 * time.Minute
21+
option := WithActivityLockTimeout(timeout)
22+
23+
opts := ApplyOptions(option)
24+
25+
assert.Equal(t, timeout, opts.ActivityLockTimeout)
26+
}
27+
28+
func TestWithWorkflowAndActivityLockTimeout(t *testing.T) {
29+
workflowTimeout := 2 * time.Minute
30+
activityTimeout := 4 * time.Minute
31+
32+
opts := ApplyOptions(
33+
WithWorkflowLockTimeout(workflowTimeout),
34+
WithActivityLockTimeout(activityTimeout),
35+
)
36+
37+
assert.Equal(t, workflowTimeout, opts.WorkflowLockTimeout)
38+
assert.Equal(t, activityTimeout, opts.ActivityLockTimeout)
39+
}
40+
41+
func TestDefaultValues(t *testing.T) {
42+
opts := ApplyOptions()
43+
44+
// Verify default values are preserved when no options are provided
45+
assert.Equal(t, time.Minute, opts.WorkflowLockTimeout)
46+
assert.Equal(t, time.Minute*2, opts.ActivityLockTimeout)
47+
}
48+
49+
// TestIntegrationWithOtherOptions ensures the new timeout functions can be combined with existing options
50+
func TestIntegrationWithOtherOptions(t *testing.T) {
51+
workflowTimeout := 30 * time.Second
52+
activityTimeout := 45 * time.Second
53+
stickyTimeout := 10 * time.Second
54+
maxHistorySize := int64(5000)
55+
56+
opts := ApplyOptions(
57+
WithWorkflowLockTimeout(workflowTimeout),
58+
WithActivityLockTimeout(activityTimeout),
59+
WithStickyTimeout(stickyTimeout),
60+
WithMaxHistorySize(maxHistorySize),
61+
)
62+
63+
assert.Equal(t, workflowTimeout, opts.WorkflowLockTimeout)
64+
assert.Equal(t, activityTimeout, opts.ActivityLockTimeout)
65+
assert.Equal(t, stickyTimeout, opts.StickyTimeout)
66+
assert.Equal(t, maxHistorySize, opts.MaxHistorySize)
67+
}

0 commit comments

Comments
 (0)