Skip to content

Commit b0a4f4b

Browse files
authored
fix: update compability tests (#73)
1 parent fcbc630 commit b0a4f4b

File tree

2 files changed

+149
-5
lines changed

2 files changed

+149
-5
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ aws ssm start-session \
151151

152152
| Name | Source | Version |
153153
|------|--------|---------|
154-
| <a name="module_kms_key"></a> [kms\_key](#module\_kms\_key) | cloudposse/kms-key/aws | 0.12.1 |
154+
| <a name="module_kms_key"></a> [kms\_key](#module\_kms\_key) | cloudposse/kms-key/aws | 0.12.2 |
155155
| <a name="module_logs_bucket"></a> [logs\_bucket](#module\_logs\_bucket) | cloudposse/s3-bucket/aws | 4.10.0 |
156156
| <a name="module_logs_label"></a> [logs\_label](#module\_logs\_label) | cloudposse/label/null | 0.25.0 |
157157
| <a name="module_role_label"></a> [role\_label](#module\_role\_label) | cloudposse/label/null | 0.25.0 |

tests/cpu-compatibility.tftest.hcl

Lines changed: 148 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ run "valid_x86_64_instance" {
2121
variables {
2222
instance_type = "t3.micro"
2323
architecture = "x86_64"
24+
user_data = <<-EOT
25+
#!/bin/bash
26+
cd /tmp
27+
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
28+
sudo systemctl enable amazon-ssm-agent
29+
sudo systemctl start amazon-ssm-agent
30+
EOT
2431
}
2532

2633
assert {
@@ -54,7 +61,7 @@ run "invalid_x86_64_instance" {
5461
}
5562

5663
expect_failures = [
57-
null_resource.validate_instance_type
64+
terraform_data.validate_configuration
5865
]
5966
}
6067

@@ -68,7 +75,7 @@ run "invalid_arm64_instance" {
6875
}
6976

7077
expect_failures = [
71-
null_resource.validate_instance_type
78+
terraform_data.validate_configuration
7279
]
7380
}
7481

@@ -83,7 +90,7 @@ run "graphics_instance_arm_incompatiblity_edge_case" {
8390
}
8491

8592
expect_failures = [
86-
null_resource.validate_instance_type
93+
terraform_data.validate_configuration
8794
]
8895
}
8996

@@ -95,10 +102,147 @@ run "graphics_instance_x86_compatibility_edge_case" {
95102
variables {
96103
instance_type = "g4dn.xlarge"
97104
architecture = "x86_64"
105+
user_data = <<-EOT
106+
#!/bin/bash
107+
cd /tmp
108+
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
109+
sudo systemctl enable amazon-ssm-agent
110+
sudo systemctl start amazon-ssm-agent
111+
EOT
98112
}
99113

100114
assert {
101115
condition = local.is_instance_compatible
102-
error_message = "Expected instance type g3s.xlarge to be compatible with x86_64 architecture"
116+
error_message = "Expected instance type g4dn.xlarge to be compatible with x86_64 architecture"
117+
}
118+
}
119+
120+
### TESTING USER_DATA and ARCHITECTURE COMPATIBILITY ###
121+
122+
# Test valid: arm64 architecture with arm64 user_data
123+
run "valid_arm64_userdata_with_arm64_arch" {
124+
command = plan
125+
126+
variables {
127+
instance_type = "t4g.micro"
128+
architecture = "arm64"
129+
user_data = <<-EOT
130+
#!/bin/bash
131+
cd /tmp
132+
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_arm64/amazon-ssm-agent.rpm
133+
sudo systemctl enable amazon-ssm-agent
134+
sudo systemctl start amazon-ssm-agent
135+
EOT
136+
}
137+
138+
assert {
139+
condition = local.is_fully_compatible
140+
error_message = "Expected arm64 user_data to be compatible with arm64 architecture"
141+
}
142+
}
143+
144+
# Test valid: x86_64 architecture with amd64 user_data
145+
run "valid_amd64_userdata_with_x86_64_arch" {
146+
command = plan
147+
148+
variables {
149+
instance_type = "t3.micro"
150+
architecture = "x86_64"
151+
user_data = <<-EOT
152+
#!/bin/bash
153+
cd /tmp
154+
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
155+
sudo systemctl enable amazon-ssm-agent
156+
sudo systemctl start amazon-ssm-agent
157+
EOT
158+
}
159+
160+
assert {
161+
condition = local.is_fully_compatible
162+
error_message = "Expected amd64 user_data to be compatible with x86_64 architecture"
163+
}
164+
}
165+
166+
# Test invalid: x86_64 architecture with arm64 user_data (mismatched)
167+
run "invalid_arm64_userdata_with_x86_64_arch" {
168+
command = plan
169+
170+
variables {
171+
instance_type = "t3.micro"
172+
architecture = "x86_64"
173+
user_data = <<-EOT
174+
#!/bin/bash
175+
cd /tmp
176+
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_arm64/amazon-ssm-agent.rpm
177+
sudo systemctl enable amazon-ssm-agent
178+
sudo systemctl start amazon-ssm-agent
179+
EOT
180+
}
181+
182+
expect_failures = [
183+
terraform_data.validate_configuration
184+
]
185+
}
186+
187+
# Test invalid: arm64 architecture with amd64 user_data (mismatched)
188+
run "invalid_amd64_userdata_with_arm64_arch" {
189+
command = plan
190+
191+
variables {
192+
instance_type = "t4g.micro"
193+
architecture = "arm64"
194+
user_data = <<-EOT
195+
#!/bin/bash
196+
cd /tmp
197+
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
198+
sudo systemctl enable amazon-ssm-agent
199+
sudo systemctl start amazon-ssm-agent
200+
EOT
201+
}
202+
203+
expect_failures = [
204+
terraform_data.validate_configuration
205+
]
206+
}
207+
208+
# Test valid: architecture-neutral user_data works with arm64
209+
run "valid_neutral_userdata_with_arm64_arch" {
210+
command = plan
211+
212+
variables {
213+
instance_type = "t4g.micro"
214+
architecture = "arm64"
215+
user_data = <<-EOT
216+
#!/bin/bash
217+
echo "Hello World"
218+
sudo systemctl enable amazon-ssm-agent
219+
sudo systemctl start amazon-ssm-agent
220+
EOT
221+
}
222+
223+
assert {
224+
condition = local.is_fully_compatible
225+
error_message = "Expected architecture-neutral user_data to be compatible with arm64 architecture"
226+
}
227+
}
228+
229+
# Test valid: architecture-neutral user_data works with x86_64
230+
run "valid_neutral_userdata_with_x86_64_arch" {
231+
command = plan
232+
233+
variables {
234+
instance_type = "t3.micro"
235+
architecture = "x86_64"
236+
user_data = <<-EOT
237+
#!/bin/bash
238+
echo "Hello World"
239+
sudo systemctl enable amazon-ssm-agent
240+
sudo systemctl start amazon-ssm-agent
241+
EOT
242+
}
243+
244+
assert {
245+
condition = local.is_fully_compatible
246+
error_message = "Expected architecture-neutral user_data to be compatible with x86_64 architecture"
103247
}
104248
}

0 commit comments

Comments
 (0)