@@ -604,6 +604,69 @@ test('ContinueAsNew with version upgrade', async (t) => {
604604 await worker2Promise ;
605605} ) ;
606606
607+ test ( 'ContinueAsNew with ramping version' , async ( t ) => {
608+ const taskQueue = 'can-ramping-version-' + randomUUID ( ) ;
609+ const deploymentName = 'deployment-can-ramping-' + randomUUID ( ) ;
610+ const { client, nativeConnection } = t . context . env ;
611+ const { createNativeConnection } = helpers ( t ) ;
612+
613+ const v1 = { buildId : '1.0' , deploymentName } ;
614+ const v2 = { buildId : '2.0' , deploymentName } ;
615+
616+ const worker1 = await Worker . create ( {
617+ workflowsPath : require . resolve ( './deployment-versioning-can-v1' ) ,
618+ taskQueue,
619+ workerDeploymentOptions : {
620+ useWorkerVersioning : true ,
621+ version : v1 ,
622+ defaultVersioningBehavior : 'PINNED' ,
623+ } ,
624+ connection : nativeConnection ,
625+ } ) ;
626+ const worker1Promise = worker1 . run ( ) ;
627+ worker1Promise . catch ( ( err ) => t . fail ( 'Worker 1.0 error: ' + err ) ) ;
628+
629+ const worker2Connection = await createNativeConnection ( ) ;
630+ t . teardown ( ( ) => worker2Connection . close ( ) ) ;
631+ const worker2 = await Worker . create ( {
632+ workflowsPath : require . resolve ( './deployment-versioning-can-v2' ) ,
633+ taskQueue,
634+ workerDeploymentOptions : {
635+ useWorkerVersioning : true ,
636+ version : v2 ,
637+ defaultVersioningBehavior : 'PINNED' ,
638+ } ,
639+ connection : worker2Connection ,
640+ } ) ;
641+ const worker2Promise = worker2 . run ( ) ;
642+ worker2Promise . catch ( ( err ) => t . fail ( 'Worker 2.0 error: ' + err ) ) ;
643+
644+ const describeResp1 = await waitUntilWorkerDeploymentVisible ( client , v1 ) ;
645+ const setResp1 = await setCurrentDeploymentVersion ( client , describeResp1 . conflictToken , v1 ) ;
646+ await waitForRoutingConfigPropagation ( client , deploymentName , v1 . buildId ) ;
647+
648+ const handle = await client . workflow . start ( 'continueAsNewWithRampingVersion' , {
649+ args : [ 0 ] ,
650+ taskQueue,
651+ workflowId : 'can-ramping-version-' + randomUUID ( ) ,
652+ } ) ;
653+ await waitForWorkflowRunningOnVersion ( client , handle , v1 . buildId ) ;
654+
655+ await waitUntilWorkerDeploymentVisible ( client , v2 ) ;
656+ await setRampingVersion ( client , setResp1 . conflictToken , v2 , 0 ) ;
657+ await waitForRoutingConfigPropagation ( client , deploymentName , v1 . buildId , v2 . buildId ) ;
658+
659+ await handle . signal ( unblockSignal ) ;
660+
661+ const result = await handle . result ( ) ;
662+ t . is ( result , 'v2.0' ) ;
663+
664+ worker1 . shutdown ( ) ;
665+ worker2 . shutdown ( ) ;
666+ await worker1Promise ;
667+ await worker2Promise ;
668+ } ) ;
669+
607670///////////////////////////////
608671
609672/**
0 commit comments