teraslice 3.3.0 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/LICENSE +202 -0
  2. package/package.json +25 -28
  3. package/dist/src/interfaces.js +0 -12
  4. package/dist/src/lib/cluster/cluster_master.js +0 -246
  5. package/dist/src/lib/cluster/node_master.js +0 -355
  6. package/dist/src/lib/cluster/services/api.js +0 -663
  7. package/dist/src/lib/cluster/services/assets.js +0 -224
  8. package/dist/src/lib/cluster/services/cluster/backends/kubernetesV2/index.js +0 -192
  9. package/dist/src/lib/cluster/services/cluster/backends/kubernetesV2/interfaces.js +0 -2
  10. package/dist/src/lib/cluster/services/cluster/backends/kubernetesV2/k8s.js +0 -419
  11. package/dist/src/lib/cluster/services/cluster/backends/kubernetesV2/k8sDeploymentResource.js +0 -60
  12. package/dist/src/lib/cluster/services/cluster/backends/kubernetesV2/k8sJobResource.js +0 -55
  13. package/dist/src/lib/cluster/services/cluster/backends/kubernetesV2/k8sResource.js +0 -357
  14. package/dist/src/lib/cluster/services/cluster/backends/kubernetesV2/k8sServiceResource.js +0 -37
  15. package/dist/src/lib/cluster/services/cluster/backends/kubernetesV2/k8sState.js +0 -60
  16. package/dist/src/lib/cluster/services/cluster/backends/kubernetesV2/utils.js +0 -170
  17. package/dist/src/lib/cluster/services/cluster/backends/native/dispatch.js +0 -13
  18. package/dist/src/lib/cluster/services/cluster/backends/native/index.js +0 -526
  19. package/dist/src/lib/cluster/services/cluster/backends/native/messaging.js +0 -548
  20. package/dist/src/lib/cluster/services/cluster/backends/state-utils.js +0 -26
  21. package/dist/src/lib/cluster/services/cluster/index.js +0 -13
  22. package/dist/src/lib/cluster/services/execution.js +0 -435
  23. package/dist/src/lib/cluster/services/index.js +0 -6
  24. package/dist/src/lib/cluster/services/interfaces.js +0 -2
  25. package/dist/src/lib/cluster/services/jobs.js +0 -458
  26. package/dist/src/lib/config/default-sysconfig.js +0 -25
  27. package/dist/src/lib/config/index.js +0 -20
  28. package/dist/src/lib/config/schemas/system.js +0 -360
  29. package/dist/src/lib/storage/analytics.js +0 -86
  30. package/dist/src/lib/storage/assets.js +0 -401
  31. package/dist/src/lib/storage/backends/elasticsearch_store.js +0 -496
  32. package/dist/src/lib/storage/backends/mappings/analytics.js +0 -20
  33. package/dist/src/lib/storage/backends/mappings/asset.js +0 -32
  34. package/dist/src/lib/storage/backends/mappings/ex.js +0 -53
  35. package/dist/src/lib/storage/backends/mappings/job.js +0 -42
  36. package/dist/src/lib/storage/backends/mappings/state.js +0 -16
  37. package/dist/src/lib/storage/backends/s3_store.js +0 -237
  38. package/dist/src/lib/storage/execution.js +0 -302
  39. package/dist/src/lib/storage/index.js +0 -7
  40. package/dist/src/lib/storage/jobs.js +0 -81
  41. package/dist/src/lib/storage/state.js +0 -254
  42. package/dist/src/lib/utils/api_utils.js +0 -128
  43. package/dist/src/lib/utils/asset_utils.js +0 -94
  44. package/dist/src/lib/utils/date_utils.js +0 -52
  45. package/dist/src/lib/utils/encoding_utils.js +0 -27
  46. package/dist/src/lib/utils/events.js +0 -4
  47. package/dist/src/lib/utils/file_utils.js +0 -124
  48. package/dist/src/lib/utils/id_utils.js +0 -15
  49. package/dist/src/lib/utils/port_utils.js +0 -32
  50. package/dist/src/lib/workers/assets/index.js +0 -3
  51. package/dist/src/lib/workers/assets/loader-executable.js +0 -40
  52. package/dist/src/lib/workers/assets/loader.js +0 -73
  53. package/dist/src/lib/workers/assets/spawn.js +0 -55
  54. package/dist/src/lib/workers/context/execution-context.js +0 -12
  55. package/dist/src/lib/workers/context/terafoundation-context.js +0 -8
  56. package/dist/src/lib/workers/execution-controller/execution-analytics.js +0 -188
  57. package/dist/src/lib/workers/execution-controller/index.js +0 -1024
  58. package/dist/src/lib/workers/execution-controller/recovery.js +0 -151
  59. package/dist/src/lib/workers/execution-controller/scheduler.js +0 -390
  60. package/dist/src/lib/workers/execution-controller/slice-analytics.js +0 -96
  61. package/dist/src/lib/workers/helpers/job.js +0 -80
  62. package/dist/src/lib/workers/helpers/op-analytics.js +0 -22
  63. package/dist/src/lib/workers/helpers/terafoundation.js +0 -34
  64. package/dist/src/lib/workers/helpers/worker-shutdown.js +0 -147
  65. package/dist/src/lib/workers/metrics/index.js +0 -108
  66. package/dist/src/lib/workers/worker/index.js +0 -378
  67. package/dist/src/lib/workers/worker/slice.js +0 -122
  68. package/dist/test/config/schemas/system_schema-spec.js +0 -26
  69. package/dist/test/lib/cluster/services/cluster/backends/kubernetes/v2/k8s-v2-spec.js +0 -458
  70. package/dist/test/lib/cluster/services/cluster/backends/kubernetes/v2/k8sResource-v2-spec.js +0 -818
  71. package/dist/test/lib/cluster/services/cluster/backends/kubernetes/v2/k8sState-multicluster-v2-spec.js +0 -67
  72. package/dist/test/lib/cluster/services/cluster/backends/kubernetes/v2/k8sState-v2-spec.js +0 -84
  73. package/dist/test/lib/cluster/services/cluster/backends/kubernetes/v2/utils-v2-spec.js +0 -320
  74. package/dist/test/lib/cluster/services/cluster/backends/state-utils-spec.js +0 -37
  75. package/dist/test/node_master-spec.js +0 -194
  76. package/dist/test/services/api-spec.js +0 -79
  77. package/dist/test/services/assets-spec.js +0 -158
  78. package/dist/test/services/messaging-spec.js +0 -440
  79. package/dist/test/storage/assets_storage-spec.js +0 -95
  80. package/dist/test/storage/s3_store-spec.js +0 -149
  81. package/dist/test/test.config.js +0 -23
  82. package/dist/test/test.setup.js +0 -6
  83. package/dist/test/utils/api_utils-spec.js +0 -25
  84. package/dist/test/utils/asset_utils-spec.js +0 -141
  85. package/dist/test/utils/elastic_utils-spec.js +0 -25
  86. package/dist/test/workers/execution-controller/execution-controller-spec.js +0 -371
  87. package/dist/test/workers/execution-controller/execution-special-test-cases-spec.js +0 -519
  88. package/dist/test/workers/execution-controller/execution-test-cases-spec.js +0 -343
  89. package/dist/test/workers/execution-controller/recovery-spec.js +0 -160
  90. package/dist/test/workers/execution-controller/scheduler-spec.js +0 -249
  91. package/dist/test/workers/execution-controller/slice-analytics-spec.js +0 -121
  92. package/dist/test/workers/fixtures/ops/example-op/processor.js +0 -20
  93. package/dist/test/workers/fixtures/ops/example-op/schema.js +0 -19
  94. package/dist/test/workers/fixtures/ops/example-reader/fetcher.js +0 -20
  95. package/dist/test/workers/fixtures/ops/example-reader/schema.js +0 -41
  96. package/dist/test/workers/fixtures/ops/example-reader/slicer.js +0 -37
  97. package/dist/test/workers/fixtures/ops/new-op/processor.js +0 -29
  98. package/dist/test/workers/fixtures/ops/new-op/schema.js +0 -18
  99. package/dist/test/workers/fixtures/ops/new-reader/fetcher.js +0 -19
  100. package/dist/test/workers/fixtures/ops/new-reader/schema.js +0 -23
  101. package/dist/test/workers/fixtures/ops/new-reader/slicer.js +0 -13
  102. package/dist/test/workers/helpers/configs.js +0 -128
  103. package/dist/test/workers/helpers/execution-controller-helper.js +0 -49
  104. package/dist/test/workers/helpers/index.js +0 -5
  105. package/dist/test/workers/helpers/test-context.js +0 -210
  106. package/dist/test/workers/helpers/zip-directory.js +0 -25
  107. package/dist/test/workers/worker/slice-spec.js +0 -333
  108. package/dist/test/workers/worker/worker-spec.js +0 -356
