Skip to content

Commit a51c48b

Browse files
authored
Add unit tests that invoke late initialize (#138)
Description of changes: - Adds `LateInitialize` to `test_suite_runner.go` - Adds `LateInitialize` unit tests which invoke `LateInitialize` - Majority of resources do not use `LateInitialize` so there will be no difference in the latest resource. By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent eb7d989 commit a51c48b

File tree

25 files changed

+661
-0
lines changed

25 files changed

+661
-0
lines changed

pkg/resource/data_quality_job_definition/testdata/test_suite.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,16 @@ tests:
7171
invoke: ReadOne
7272
expect:
7373
latest_state: "v1alpha1/create/observed/success_after_create.yaml"
74+
- name: "ReadOne=LateInitialize"
75+
description: "Testing late initialize after created, should expect no diff since there is nothing to late initialize"
76+
given:
77+
desired_state: "v1alpha1/create/observed/success_after_create.yaml"
78+
svc_api:
79+
- operation: DescribeDataQualityJobDefinitionWithContext
80+
output_fixture: "sdkapi/describe/success_describe.json"
81+
invoke: LateInitialize
82+
expect:
83+
latest_state: "v1alpha1/create/observed/success_after_create.yaml"
7484
- name: "ReadOne=SuccessClearsConditions"
7585
description: Testing a successful reconciliation clears conditions if terminal/recoverable condition were already set to true
7686
given:

pkg/resource/endpoint/testdata/test_suite.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,16 @@ tests:
7171
invoke: ReadOne
7272
expect:
7373
latest_state: "v1alpha1/readone/observed/creating_after_describe.yaml"
74+
- name: "ReadOne=LateInitialize"
75+
description: "Testing late initialize after created, should expect no diff since there is nothing to late initialize"
76+
given:
77+
desired_state: "v1alpha1/readone/observed/creating_after_describe.yaml"
78+
svc_api:
79+
- operation: DescribeEndpointWithContext
80+
output_fixture: "sdkapi/describe/creating_after_create.json"
81+
invoke: LateInitialize
82+
expect:
83+
latest_state: "v1alpha1/readone/observed/creating_after_describe.yaml"
7484
- name: "ReadOne=InService"
7585
description: "Testing readOne when InService, resource synced should be true."
7686
given:

pkg/resource/endpoint_config/testdata/test_suite.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,16 @@
7070
invoke: ReadOne
7171
expect:
7272
latest_state: "v1alpha1/readone/desired/right_after_create.yaml"
73+
- name: "ReadOne=LateInitialize"
74+
description: "Testing late initialize after created, should expect no diff since there is nothing to late initialize"
75+
given:
76+
desired_state: "v1alpha1/readone/desired/right_after_create.yaml"
77+
svc_api:
78+
- operation: DescribeEndpointConfigWithContext
79+
output_fixture: "sdkapi/describe/success_describe.json"
80+
invoke: LateInitialize
81+
expect:
82+
latest_state: "v1alpha1/readone/desired/right_after_create.yaml"
7383
- name: "ReadOne=SuccessClearsConditions"
7484
description: "Testing a successful reconciliation clears conditions if terminal/recoverable condition were already set to true"
7585
given:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: sagemaker.services.k8s.aws/v1alpha1
2+
kind: FeatureGroup
3+
metadata:
4+
creationTimestamp: null
5+
name: unit-testing-feature-group
6+
spec:
7+
eventTimeFeatureName: EventTime
8+
featureDefinitions:
9+
- featureName: TransactionID
10+
featureType: Integral
11+
- featureName: EventTime
12+
featureType: Fractional
13+
featureGroupName: unit-testing-feature-group
14+
offlineStoreConfig:
15+
disableGlueTableCreation: false
16+
s3StorageConfig:
17+
resolvedOutputS3URI: s3://source-data-bucket-592697580195-us-west-2/sagemaker/feature-group-data/123456789012/sagemaker/us-west-2/offline-store/unit-testing-feature-group-1627432365/data
18+
s3URI: s3://source-data-bucket-592697580195-us-west-2/sagemaker/feature-group-data
19+
recordIdentifierFeatureName: TransactionID
20+
roleARN: arn:aws:iam::123456789012:role/ack-sagemaker-execution-role
21+
status:
22+
ackResourceMetadata:
23+
arn: arn:aws:sagemaker:us-west-2:123456789012:feature-group/unit-testing-feature-group
24+
ownerAccountID: ""
25+
conditions:
26+
- message: FeatureGroup is in Creating status.
27+
status: "False"
28+
type: ACK.ResourceSynced
29+
- lastTransitionTime: "0001-01-01T00:00:00Z"
30+
message: Late initialization successful
31+
reason: Late initialization successful
32+
status: "True"
33+
type: ACK.LateInitialized
34+
featureGroupStatus: Creating

pkg/resource/feature_group/testdata/test_suite.yaml

+11
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ tests:
4141
expect:
4242
latest_state: "feature_group/v1alpha1/fg_creating_state.yaml"
4343
error: nil
44+
- name: "ReadOne=LateInitialize"
45+
description: "Verifies that LateInitialize condition is set as successful"
46+
given:
47+
desired_state: "feature_group/v1alpha1/fg_creating_state.yaml"
48+
svc_api:
49+
- operation: DescribeFeatureGroupWithContext
50+
output_fixture: "feature_group/read_one/fg_creating.json"
51+
invoke: LateInitialize
52+
expect:
53+
latest_state: "feature_group/v1alpha1/fg_late_initialize.yaml"
54+
error: nil
4455
- name: "ReadOne=CreateFailed"
4556
description: "A feature group in the creating state which enters the create failed state will have the terminal condition set to True."
4657
given:

pkg/resource/hyper_parameter_tuning_job/testdata/test_suite.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,16 @@
103103
invoke: ReadOne
104104
expect:
105105
latest_state: "v1alpha1/readone/observed/inprogress.yaml"
106+
- name: "ReadOne=LateInitialize"
107+
description: "Verifies that LateInitialize condition is set as successful"
108+
given:
109+
desired_state: "v1alpha1/readone/observed/inprogress.yaml"
110+
svc_api:
111+
- operation: DescribeHyperParameterTuningJobWithContext
112+
output_fixture: "sdkapi/describe/inprogress_describe.json"
113+
invoke: LateInitialize
114+
expect:
115+
latest_state: "v1alpha1/readone/observed/late_initialize.yaml"
106116
- name: "ReadOne=AfterCompletion"
107117
description: "Testing readOne after HyperParameter tuning job completes, the status should have ARN."
108118
given:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
apiVersion: sagemaker.services.k8s.aws/v1alpha1
2+
kind: HyperParameterTuningJob
3+
metadata:
4+
creationTimestamp: null
5+
name: unit-testing-hyper-parameter-tuning-job
6+
spec:
7+
hyperParameterTuningJobConfig:
8+
hyperParameterTuningJobObjective:
9+
metricName: validation:error
10+
type_: Minimize
11+
parameterRanges:
12+
categoricalParameterRanges:
13+
- name: category
14+
values:
15+
- test
16+
continuousParameterRanges:
17+
- maxValue: "5"
18+
minValue: "0"
19+
name: gamma
20+
scalingType: Linear
21+
integerParameterRanges:
22+
- maxValue: "20"
23+
minValue: "10"
24+
name: num_round
25+
scalingType: Linear
26+
resourceLimits:
27+
maxNumberOfTrainingJobs: 2
28+
maxParallelTrainingJobs: 1
29+
strategy: Bayesian
30+
trainingJobEarlyStoppingType: Auto
31+
hyperParameterTuningJobName: unit-testing-hpo-job
32+
tags:
33+
- key: algorithm
34+
value: xgboost
35+
- key: environment
36+
value: testing
37+
- key: customer
38+
value: test-user
39+
trainingJobDefinition:
40+
algorithmSpecification:
41+
metricDefinitions:
42+
- name: train:mae
43+
regex: .*\[[0-9]+\].*#011train-mae:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
44+
- name: validation:auc
45+
regex: .*\[[0-9]+\].*#011validation-auc:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
46+
- name: train:merror
47+
regex: .*\[[0-9]+\].*#011train-merror:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
48+
- name: train:auc
49+
regex: .*\[[0-9]+\].*#011train-auc:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
50+
- name: validation:mae
51+
regex: .*\[[0-9]+\].*#011validation-mae:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
52+
- name: validation:error
53+
regex: .*\[[0-9]+\].*#011validation-error:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
54+
- name: validation:merror
55+
regex: .*\[[0-9]+\].*#011validation-merror:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
56+
- name: validation:logloss
57+
regex: .*\[[0-9]+\].*#011validation-logloss:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
58+
- name: train:rmse
59+
regex: .*\[[0-9]+\].*#011train-rmse:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
60+
- name: train:logloss
61+
regex: .*\[[0-9]+\].*#011train-logloss:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
62+
- name: train:mlogloss
63+
regex: .*\[[0-9]+\].*#011train-mlogloss:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
64+
- name: validation:rmse
65+
regex: .*\[[0-9]+\].*#011validation-rmse:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
66+
- name: validation:ndcg
67+
regex: .*\[[0-9]+\].*#011validation-ndcg:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
68+
- name: train:error
69+
regex: .*\[[0-9]+\].*#011train-error:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
70+
- name: validation:mlogloss
71+
regex: .*\[[0-9]+\].*#011validation-mlogloss:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
72+
- name: train:ndcg
73+
regex: .*\[[0-9]+\].*#011train-ndcg:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
74+
- name: train:map
75+
regex: .*\[[0-9]+\].*#011train-map:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
76+
- name: validation:map
77+
regex: .*\[[0-9]+\].*#011validation-map:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
78+
- name: ObjectiveMetric
79+
regex: .*\[[0-9]+\].*#011validation-error:([-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?).*
80+
trainingImage: 433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:1
81+
trainingInputMode: File
82+
enableInterContainerTrafficEncryption: false
83+
enableManagedSpotTraining: false
84+
enableNetworkIsolation: true
85+
inputDataConfig:
86+
- channelName: train
87+
compressionType: None
88+
contentType: text/csv
89+
dataSource:
90+
s3DataSource:
91+
s3DataDistributionType: FullyReplicated
92+
s3DataType: S3Prefix
93+
s3URI: s3://source-data-bucket-592697580195-us-west-2/sagemaker/training/train
94+
inputMode: File
95+
recordWrapperType: None
96+
- channelName: validation
97+
compressionType: None
98+
contentType: text/csv
99+
dataSource:
100+
s3DataSource:
101+
s3DataDistributionType: FullyReplicated
102+
s3DataType: S3Prefix
103+
s3URI: s3://source-data-bucket-592697580195-us-west-2/sagemaker/training/validation/
104+
inputMode: File
105+
recordWrapperType: None
106+
outputDataConfig:
107+
s3OutputPath: s3://source-data-bucket-592697580195-us-west-2/sagemaker/hpo/output
108+
resourceConfig:
109+
instanceCount: 1
110+
instanceType: ml.m5.large
111+
volumeSizeInGB: 25
112+
roleARN: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole-20210920T111639
113+
staticHyperParameters:
114+
base_score: "0.5"
115+
stoppingCondition:
116+
maxRuntimeInSeconds: 3600
117+
status:
118+
ackResourceMetadata:
119+
arn: arn:aws:sagemaker:us-west-2:123456789012:hyper-parameter-tuning-job/unit-testing-hpo-job
120+
ownerAccountID: ""
121+
conditions:
122+
- message: HyperParameterTuningJob is in InProgress status.
123+
status: "False"
124+
type: ACK.ResourceSynced
125+
- lastTransitionTime: "0001-01-01T00:00:00Z"
126+
message: Late initialization successful
127+
reason: Late initialization successful
128+
status: "True"
129+
type: ACK.LateInitialized
130+
hyperParameterTuningJobStatus: InProgress

pkg/resource/model/testdata/test_suite.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,16 @@ tests:
8282
invoke: ReadOne
8383
expect:
8484
latest_state: "v1alpha1/readone/observed/created.yaml"
85+
- name: "ReadOne=LateInitialize"
86+
description: "Verifies that LateInitialize condition is set as successful"
87+
given:
88+
desired_state: "v1alpha1/readone/observed/created.yaml"
89+
svc_api:
90+
- operation: DescribeModelWithContext
91+
output_fixture: "sdkapi/describe/success_describe.json"
92+
invoke: LateInitialize
93+
expect:
94+
latest_state: "v1alpha1/readone/observed/late_initialize.yaml"
8595
- name: "ReadOne=AfterCreateVariation2"
8696
description: "Testing readOne right after create, the status should have ARN."
8797
given:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
apiVersion: sagemaker.services.k8s.aws/v1alpha1
2+
kind: Model
3+
metadata:
4+
creationTimestamp: null
5+
name: xgboost-model
6+
spec:
7+
containers:
8+
- containerHostname: xgboost
9+
environment:
10+
my_var: my_value
11+
my_var2: my_value2
12+
image: 246618743249.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.0-1-cpu-py3
13+
imageConfig:
14+
repositoryAccessMode: Platform
15+
repositoryAuthConfig: {}
16+
mode: SingleModel
17+
modelDataURL: s3://source-data-bucket-592697580195-us-west-2/sagemaker/model/xgboost-mnist-model.tar.gz
18+
enableNetworkIsolation: false
19+
executionRoleARN: arn:aws:iam::123456789012:role/ack-sagemaker-execution-role
20+
modelName: xgboost-model
21+
status:
22+
ackResourceMetadata:
23+
arn: arn:aws:sagemaker:us-west-2:123456789012:model/xgboost-model
24+
ownerAccountID: ""
25+
conditions:
26+
- lastTransitionTime: "0001-01-01T00:00:00Z"
27+
message: Late initialization successful
28+
reason: Late initialization successful
29+
status: "True"
30+
type: ACK.LateInitialized

pkg/resource/model_bias_job_definition/testdata/test_suite.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,16 @@ tests:
7171
invoke: ReadOne
7272
expect:
7373
latest_state: "v1alpha1/create/observed/success_after_create.yaml"
74+
- name: "ReadOne=LateInitialize"
75+
description: "Testing late initialize after created, should expect no diff since there is nothing to late initialize"
76+
given:
77+
desired_state: "v1alpha1/create/observed/success_after_create.yaml"
78+
svc_api:
79+
- operation: DescribeModelBiasJobDefinitionWithContext
80+
output_fixture: "sdkapi/describe/success_describe.json"
81+
invoke: LateInitialize
82+
expect:
83+
latest_state: "v1alpha1/create/observed/success_after_create.yaml"
7484
- name: "ReadOne=SuccessClearsConditions"
7585
description: Testing a successful reconciliation clears conditions if terminal/recoverable condition were already set to true
7686
given:

pkg/resource/model_explainability_job_definition/testdata/test_suite.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,16 @@ tests:
7171
invoke: ReadOne
7272
expect:
7373
latest_state: "v1alpha1/create/observed/success_after_create.yaml"
74+
- name: "ReadOne=LateInitialize"
75+
description: "Testing late initialize after created, should expect no diff since there is nothing to late initialize"
76+
given:
77+
desired_state: "v1alpha1/create/observed/success_after_create.yaml"
78+
svc_api:
79+
- operation: DescribeModelExplainabilityJobDefinitionWithContext
80+
output_fixture: "sdkapi/describe/success_describe.json"
81+
invoke: LateInitialize
82+
expect:
83+
latest_state: "v1alpha1/create/observed/success_after_create.yaml"
7484
- name: "ReadOne=SuccessClearsConditions"
7585
description: Testing a successful reconciliation clears conditions if terminal/recoverable condition were already set to true
7686
given:

0 commit comments

Comments
 (0)