1
- import { Inputs , MemoizationStatus , NodePhase , NodeStatus , NodeType , Outputs , RetryStrategy } from '../../models' ;
1
+ import { NodeStatus , Workflow } from '../../models' ;
2
+ import { ANNOTATION_KEY_POD_NAME_VERSION } from './annotations' ;
3
+
2
4
import { createFNVHash , ensurePodNamePrefixLength , getPodName , getTemplateNameFromNode , k8sNamingHashLength , maxK8sResourceNameLength , POD_NAME_V1 , POD_NAME_V2 } from './pod-name' ;
3
5
4
6
describe ( 'pod names' , ( ) => {
@@ -9,9 +11,6 @@ describe('pod names', () => {
9
11
} ) ;
10
12
11
13
// note: the below is intended to be equivalent to the server-side Go code in workflow/util/pod_name_test.go
12
- const nodeName = 'nodename' ;
13
- const nodeID = '1' ;
14
-
15
14
const shortWfName = 'wfname' ;
16
15
const shortTemplateName = 'templatename' ;
17
16
@@ -29,66 +28,51 @@ describe('pod names', () => {
29
28
} ) ;
30
29
31
30
test ( 'getPodName' , ( ) => {
32
- const v1podName = nodeID ;
33
- const v2podName = `${ shortWfName } -${ shortTemplateName } -${ createFNVHash ( nodeName ) } ` ;
34
- expect ( getPodName ( shortWfName , nodeName , shortTemplateName , nodeID , POD_NAME_V2 ) ) . toEqual ( v2podName ) ;
35
- expect ( getPodName ( shortWfName , nodeName , shortTemplateName , nodeID , POD_NAME_V1 ) ) . toEqual ( v1podName ) ;
36
- expect ( getPodName ( shortWfName , nodeName , shortTemplateName , nodeID , '' ) ) . toEqual ( v2podName ) ;
37
- expect ( getPodName ( shortWfName , nodeName , shortTemplateName , nodeID , undefined ) ) . toEqual ( v2podName ) ;
31
+ const node = {
32
+ name : 'nodename' ,
33
+ id : '1' ,
34
+ templateName : shortTemplateName
35
+ } as unknown as NodeStatus ;
36
+ const wf = {
37
+ metadata : {
38
+ name : shortWfName ,
39
+ annotations : {
40
+ [ ANNOTATION_KEY_POD_NAME_VERSION ] : POD_NAME_V1
41
+ }
42
+ }
43
+ } as unknown as Workflow ;
44
+
45
+ const v1podName = node . id ;
46
+ const v2podName = `${ shortWfName } -${ shortTemplateName } -${ createFNVHash ( node . name ) } ` ;
47
+
48
+ expect ( getPodName ( wf , node ) ) . toEqual ( v1podName ) ;
49
+ wf . metadata . annotations [ ANNOTATION_KEY_POD_NAME_VERSION ] = POD_NAME_V2 ;
50
+ expect ( getPodName ( wf , node ) ) . toEqual ( v2podName ) ;
51
+ wf . metadata . annotations [ ANNOTATION_KEY_POD_NAME_VERSION ] = '' ;
52
+ expect ( getPodName ( wf , node ) ) . toEqual ( v2podName ) ;
53
+ delete wf . metadata . annotations ;
54
+ expect ( getPodName ( wf , node ) ) . toEqual ( v2podName ) ;
38
55
39
- const name = getPodName ( longWfName , nodeName , longTemplateName , nodeID , POD_NAME_V2 ) ;
56
+ wf . metadata . name = longWfName ;
57
+ node . templateName = longTemplateName ;
58
+ const name = getPodName ( wf , node ) ;
40
59
expect ( name . length ) . toEqual ( maxK8sResourceNameLength ) ;
41
60
} ) ;
42
61
43
62
test ( 'getTemplateNameFromNode' , ( ) => {
44
63
// case: no template ref or template name
45
64
// expect fallback to empty string
46
- const nodeType : NodeType = 'Pod' ;
47
- const nodePhase : NodePhase = 'Succeeded' ;
48
- const retryStrategy : RetryStrategy = { } ;
49
- const outputs : Outputs = { } ;
50
- const inputs : Inputs = { } ;
51
- const memoizationStatus : MemoizationStatus = {
52
- hit : false ,
53
- key : 'key' ,
54
- cacheName : 'cache'
55
- } ;
56
-
57
- const node : NodeStatus = {
58
- id : 'patch-processing-pipeline-ksp78-1623891970' ,
59
- name : 'patch-processing-pipeline-ksp78.retriable-map-authoring-initializer' ,
60
- displayName : 'retriable-map-authoring-initializer' ,
61
- type : nodeType ,
62
- templateScope : 'local/' ,
63
- phase : nodePhase ,
64
- boundaryID : '' ,
65
- message : '' ,
66
- startedAt : '' ,
67
- finishedAt : '' ,
68
- podIP : '' ,
69
- daemoned : false ,
70
- retryStrategy,
71
- outputs,
72
- children : [ ] ,
73
- outboundNodes : [ ] ,
74
- templateName : '' ,
75
- inputs,
76
- hostNodeName : '' ,
77
- memoizationStatus
78
- } ;
79
-
65
+ const node = { } as unknown as NodeStatus ;
80
66
expect ( getTemplateNameFromNode ( node ) ) . toEqual ( '' ) ;
81
67
82
68
// case: template ref defined but no template name defined
83
- // expect to return templateRef.template
84
69
node . templateRef = {
85
70
name : 'test-template-name' ,
86
71
template : 'test-template-template'
87
72
} ;
88
73
expect ( getTemplateNameFromNode ( node ) ) . toEqual ( node . templateRef . template ) ;
89
74
90
75
// case: template name defined
91
- // expect to return templateName
92
76
node . templateName = 'test-template' ;
93
77
expect ( getTemplateNameFromNode ( node ) ) . toEqual ( node . templateName ) ;
94
78
} ) ;
0 commit comments