1
+ package worker
2
+
3
+ import (
4
+ "testing"
5
+
6
+ "github.com/stretchr/testify/require"
7
+ )
8
+
9
+ func TestWorkflowOrchestrator_PollerDefaults (t * testing.T ) {
10
+ tests := []struct {
11
+ name string
12
+ inputOptions * Options
13
+ expectedWorkflowPollers int
14
+ expectedActivityPollers int
15
+ expectedSingleWorkerMode bool
16
+ }{
17
+ {
18
+ name : "nil options should use 1 poller for orchestrator" ,
19
+ inputOptions : nil ,
20
+ expectedWorkflowPollers : 1 ,
21
+ expectedActivityPollers : 1 ,
22
+ expectedSingleWorkerMode : true ,
23
+ },
24
+ {
25
+ name : "default options should change to 1 poller for orchestrator" ,
26
+ inputOptions : & Options {
27
+ WorkflowWorkerOptions : WorkflowWorkerOptions {
28
+ WorkflowPollers : DefaultOptions .WorkflowPollers , // Should be 2
29
+ },
30
+ ActivityWorkerOptions : ActivityWorkerOptions {
31
+ ActivityPollers : DefaultOptions .ActivityPollers , // Should be 2
32
+ },
33
+ },
34
+ expectedWorkflowPollers : 1 ,
35
+ expectedActivityPollers : 1 ,
36
+ expectedSingleWorkerMode : true ,
37
+ },
38
+ {
39
+ name : "custom options should be preserved" ,
40
+ inputOptions : & Options {
41
+ WorkflowWorkerOptions : WorkflowWorkerOptions {
42
+ WorkflowPollers : 3 ,
43
+ },
44
+ ActivityWorkerOptions : ActivityWorkerOptions {
45
+ ActivityPollers : 5 ,
46
+ },
47
+ },
48
+ expectedWorkflowPollers : 3 ,
49
+ expectedActivityPollers : 5 ,
50
+ expectedSingleWorkerMode : true ,
51
+ },
52
+ }
53
+
54
+ for _ , tt := range tests {
55
+ t .Run (tt .name , func (t * testing.T ) {
56
+ // Simulate the logic from NewWorkflowOrchestrator
57
+ options := tt .inputOptions
58
+ if options == nil {
59
+ options = & DefaultOptions
60
+ }
61
+
62
+ // Enable SingleWorkerMode automatically for the orchestrator
63
+ orchestratorOptions := * options
64
+ orchestratorOptions .SingleWorkerMode = true
65
+
66
+ // Set default pollers to 1 for orchestrator mode (unless explicitly overridden)
67
+ if orchestratorOptions .WorkflowPollers == DefaultOptions .WorkflowPollers {
68
+ orchestratorOptions .WorkflowPollers = 1
69
+ }
70
+ if orchestratorOptions .ActivityPollers == DefaultOptions .ActivityPollers {
71
+ orchestratorOptions .ActivityPollers = 1
72
+ }
73
+
74
+ // Verify the results
75
+ require .Equal (t , tt .expectedWorkflowPollers , orchestratorOptions .WorkflowPollers )
76
+ require .Equal (t , tt .expectedActivityPollers , orchestratorOptions .ActivityPollers )
77
+ require .Equal (t , tt .expectedSingleWorkerMode , orchestratorOptions .SingleWorkerMode )
78
+ })
79
+ }
80
+ }
0 commit comments