Skip to content

Commit c3d8b4d

Browse files
authored
Merge pull request #36735 from hashicorp/t-split_ec2_tests
[Tech Debt] Split EC2 tests in CI
2 parents f7e90b0 + 4b187c7 commit c3d8b4d

File tree

7 files changed

+110
-16
lines changed

7 files changed

+110
-16
lines changed

.teamcity/components/generated/services_all.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ val services = mapOf(
7979
"docdbelastic" to ServiceSpec("DocumentDB Elastic"),
8080
"ds" to ServiceSpec("Directory Service", vpcLock = true),
8181
"dynamodb" to ServiceSpec("DynamoDB"),
82-
"ec2" to ServiceSpec("EC2 (Elastic Compute Cloud)", vpcLock = true),
82+
"ec2" to ServiceSpec("EC2 (Elastic Compute Cloud)", vpcLock = true, patternOverride = "TestAccEC2", excludePattern = "TestAccEC2EBS|TestAccEC2Outposts"),
83+
"ec2ebs" to ServiceSpec("EBS (EC2)", vpcLock = true, patternOverride = "TestAccEC2EBS", splitPackageRealPackage = "ec2"),
84+
"ec2outposts" to ServiceSpec("Outposts (EC2)", vpcLock = true, patternOverride = "TestAccOutposts", splitPackageRealPackage = "ec2"),
8385
"ecr" to ServiceSpec("ECR (Elastic Container Registry)"),
8486
"ecrpublic" to ServiceSpec("ECR Public", regionOverride = "us-east-1"),
8587
"ecs" to ServiceSpec("ECS (Elastic Container)", vpcLock = true),
@@ -119,6 +121,7 @@ val services = mapOf(
119121
"iot" to ServiceSpec("IoT Core"),
120122
"iotanalytics" to ServiceSpec("IoT Analytics"),
121123
"iotevents" to ServiceSpec("IoT Events"),
124+
"ipam" to ServiceSpec("VPC IPAM (IP Address Manager)", vpcLock = true, patternOverride = "TestAccIPAM", splitPackageRealPackage = "ec2"),
122125
"ivs" to ServiceSpec("IVS (Interactive Video)"),
123126
"ivschat" to ServiceSpec("IVS (Interactive Video) Chat"),
124127
"kafka" to ServiceSpec("Managed Streaming for Kafka", vpcLock = true),
@@ -220,11 +223,17 @@ val services = mapOf(
220223
"timestreamwrite" to ServiceSpec("Timestream Write"),
221224
"transcribe" to ServiceSpec("Transcribe"),
222225
"transfer" to ServiceSpec("Transfer Family", vpcLock = true),
226+
"transitgateway" to ServiceSpec("Transit Gateway", vpcLock = true, patternOverride = "TestAccTransitGateway", splitPackageRealPackage = "ec2"),
227+
"verifiedaccess" to ServiceSpec("Verified Access", vpcLock = true, patternOverride = "TestAccVerifiedAccess", splitPackageRealPackage = "ec2"),
223228
"verifiedpermissions" to ServiceSpec("Verified Permissions"),
229+
"vpc" to ServiceSpec("VPC (Virtual Private Cloud)", vpcLock = true, patternOverride = "TestAccVPC", splitPackageRealPackage = "ec2"),
224230
"vpclattice" to ServiceSpec("VPC Lattice"),
231+
"vpnclient" to ServiceSpec("VPN (Client)", vpcLock = true, patternOverride = "TestAccClientVPN", splitPackageRealPackage = "ec2"),
232+
"vpnsite" to ServiceSpec("VPN (Site-to-Site)", vpcLock = true, patternOverride = "TestAccSiteVPN", splitPackageRealPackage = "ec2"),
225233
"waf" to ServiceSpec("WAF Classic", regionOverride = "us-east-1"),
226234
"wafregional" to ServiceSpec("WAF Classic Regional"),
227235
"wafv2" to ServiceSpec("WAF"),
236+
"wavelength" to ServiceSpec("Wavelength", vpcLock = true, patternOverride = "TestAccWavelength", splitPackageRealPackage = "ec2"),
228237
"wellarchitected" to ServiceSpec("Well-Architected Tool"),
229238
"worklink" to ServiceSpec("WorkLink"),
230239
"workspaces" to ServiceSpec("WorkSpaces", vpcLock = true),

.teamcity/components/service_build_config.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ data class ServiceSpec(
1616
val vpcLock: Boolean = false,
1717
val parallelismOverride: Int? = null,
1818
val regionOverride: String? = null,
19+
val splitPackageRealPackage: String? = null,
20+
val excludePattern: String? = null,
1921
)
2022

2123
data class Notifier(
@@ -24,7 +26,7 @@ data class Notifier(
2426
)
2527

2628
class Service(name: String, spec: ServiceSpec) {
27-
val packageName = name
29+
private var packageName = name
2830
val spec = spec
2931

3032
fun buildType(notifier: Notifier?): BuildType {
@@ -53,6 +55,14 @@ class Service(name: String, spec: ServiceSpec) {
5355
text("env.AWS_DEFAULT_REGION", spec.regionOverride, display = ParameterDisplay.HIDDEN)
5456
}
5557
}
58+
if (spec.excludePattern != null) {
59+
params {
60+
text("TEST_EXCLUDE_PATTERN", spec.excludePattern, display = ParameterDisplay.HIDDEN)
61+
}
62+
}
63+
if (spec.splitPackageRealPackage != null) {
64+
packageName = spec.splitPackageRealPackage
65+
}
5666

5767
val serviceDir = "./internal/service/$packageName"
5868
steps {

.teamcity/scripts/service_tests/acceptance_tests.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ set -euo pipefail
44

55
TEST_LIST=$(./test-binary -test.list="%TEST_PATTERN%" 2>/dev/null)
66

7+
if [[ -n "%TEST_EXCLUDE_PATTERN%" ]]; then
8+
TEST_LIST=$(echo "${TEST_LIST}" | grep -vE "%TEST_EXCLUDE_PATTERN%")
9+
fi
10+
711
read -r -a split <<<"${TEST_LIST}"
812
TEST_COUNT=${#split[@]}
913

.teamcity/settings.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import java.time.LocalTime
1111
import java.time.ZoneId
1212
import java.time.format.DateTimeFormatter
1313

14-
version = "2023.05"
14+
version = "2024.03"
1515

1616
val defaultRegion = DslContext.getParameter("default_region")
1717
val alternateRegion = DslContext.getParameter("alternate_region", "")
@@ -62,6 +62,7 @@ project {
6262
text("ACCTEST_PARALLELISM", acctestParallelism, allowEmpty = false)
6363
}
6464
text("TEST_PATTERN", "TestAcc", display = ParameterDisplay.HIDDEN)
65+
text("TEST_EXCLUDE_PATTERN", "", display = ParameterDisplay.HIDDEN)
6566
text("SWEEPER_REGIONS", sweeperRegions, display = ParameterDisplay.HIDDEN, allowEmpty = false)
6667
text("env.AWS_ACCOUNT_ID", awsAccountID, display = ParameterDisplay.HIDDEN, allowEmpty = false)
6768
text("env.AWS_DEFAULT_REGION", defaultRegion, allowEmpty = false)

internal/generate/teamcity/acctest_services.hcl

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,21 @@ service "ds" {
6767
}
6868

6969
service "ec2" {
70-
vpc_lock = true
70+
vpc_lock = true
71+
pattern_override = "TestAccEC2"
72+
exclude_pattern = "TestAccEC2EBS|TestAccEC2Outposts"
73+
}
74+
75+
service "ec2ebs" {
76+
vpc_lock = true
77+
pattern_override = "TestAccEC2EBS"
78+
split_package_real_package = "ec2"
79+
}
80+
81+
service "ec2outposts" {
82+
vpc_lock = true
83+
pattern_override = "TestAccOutposts"
84+
split_package_real_package = "ec2"
7185
}
7286

7387
service "ecrpublic" {
@@ -122,6 +136,12 @@ service "imagebuilder" {
122136
vpc_lock = true
123137
}
124138

139+
service "ipam" {
140+
vpc_lock = true
141+
pattern_override = "TestAccIPAM"
142+
split_package_real_package = "ec2"
143+
}
144+
125145
service "kafka" {
126146
vpc_lock = true
127147
}
@@ -214,10 +234,46 @@ service "transfer" {
214234
vpc_lock = true
215235
}
216236

237+
service "transitgateway" {
238+
vpc_lock = true
239+
pattern_override = "TestAccTransitGateway"
240+
split_package_real_package = "ec2"
241+
}
242+
243+
service "verifiedaccess" {
244+
vpc_lock = true
245+
pattern_override = "TestAccVerifiedAccess"
246+
split_package_real_package = "ec2"
247+
}
248+
249+
service "vpc" {
250+
vpc_lock = true
251+
pattern_override = "TestAccVPC"
252+
split_package_real_package = "ec2"
253+
}
254+
255+
service "vpnclient" {
256+
vpc_lock = true
257+
pattern_override = "TestAccClientVPN"
258+
split_package_real_package = "ec2"
259+
}
260+
261+
service "vpnsite" {
262+
vpc_lock = true
263+
pattern_override = "TestAccSiteVPN"
264+
split_package_real_package = "ec2"
265+
}
266+
217267
service "waf" {
218268
region = "us-east-1"
219269
}
220270

271+
service "wavelength" {
272+
vpc_lock = true
273+
pattern_override = "TestAccWavelength"
274+
split_package_real_package = "ec2"
275+
}
276+
221277
service "workspaces" {
222278
# Needed for logging configuration tests
223279
vpc_lock = true

internal/generate/teamcity/services.go

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,14 @@ import (
2222
)
2323

2424
type ServiceDatum struct {
25-
ProviderPackage string
26-
HumanFriendly string
27-
VpcLock bool
28-
Parallelism int
29-
Region string
25+
ProviderPackage string
26+
HumanFriendly string
27+
VpcLock bool
28+
Parallelism int
29+
Region string
30+
PatternOverride string
31+
SplitPackageRealPackage string
32+
ExcludePattern string
3033
}
3134

3235
type TemplateData struct {
@@ -57,13 +60,15 @@ func main() {
5760
td := TemplateData{}
5861

5962
for _, l := range data {
60-
if l.Exclude() {
63+
if l.Exclude() && l.SplitPackageRealPackage() == "" {
6164
continue
6265
}
6366

6467
p := l.ProviderPackage()
6568

66-
if _, err := os.Stat(fmt.Sprintf("../../service/%s", p)); err != nil || errors.Is(err, fs.ErrNotExist) {
69+
_, err := os.Stat(fmt.Sprintf("../../service/%s", p))
70+
71+
if (err != nil || errors.Is(err, fs.ErrNotExist)) && l.SplitPackageRealPackage() == "" {
6772
continue
6873
}
6974

@@ -76,6 +81,9 @@ func main() {
7681
sd.VpcLock = serviceConfig.VpcLock
7782
sd.Parallelism = serviceConfig.Parallelism
7883
sd.Region = serviceConfig.Region
84+
sd.PatternOverride = serviceConfig.PatternOverride
85+
sd.SplitPackageRealPackage = serviceConfig.SplitPackageRealPackage
86+
sd.ExcludePattern = serviceConfig.ExcludePattern
7987
}
8088

8189
if serviceConfig.Skip {
@@ -109,11 +117,14 @@ type acctestConfig struct {
109117
}
110118

111119
type acctestServiceConfig struct {
112-
Service string `hcl:",label"`
113-
VpcLock bool `hcl:"vpc_lock,optional"`
114-
Parallelism int `hcl:"parallelism,optional"`
115-
Skip bool `hcl:"skip,optional"`
116-
Region string `hcl:"region,optional"`
120+
Service string `hcl:",label"`
121+
VpcLock bool `hcl:"vpc_lock,optional"`
122+
Parallelism int `hcl:"parallelism,optional"`
123+
Skip bool `hcl:"skip,optional"`
124+
Region string `hcl:"region,optional"`
125+
PatternOverride string `hcl:"pattern_override,optional"`
126+
SplitPackageRealPackage string `hcl:"split_package_real_package,optional"`
127+
ExcludePattern string `hcl:"exclude_pattern,optional"`
117128
}
118129

119130
func acctestConfigurations(filename string) (map[string]acctestServiceConfig, error) {

internal/generate/teamcity/services.tmpl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ val services = mapOf(
66
{{- if .VpcLock }}, vpcLock = true{{ end -}}
77
{{- if ne .Parallelism 0 }}, parallelismOverride = {{ .Parallelism }}{{ end -}}
88
{{- if ne .Region "" }}, regionOverride = "{{ .Region }}"{{ end -}}
9+
{{- if ne .PatternOverride "" }}, patternOverride = "{{ .PatternOverride }}"{{ end -}}
10+
{{- if ne .SplitPackageRealPackage "" }}, splitPackageRealPackage = "{{ .SplitPackageRealPackage }}"{{ end -}}
11+
{{- if ne .ExcludePattern "" }}, excludePattern = "{{ .ExcludePattern }}"{{ end -}}
912
),
1013
{{- end }}
1114
)

0 commit comments

Comments
 (0)