@@ -37,7 +37,7 @@ describe('reducePollerTypes', () => {
3737 } ) ;
3838 } ) ;
3939
40- it ( 'should combine activity and workflow pollers' , ( ) => {
40+ it ( 'should combine activity and workflow pollers with same identity ' , ( ) => {
4141 const result = reducePollerTypes ( {
4242 activityPollers : {
4343 pollers : [ { identity : '1' , lastAccessTime : 2 } ] ,
@@ -57,14 +57,14 @@ describe('reducePollerTypes', () => {
5757 pollers : [
5858 {
5959 identity : '1' ,
60- lastAccessTime : 2 ,
60+ lastAccessTime : 3 ,
6161 taskQueueTypes : [ 'WORKFLOW' , 'ACTIVITY' ] ,
6262 } ,
6363 ] ,
6464 } ) ;
6565 } ) ;
6666
67- it ( 'should combine nexus and workflow pollers' , ( ) => {
67+ it ( 'should combine nexus and workflow pollers with same identity ' , ( ) => {
6868 const result = reducePollerTypes ( {
6969 activityPollers : {
7070 versioningInfo,
@@ -84,14 +84,14 @@ describe('reducePollerTypes', () => {
8484 pollers : [
8585 {
8686 identity : '1' ,
87- lastAccessTime : 2 ,
87+ lastAccessTime : 3 ,
8888 taskQueueTypes : [ 'WORKFLOW' , 'NEXUS' ] ,
8989 } ,
9090 ] ,
9191 } ) ;
9292 } ) ;
9393
94- it ( 'should combine all poller types' , ( ) => {
94+ it ( 'should combine all poller types with same identity ' , ( ) => {
9595 const result = reducePollerTypes ( {
9696 activityPollers : {
9797 pollers : [ { identity : '1' , lastAccessTime : 2 } ] ,
@@ -112,7 +112,7 @@ describe('reducePollerTypes', () => {
112112 pollers : [
113113 {
114114 identity : '1' ,
115- lastAccessTime : 2 ,
115+ lastAccessTime : 4 ,
116116 taskQueueTypes : [ 'WORKFLOW' , 'ACTIVITY' , 'NEXUS' ] ,
117117 } ,
118118 ] ,
@@ -131,4 +131,152 @@ describe('reducePollerTypes', () => {
131131 pollers : [ ] ,
132132 } ) ;
133133 } ) ;
134+
135+ it ( 'should return separate workers when identities differ' , ( ) => {
136+ const result = reducePollerTypes ( {
137+ workflowPollers : {
138+ pollers : [
139+ {
140+ identity : '124@Mac.local.net' ,
141+ lastAccessTime : '2025-12-10T15:55:38.544049618Z' ,
142+ } ,
143+ ] ,
144+ versioningInfo,
145+ } ,
146+ activityPollers : {
147+ pollers : [
148+ {
149+ identity : '345@Mac.local.net' ,
150+ lastAccessTime : '2025-12-10T15:55:39.802086504Z' ,
151+ } ,
152+ ] ,
153+ versioningInfo,
154+ } ,
155+ nexusPollers : {
156+ pollers : [
157+ {
158+ identity : '678@Mac.local.net' ,
159+ lastAccessTime : '2025-12-10T15:55:40.000000000Z' ,
160+ } ,
161+ ] ,
162+ versioningInfo,
163+ } ,
164+ } ) ;
165+ expect ( result . pollers ) . toHaveLength ( 3 ) ;
166+ expect ( result . pollers ) . toContainEqual ( {
167+ identity : '124@Mac.local.net' ,
168+ lastAccessTime : '2025-12-10T15:55:38.544049618Z' ,
169+ taskQueueTypes : [ 'WORKFLOW' ] ,
170+ } ) ;
171+ expect ( result . pollers ) . toContainEqual ( {
172+ identity : '345@Mac.local.net' ,
173+ lastAccessTime : '2025-12-10T15:55:39.802086504Z' ,
174+ taskQueueTypes : [ 'ACTIVITY' ] ,
175+ } ) ;
176+ expect ( result . pollers ) . toContainEqual ( {
177+ identity : '678@Mac.local.net' ,
178+ lastAccessTime : '2025-12-10T15:55:40.000000000Z' ,
179+ taskQueueTypes : [ 'NEXUS' ] ,
180+ } ) ;
181+ } ) ;
182+
183+ it ( 'should handle mix of shared and different identities' , ( ) => {
184+ const result = reducePollerTypes ( {
185+ workflowPollers : {
186+ pollers : [
187+ { identity : 'shared@host' , lastAccessTime : 1 } ,
188+ { identity : 'workflow-only@host' , lastAccessTime : 2 } ,
189+ ] ,
190+ versioningInfo,
191+ } ,
192+ activityPollers : {
193+ pollers : [
194+ { identity : 'shared@host' , lastAccessTime : 3 } ,
195+ { identity : 'activity-only@host' , lastAccessTime : 4 } ,
196+ ] ,
197+ versioningInfo,
198+ } ,
199+ nexusPollers : {
200+ pollers : [
201+ { identity : 'shared@host' , lastAccessTime : 5 } ,
202+ { identity : 'nexus-only@host' , lastAccessTime : 6 } ,
203+ ] ,
204+ versioningInfo,
205+ } ,
206+ } ) ;
207+ expect ( result . pollers ) . toHaveLength ( 4 ) ;
208+ expect ( result . pollers ) . toContainEqual ( {
209+ identity : 'shared@host' ,
210+ lastAccessTime : 5 ,
211+ taskQueueTypes : [ 'WORKFLOW' , 'ACTIVITY' , 'NEXUS' ] ,
212+ } ) ;
213+ expect ( result . pollers ) . toContainEqual ( {
214+ identity : 'workflow-only@host' ,
215+ lastAccessTime : 2 ,
216+ taskQueueTypes : [ 'WORKFLOW' ] ,
217+ } ) ;
218+ expect ( result . pollers ) . toContainEqual ( {
219+ identity : 'activity-only@host' ,
220+ lastAccessTime : 4 ,
221+ taskQueueTypes : [ 'ACTIVITY' ] ,
222+ } ) ;
223+ expect ( result . pollers ) . toContainEqual ( {
224+ identity : 'nexus-only@host' ,
225+ lastAccessTime : 6 ,
226+ taskQueueTypes : [ 'NEXUS' ] ,
227+ } ) ;
228+ } ) ;
229+
230+ it ( 'should return only nexus pollers if only nexus pollers' , ( ) => {
231+ const result = reducePollerTypes ( {
232+ workflowPollers : {
233+ versioningInfo,
234+ } ,
235+ activityPollers : {
236+ versioningInfo,
237+ } ,
238+ nexusPollers : {
239+ pollers : [ { identity : '1' , lastAccessTime : 1 } ] ,
240+ versioningInfo,
241+ } ,
242+ } ) ;
243+ expect ( result ) . toEqual ( {
244+ versioningInfo,
245+ taskQueueStatus,
246+ pollers : [
247+ {
248+ identity : '1' ,
249+ lastAccessTime : 1 ,
250+ taskQueueTypes : [ 'NEXUS' ] ,
251+ } ,
252+ ] ,
253+ } ) ;
254+ } ) ;
255+
256+ it ( 'should combine nexus and activity pollers with same identity' , ( ) => {
257+ const result = reducePollerTypes ( {
258+ workflowPollers : {
259+ versioningInfo,
260+ } ,
261+ activityPollers : {
262+ pollers : [ { identity : '1' , lastAccessTime : 2 } ] ,
263+ versioningInfo,
264+ } ,
265+ nexusPollers : {
266+ pollers : [ { identity : '1' , lastAccessTime : 3 } ] ,
267+ versioningInfo,
268+ } ,
269+ } ) ;
270+ expect ( result ) . toEqual ( {
271+ versioningInfo,
272+ taskQueueStatus,
273+ pollers : [
274+ {
275+ identity : '1' ,
276+ lastAccessTime : 3 ,
277+ taskQueueTypes : [ 'ACTIVITY' , 'NEXUS' ] ,
278+ } ,
279+ ] ,
280+ } ) ;
281+ } ) ;
134282} ) ;
0 commit comments