@@ -1,67 +0,0 @@
1
- import { cloneDeep } from '@terascope/core-utils';
2
- import _podsJobRunning from '../files/job-running-v1-k8s-pods-multicluster.json';
3
- import { gen } from '../../../../../../../../src/lib/cluster/services/cluster/backends/kubernetesV2/k8sState.js';
4
- describe('k8sState with pods from multiple clusters', () => {
5
- it('should generate cluster state correctly on first call', () => {
6
- const podsJobRunning = cloneDeep(_podsJobRunning);
7
- const clusterState = {};
8
- gen(podsJobRunning, clusterState);
9
- // console.log(`clusterState\n\n${JSON.stringify(clusterState, null, 2)}`);
10
- // console.log(JSON.stringify(podsJobRunning, null, 2));
11
- expect(clusterState['192.168.99.100'].state).toEqual('connected');
12
- expect(clusterState['192.168.99.100'].active.length).toEqual(3);
13
- expect(clusterState['192.168.99.100'].active[1])
14
- .toEqual({
15
- worker_id: 'teraslice-execution_controller-123456-784cbt5mz',
16
- assignment: 'execution_controller',
17
- pod_name: 'teraslice-execution_controller-123456-784cbt5mz',
18
- ex_id: '123456',
19
- job_id: '654321',
20
- pod_ip: '172.17.0.5',
21
- assets: [],
22
- image: 'docker.registry.example/teraslice:0.0.0'
23
- });
24
- expect(clusterState['192.168.99.100'].active[2])
25
- .toEqual({
26
- worker_id: 'teraslice-worker-123456-8b68v7p8t',
27
- assignment: 'worker',
28
- pod_name: 'teraslice-worker-123456-8b68v7p8t',
29
- ex_id: '123456',
30
- job_id: '654321',
31
- pod_ip: '172.17.0.6',
32
- assets: [],
33
- image: 'docker.registry.example/teraslice:0.0.0'
34
- });
35
- });
36
- it('should generate cluster state correctly on second call', () => {
37
- const podsJobRunning = cloneDeep(_podsJobRunning);
38
- const clusterState = {};
39
- gen(podsJobRunning, clusterState);
40
- gen(podsJobRunning, clusterState);
41
- expect(clusterState['192.168.99.100'].state).toEqual('connected');
42
- expect(clusterState['192.168.99.100'].active.length).toEqual(3);
43
- expect(clusterState['192.168.99.100'].active[1])
44
- .toEqual({
45
- worker_id: 'teraslice-execution_controller-123456-784cbt5mz',
46
- assignment: 'execution_controller',
47
- pod_name: 'teraslice-execution_controller-123456-784cbt5mz',
48
- ex_id: '123456',
49
- job_id: '654321',
50
- pod_ip: '172.17.0.5',
51
- assets: [],
52
- image: 'docker.registry.example/teraslice:0.0.0'
53
- });
54
- expect(clusterState['192.168.99.100'].active[2])
55
- .toEqual({
56
- worker_id: 'teraslice-worker-123456-8b68v7p8t',
57
- assignment: 'worker',
58
- pod_name: 'teraslice-worker-123456-8b68v7p8t',
59
- ex_id: '123456',
60
- job_id: '654321',
61
- pod_ip: '172.17.0.6',
62
- assets: [],
63
- image: 'docker.registry.example/teraslice:0.0.0'
64
- });
65
- });
66
- });
67
- //# sourceMappingURL=k8sState-multicluster-v2-spec.js.map
@@ -1,84 +0,0 @@
1
- import { cloneDeep } from '@terascope/core-utils';
2
- import _podsJobRunning from '../files/job-running-v1-k8s-pods.json';
3
- import { gen } from '../../../../../../../../src/lib/cluster/services/cluster/backends/kubernetesV2/k8sState.js';
4
- describe('k8sState', () => {
5
- it('should generate cluster state correctly on first call', () => {
6
- const podsJobRunning = cloneDeep(_podsJobRunning);
7
- const clusterState = {};
8
- gen(podsJobRunning, clusterState);
9
- // console.log(`clusterState\n\n${JSON.stringify(clusterState, null, 2)}`);
10
- expect(clusterState['192.168.99.100'].state).toEqual('connected');
11
- expect(clusterState['192.168.99.100'].active.length).toEqual(3);
12
- expect(clusterState['192.168.99.100'].active[1])
13
- .toEqual({
14
- worker_id: 'teraslice-execution_controller-123456-784cbt5mz',
15
- assignment: 'execution_controller',
16
- pod_name: 'teraslice-execution_controller-123456-784cbt5mz',
17
- ex_id: '123456',
18
- job_id: '654321',
19
- pod_ip: '172.17.0.5',
20
- assets: [],
21
- image: 'docker.registry.example/teraslice:0.0.0'
22
- });
23
- expect(clusterState['192.168.99.100'].active[2])
24
- .toEqual({
25
- worker_id: 'teraslice-worker-123456-8b68v7p8t',
26
- assignment: 'worker',
27
- pod_name: 'teraslice-worker-123456-8b68v7p8t',
28
- ex_id: '123456',
29
- job_id: '654321',
30
- pod_ip: '172.17.0.6',
31
- assets: [],
32
- image: 'docker.registry.example/teraslice:0.0.0'
33
- });
34
- });
35
- it('should generate cluster state correctly on second call', () => {
36
- const podsJobRunning = cloneDeep(_podsJobRunning);
37
- const clusterState = {};
38
- gen(podsJobRunning, clusterState);
39
- gen(podsJobRunning, clusterState);
40
- expect(clusterState['192.168.99.100'].state).toEqual('connected');
41
- expect(clusterState['192.168.99.100'].active.length).toEqual(3);
42
- expect(clusterState['192.168.99.100'].active[1])
43
- .toEqual({
44
- worker_id: 'teraslice-execution_controller-123456-784cbt5mz',
45
- assignment: 'execution_controller',
46
- pod_name: 'teraslice-execution_controller-123456-784cbt5mz',
47
- ex_id: '123456',
48
- job_id: '654321',
49
- pod_ip: '172.17.0.5',
50
- assets: [],
51
- image: 'docker.registry.example/teraslice:0.0.0'
52
- });
53
- expect(clusterState['192.168.99.100'].active[2])
54
- .toEqual({
55
- worker_id: 'teraslice-worker-123456-8b68v7p8t',
56
- assignment: 'worker',
57
- pod_name: 'teraslice-worker-123456-8b68v7p8t',
58
- ex_id: '123456',
59
- job_id: '654321',
60
- pod_ip: '172.17.0.6',
61
- assets: [],
62
- image: 'docker.registry.example/teraslice:0.0.0'
63
- });
64
- });
65
- it('should remove old host ips', () => {
66
- const podsJobRunning = cloneDeep(_podsJobRunning);
67
- const clusterState = {};
68
- clusterState['2.2.2.2'] = {
69
- node_id: '2.2.2.2',
70
- hostname: '2.2.2.2',
71
- pid: 'N/A',
72
- node_version: 'N/A',
73
- teraslice_version: 'N/A',
74
- total: 'N/A',
75
- state: 'idk',
76
- available: 'N/A',
77
- active: []
78
- };
79
- gen(podsJobRunning, clusterState);
80
- expect(clusterState['192.168.99.100'].active.length).toEqual(3);
81
- expect(clusterState['2.2.2.2']).toBeUndefined();
82
- });
83
- });
84
- //# sourceMappingURL=k8sState-v2-spec.js.map
@@ -1,320 +0,0 @@
1
- import { makeTemplate, getMaxOldSpace } from '../../../../../../../../src/lib/cluster/services/cluster/backends/kubernetesV2/utils.js';
2
- import { safeEncode } from '../../../../../../../../src/lib/utils/encoding_utils.js';
3
- describe('K8s Utils', () => {
4
- describe('->makeTemplate', () => {
5
- describe('execution_controller job', () => {
6
- it('should be able to support the execution_controller job', () => {
7
- const exJobTemplate = makeTemplate('jobs', 'execution_controller');
8
- const config = {
9
- clusterName: 'teracluster',
10
- configMapName: 'teracluster-worker',
11
- exName: 'ts-exc-example-job-74ab9324-9f67',
12
- exUid: '0512dae5-8ca2-437d-b744-fdc50695fd91',
13
- replicas: 1,
14
- name: 'example',
15
- jobNameLabel: 'example-job',
16
- clusterNameLabel: 'example-cluster',
17
- exId: 'some-ex-id',
18
- jobId: 'some-job-id',
19
- nodeType: 'execution_controller',
20
- namespace: 'some-namespace',
21
- dockerImage: 'some/docker-image',
22
- execution: safeEncode({ example: 'hello' }),
23
- shutdownTimeout: 12345
24
- };
25
- const exJob = exJobTemplate(config);
26
- expect(exJob.kind).toEqual('Job');
27
- expect(exJob.metadata).toEqual({
28
- labels: {
29
- 'app.kubernetes.io/name': 'teraslice',
30
- 'app.kubernetes.io/component': config.nodeType,
31
- 'teraslice.terascope.io/exId': config.exId,
32
- 'teraslice.terascope.io/jobId': config.jobId,
33
- 'teraslice.terascope.io/jobName': config.jobNameLabel,
34
- 'app.kubernetes.io/instance': config.clusterNameLabel
35
- },
36
- name: config.name,
37
- namespace: config.namespace
38
- });
39
- expect(exJob.spec.template.metadata.labels).toEqual(exJob.metadata.labels);
40
- const templateSpec = exJob.spec.template.spec;
41
- expect(templateSpec.containers[0].image).toEqual(config.dockerImage);
42
- expect(templateSpec.containers[0].name).toEqual(config.name);
43
- expect(templateSpec.containers[0].env).toEqual([
44
- {
45
- name: 'NODE_TYPE',
46
- value: config.nodeType
47
- },
48
- {
49
- name: 'EX',
50
- value: config.execution
51
- },
52
- {
53
- name: 'POD_IP',
54
- valueFrom: {
55
- fieldRef: {
56
- fieldPath: 'status.podIP'
57
- }
58
- }
59
- }
60
- ]);
61
- expect(templateSpec.terminationGracePeriodSeconds).toEqual(config.shutdownTimeout);
62
- });
63
- it('should throw error if docker image undefined on config for job', () => {
64
- const exJobTemplate = makeTemplate('jobs', 'execution_controller');
65
- const config = {
66
- clusterName: 'teracluster',
67
- configMapName: 'teracluster-worker',
68
- exName: 'ts-exc-example-job-74ab9324-9f67',
69
- exUid: '0512dae5-8ca2-437d-b744-fdc50695fd91',
70
- replicas: 1,
71
- name: 'example',
72
- jobNameLabel: 'example-job',
73
- clusterNameLabel: 'example-cluster',
74
- exId: 'some-ex-id',
75
- jobId: 'some-job-id',
76
- nodeType: 'execution_controller',
77
- namespace: 'some-namespace',
78
- dockerImage: undefined,
79
- execution: safeEncode({ example: 'hello' }),
80
- shutdownTimeout: 12345
81
- };
82
- expect(() => exJobTemplate(config))
83
- .toThrow('K8s config requires a dockerImage to create a jobs template');
84
- });
85
- });
86
- describe('worker deployment', () => {
87
- const workerDeploymentTemplate = makeTemplate('deployments', 'worker');
88
- it('should be able to support the worker deployment', () => {
89
- const config = {
90
- clusterName: 'teracluster',
91
- configMapName: 'teracluster-worker',
92
- name: 'example',
93
- jobNameLabel: 'example-job',
94
- clusterNameLabel: 'example-cluster',
95
- exId: 'some-ex-id',
96
- exName: 'example-job-abcd',
97
- exUid: 'UID1',
98
- jobId: 'some-job-id',
99
- nodeType: 'worker',
100
- namespace: 'some-namespace',
101
- dockerImage: 'some/docker-image',
102
- execution: safeEncode({ example: 'hello' }),
103
- replicas: 1,
104
- shutdownTimeout: 12345
105
- };
106
- const workerDeployment = workerDeploymentTemplate(config);
107
- expect(workerDeployment.kind).toEqual('Deployment');
108
- expect(workerDeployment.metadata).toEqual({
109
- labels: {
110
- 'app.kubernetes.io/name': 'teraslice',
111
- 'app.kubernetes.io/component': config.nodeType,
112
- 'teraslice.terascope.io/exId': config.exId,
113
- 'teraslice.terascope.io/jobId': config.jobId,
114
- 'teraslice.terascope.io/jobName': config.jobNameLabel,
115
- 'app.kubernetes.io/instance': config.clusterNameLabel
116
- },
117
- name: config.name,
118
- namespace: config.namespace,
119
- ownerReferences: [
120
- {
121
- apiVersion: 'batch/v1',
122
- blockOwnerDeletion: false,
123
- controller: false,
124
- kind: 'Job',
125
- name: 'example-job-abcd',
126
- uid: 'UID1',
127
- },
128
- ],
129
- });
130
- expect(workerDeployment.spec.replicas).toEqual(config.replicas);
131
- const labels = workerDeployment.spec.template.metadata.labels;
132
- expect(labels).toEqual(workerDeployment.metadata.labels);
133
- const templateSpec = workerDeployment.spec.template.spec;
134
- expect(templateSpec.containers[0].image).toEqual(config.dockerImage);
135
- expect(templateSpec.containers[0].name).toEqual(config.name);
136
- expect(templateSpec.containers[0].env).toEqual([
137
- {
138
- name: 'NODE_TYPE',
139
- value: config.nodeType
140
- },
141
- {
142
- name: 'EX',
143
- value: config.execution
144
- },
145
- {
146
- name: 'POD_IP',
147
- valueFrom: {
148
- fieldRef: {
149
- fieldPath: 'status.podIP'
150
- }
151
- }
152
- }
153
- ]);
154
- expect(templateSpec.terminationGracePeriodSeconds).toEqual(config.shutdownTimeout);
155
- });
156
- it('should throw error if docker image undefined on config for deployment', () => {
157
- const config = {
158
- clusterName: 'teracluster',
159
- configMapName: 'teracluster-worker',
160
- name: 'example',
161
- jobNameLabel: 'example-job',
162
- clusterNameLabel: 'example-cluster',
163
- exId: 'some-ex-id',
164
- exName: 'example-job-abcd',
165
- exUid: 'UID1',
166
- jobId: 'some-job-id',
167
- nodeType: 'worker',
168
- namespace: 'some-namespace',
169
- dockerImage: undefined,
170
- execution: safeEncode({ example: 'hello' }),
171
- replicas: 1,
172
- shutdownTimeout: 12345
173
- };
174
- expect(() => workerDeploymentTemplate(config))
175
- .toThrow('K8s config requires a dockerImage to create a deployments template');
176
- });
177
- it('should throw error if exName undefined on config for deployment', () => {
178
- const config = {
179
- clusterName: 'teracluster',
180
- configMapName: 'teracluster-worker',
181
- name: 'example',
182
- jobNameLabel: 'example-job',
183
- clusterNameLabel: 'example-cluster',
184
- exId: 'some-ex-id',
185
- exName: undefined,
186
- exUid: 'UID1',
187
- jobId: 'some-job-id',
188
- nodeType: 'worker',
189
- namespace: 'some-namespace',
190
- dockerImage: 'some/docker-image',
191
- execution: safeEncode({ example: 'hello' }),
192
- replicas: 1,
193
- shutdownTimeout: 12345
194
- };
195
- expect(() => workerDeploymentTemplate(config)).toThrow('K8s config requires exName to create a deployments template');
196
- });
197
- it('should throw error if exUid undefined on config for deployment', () => {
198
- const config = {
199
- clusterName: 'teracluster',
200
- configMapName: 'teracluster-worker',
201
- name: 'example',
202
- jobNameLabel: 'example-job',
203
- clusterNameLabel: 'example-cluster',
204
- exId: 'some-ex-id',
205
- exName: 'example-job-abcd',
206
- exUid: undefined,
207
- jobId: 'some-job-id',
208
- nodeType: 'worker',
209
- namespace: 'some-namespace',
210
- dockerImage: 'some/docker-image',
211
- execution: safeEncode({ example: 'hello' }),
212
- replicas: 1,
213
- shutdownTimeout: 12345
214
- };
215
- expect(() => workerDeploymentTemplate(config)).toThrow('K8s config requires exUid to create a deployments template');
216
- });
217
- });
218
- describe('execution_controller service', () => {
219
- const exServiceTemplate = makeTemplate('services', 'execution_controller');
220
- it('should be able to support the execution_controller service', () => {
221
- const config = {
222
- clusterName: 'teracluster',
223
- configMapName: 'teracluster-exService',
224
- name: 'example',
225
- jobNameLabel: 'example-job',
226
- clusterNameLabel: 'example-cluster',
227
- exId: 'some-ex-id',
228
- exName: 'example-job-abcd',
229
- exUid: 'UID1',
230
- jobId: 'some-job-id',
231
- nodeType: 'execution_controller',
232
- namespace: 'some-namespace',
233
- dockerImage: 'some/docker-image',
234
- execution: safeEncode({ example: 'hello' }),
235
- replicas: 1,
236
- shutdownTimeout: 12345
237
- };
238
- const exService = exServiceTemplate(config);
239
- expect(exService.kind).toEqual('Service');
240
- expect(exService.metadata).toEqual({
241
- labels: {
242
- 'app.kubernetes.io/name': 'teraslice',
243
- 'app.kubernetes.io/component': config.nodeType,
244
- 'teraslice.terascope.io/exId': config.exId,
245
- 'teraslice.terascope.io/jobId': config.jobId
246
- },
247
- name: `svc-${config.name}`,
248
- namespace: config.namespace,
249
- ownerReferences: [
250
- {
251
- apiVersion: 'batch/v1',
252
- blockOwnerDeletion: false,
253
- controller: false,
254
- kind: 'Job',
255
- name: 'example-job-abcd',
256
- uid: 'UID1',
257
- },
258
- ],
259
- });
260
- expect(exService.spec.selector).toEqual({
261
- 'app.kubernetes.io/component': 'execution_controller',
262
- 'teraslice.terascope.io/exId': config.exId
263
- });
264
- expect(exService.spec.ports).toEqual([
265
- {
266
- port: 45680,
267
- targetPort: 45680
268
- }
269
- ]);
270
- });
271
- it('should throw error if exName undefined on config for service', () => {
272
- const config = {
273
- clusterName: 'teracluster',
274
- configMapName: 'teracluster-exService',
275
- name: 'example',
276
- jobNameLabel: 'example-job',
277
- clusterNameLabel: 'example-cluster',
278
- exId: 'some-ex-id',
279
- exName: undefined,
280
- exUid: 'UID1',
281
- jobId: 'some-job-id',
282
- nodeType: 'execution_controller',
283
- namespace: 'some-namespace',
284
- dockerImage: 'some/docker-image',
285
- execution: safeEncode({ example: 'hello' }),
286
- replicas: 1,
287
- shutdownTimeout: 12345
288
- };
289
- expect(() => exServiceTemplate(config)).toThrow('K8s config requires exName to create a services template');
290
- });
291
- it('should throw error if exUid undefined on config for service', () => {
292
- const config = {
293
- clusterName: 'teracluster',
294
- configMapName: 'teracluster-exService',
295
- name: 'example',
296
- jobNameLabel: 'example-job',
297
- clusterNameLabel: 'example-cluster',
298
- exId: 'some-ex-id',
299
- exName: 'example-job-abcd',
300
- exUid: undefined,
301
- jobId: 'some-job-id',
302
- nodeType: 'execution_controller',
303
- namespace: 'some-namespace',
304
- dockerImage: 'some/docker-image',
305
- execution: safeEncode({ example: 'hello' }),
306
- replicas: 1,
307
- shutdownTimeout: 12345
308
- };
309
- expect(() => exServiceTemplate(config)).toThrow('K8s config requires exUid to create a services template');
310
- });
311
- });
312
- });
313
- describe('->getMaxOldSpace', () => {
314
- it('should convert bytes to mb', () => {
315
- const oneGBInBytes = 1024 * 1024 * 1024;
316
- expect(getMaxOldSpace(oneGBInBytes)).toEqual(Math.round(0.9 * 1024));
317
- });
318
- });
319
- });
320
- //# sourceMappingURL=utils-v2-spec.js.map
@@ -1,37 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { fileURLToPath } from 'node:url';
4
- import * as stateUtils from '../../../../../../src/lib/cluster/services/cluster/backends/state-utils.js';
5
- const dirname = path.dirname(fileURLToPath(import.meta.url));
6
- const clusterStateFile = path.join(dirname, 'files', 'sample-state.json');
7
- describe('stateUtils', () => {
8
- let clusterState;
9
- beforeEach(() => {
10
- clusterState = JSON.parse(fs.readFileSync(clusterStateFile, 'utf-8'));
11
- });
12
- describe('->iterateState', () => {
13
- it('can filter worker list and return cluster master node', () => {
14
- const workerList = stateUtils.iterateState(clusterState, (worker) => worker.assignment === 'cluster_master');
15
- expect(workerList[0].node_id).toEqual('node1.lan');
16
- });
17
- });
18
- describe('->findAllSlicers', () => {
19
- it('returns the right number of slicers', () => {
20
- const workerList = stateUtils.findAllSlicers(clusterState);
21
- expect(workerList[0].assignment).toEqual('execution_controller');
22
- });
23
- });
24
- describe('->findWorkersByExecutionID', () => {
25
- it('returns the right number of workers', () => {
26
- const workerList = stateUtils.findWorkersByExecutionID(clusterState, '8d7669e1-d351-4a0d-b36e-b11da5ade26a');
27
- expect(workerList.length).toEqual(8);
28
- });
29
- });
30
- describe('->findSlicersByExecutionID', () => {
31
- it('returns execution_controller worker', () => {
32
- const workerList = stateUtils.findSlicersByExecutionID(clusterState, { '8d7669e1-d351-4a0d-b36e-b11da5ade26a': '8d7669e1-d351-4a0d-b36e-b11da5ade26a' });
33
- expect(workerList[0].assignment).toEqual('execution_controller');
34
- });
35
- });
36
- });
37
- //# sourceMappingURL=state-utils-spec.js.map