Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Tech Debt] Split EC2 tests in CI #36735

Merged
merged 8 commits into from
Apr 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion .teamcity/components/generated/services_all.kt
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,9 @@ val services = mapOf(
"docdbelastic" to ServiceSpec("DocumentDB Elastic"),
"ds" to ServiceSpec("Directory Service", vpcLock = true),
"dynamodb" to ServiceSpec("DynamoDB"),
"ec2" to ServiceSpec("EC2 (Elastic Compute Cloud)", vpcLock = true),
"ec2" to ServiceSpec("EC2 (Elastic Compute Cloud)", vpcLock = true, patternOverride = "TestAccEC2", excludePattern = "TestAccEC2EBS|TestAccEC2Outposts"),
"ec2ebs" to ServiceSpec("EBS (EC2)", vpcLock = true, patternOverride = "TestAccEC2EBS", splitPackageRealPackage = "ec2"),
"ec2outposts" to ServiceSpec("Outposts (EC2)", vpcLock = true, patternOverride = "TestAccOutposts", splitPackageRealPackage = "ec2"),
"ecr" to ServiceSpec("ECR (Elastic Container Registry)"),
"ecrpublic" to ServiceSpec("ECR Public", regionOverride = "us-east-1"),
"ecs" to ServiceSpec("ECS (Elastic Container)", vpcLock = true),
Expand Down Expand Up @@ -119,6 +121,7 @@ val services = mapOf(
"iot" to ServiceSpec("IoT Core"),
"iotanalytics" to ServiceSpec("IoT Analytics"),
"iotevents" to ServiceSpec("IoT Events"),
"ipam" to ServiceSpec("VPC IPAM (IP Address Manager)", vpcLock = true, patternOverride = "TestAccIPAM", splitPackageRealPackage = "ec2"),
"ivs" to ServiceSpec("IVS (Interactive Video)"),
"ivschat" to ServiceSpec("IVS (Interactive Video) Chat"),
"kafka" to ServiceSpec("Managed Streaming for Kafka", vpcLock = true),
Expand Down Expand Up @@ -220,11 +223,17 @@ val services = mapOf(
"timestreamwrite" to ServiceSpec("Timestream Write"),
"transcribe" to ServiceSpec("Transcribe"),
"transfer" to ServiceSpec("Transfer Family", vpcLock = true),
"transitgateway" to ServiceSpec("Transit Gateway", vpcLock = true, patternOverride = "TestAccTransitGateway", splitPackageRealPackage = "ec2"),
"verifiedaccess" to ServiceSpec("Verified Access", vpcLock = true, patternOverride = "TestAccVerifiedAccess", splitPackageRealPackage = "ec2"),
"verifiedpermissions" to ServiceSpec("Verified Permissions"),
"vpc" to ServiceSpec("VPC (Virtual Private Cloud)", vpcLock = true, patternOverride = "TestAccVPC", splitPackageRealPackage = "ec2"),
"vpclattice" to ServiceSpec("VPC Lattice"),
"vpnclient" to ServiceSpec("VPN (Client)", vpcLock = true, patternOverride = "TestAccClientVPN", splitPackageRealPackage = "ec2"),
"vpnsite" to ServiceSpec("VPN (Site-to-Site)", vpcLock = true, patternOverride = "TestAccSiteVPN", splitPackageRealPackage = "ec2"),
"waf" to ServiceSpec("WAF Classic", regionOverride = "us-east-1"),
"wafregional" to ServiceSpec("WAF Classic Regional"),
"wafv2" to ServiceSpec("WAF"),
"wavelength" to ServiceSpec("Wavelength", vpcLock = true, patternOverride = "TestAccWavelength", splitPackageRealPackage = "ec2"),
"wellarchitected" to ServiceSpec("Well-Architected Tool"),
"worklink" to ServiceSpec("WorkLink"),
"workspaces" to ServiceSpec("WorkSpaces", vpcLock = true),
Expand Down
12 changes: 11 additions & 1 deletion .teamcity/components/service_build_config.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ data class ServiceSpec(
val vpcLock: Boolean = false,
val parallelismOverride: Int? = null,
val regionOverride: String? = null,
val splitPackageRealPackage: String? = null,
val excludePattern: String? = null,
)

data class Notifier(
Expand All @@ -24,7 +26,7 @@ data class Notifier(
)

class Service(name: String, spec: ServiceSpec) {
val packageName = name
private var packageName = name
val spec = spec

fun buildType(notifier: Notifier?): BuildType {
Expand Down Expand Up @@ -53,6 +55,14 @@ class Service(name: String, spec: ServiceSpec) {
text("env.AWS_DEFAULT_REGION", spec.regionOverride, display = ParameterDisplay.HIDDEN)
}
}
if (spec.excludePattern != null) {
params {
text("TEST_EXCLUDE_PATTERN", spec.excludePattern, display = ParameterDisplay.HIDDEN)
}
}
if (spec.splitPackageRealPackage != null) {
packageName = spec.splitPackageRealPackage
}

val serviceDir = "./internal/service/$packageName"
steps {
Expand Down
4 changes: 4 additions & 0 deletions .teamcity/scripts/service_tests/acceptance_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ set -euo pipefail

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

if [[ -n "%TEST_EXCLUDE_PATTERN%" ]]; then
TEST_LIST=$(echo "${TEST_LIST}" | grep -vE "%TEST_EXCLUDE_PATTERN%")
fi

read -r -a split <<<"${TEST_LIST}"
TEST_COUNT=${#split[@]}

Expand Down
3 changes: 2 additions & 1 deletion .teamcity/settings.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import java.time.LocalTime
import java.time.ZoneId
import java.time.format.DateTimeFormatter

version = "2023.05"
version = "2024.03"

val defaultRegion = DslContext.getParameter("default_region")
val alternateRegion = DslContext.getParameter("alternate_region", "")
Expand Down Expand Up @@ -62,6 +62,7 @@ project {
text("ACCTEST_PARALLELISM", acctestParallelism, allowEmpty = false)
}
text("TEST_PATTERN", "TestAcc", display = ParameterDisplay.HIDDEN)
text("TEST_EXCLUDE_PATTERN", "", display = ParameterDisplay.HIDDEN)
text("SWEEPER_REGIONS", sweeperRegions, display = ParameterDisplay.HIDDEN, allowEmpty = false)
text("env.AWS_ACCOUNT_ID", awsAccountID, display = ParameterDisplay.HIDDEN, allowEmpty = false)
text("env.AWS_DEFAULT_REGION", defaultRegion, allowEmpty = false)
Expand Down
58 changes: 57 additions & 1 deletion internal/generate/teamcity/acctest_services.hcl
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eventually this all needs to be centralized with names so we're not having to change several places (and forgetting any).

Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,21 @@ service "ds" {
}

service "ec2" {
vpc_lock = true
vpc_lock = true
pattern_override = "TestAccEC2"
exclude_pattern = "TestAccEC2EBS|TestAccEC2Outposts"
}

service "ec2ebs" {
vpc_lock = true
pattern_override = "TestAccEC2EBS"
split_package_real_package = "ec2"
}

service "ec2outposts" {
vpc_lock = true
pattern_override = "TestAccOutposts"
split_package_real_package = "ec2"
}

service "ecrpublic" {
Expand Down Expand Up @@ -122,6 +136,12 @@ service "imagebuilder" {
vpc_lock = true
}

service "ipam" {
vpc_lock = true
pattern_override = "TestAccIPAM"
split_package_real_package = "ec2"
}

service "kafka" {
vpc_lock = true
}
Expand Down Expand Up @@ -214,10 +234,46 @@ service "transfer" {
vpc_lock = true
}

service "transitgateway" {
vpc_lock = true
pattern_override = "TestAccTransitGateway"
split_package_real_package = "ec2"
}

service "verifiedaccess" {
vpc_lock = true
pattern_override = "TestAccVerifiedAccess"
split_package_real_package = "ec2"
}

service "vpc" {
vpc_lock = true
pattern_override = "TestAccVPC"
split_package_real_package = "ec2"
}

service "vpnclient" {
vpc_lock = true
pattern_override = "TestAccClientVPN"
split_package_real_package = "ec2"
}

service "vpnsite" {
vpc_lock = true
pattern_override = "TestAccSiteVPN"
split_package_real_package = "ec2"
}

service "waf" {
region = "us-east-1"
}

service "wavelength" {
vpc_lock = true
pattern_override = "TestAccWavelength"
split_package_real_package = "ec2"
}

service "workspaces" {
# Needed for logging configuration tests
vpc_lock = true
Expand Down
35 changes: 23 additions & 12 deletions internal/generate/teamcity/services.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,14 @@ import (
)

type ServiceDatum struct {
ProviderPackage string
HumanFriendly string
VpcLock bool
Parallelism int
Region string
ProviderPackage string
HumanFriendly string
VpcLock bool
Parallelism int
Region string
PatternOverride string
SplitPackageRealPackage string
ExcludePattern string
}

type TemplateData struct {
Expand Down Expand Up @@ -57,13 +60,15 @@ func main() {
td := TemplateData{}

for _, l := range data {
if l.Exclude() {
if l.Exclude() && l.SplitPackageRealPackage() == "" {
continue
}

p := l.ProviderPackage()

if _, err := os.Stat(fmt.Sprintf("../../service/%s", p)); err != nil || errors.Is(err, fs.ErrNotExist) {
_, err := os.Stat(fmt.Sprintf("../../service/%s", p))

if (err != nil || errors.Is(err, fs.ErrNotExist)) && l.SplitPackageRealPackage() == "" {
continue
}

Expand All @@ -76,6 +81,9 @@ func main() {
sd.VpcLock = serviceConfig.VpcLock
sd.Parallelism = serviceConfig.Parallelism
sd.Region = serviceConfig.Region
sd.PatternOverride = serviceConfig.PatternOverride
sd.SplitPackageRealPackage = serviceConfig.SplitPackageRealPackage
sd.ExcludePattern = serviceConfig.ExcludePattern
}

if serviceConfig.Skip {
Expand Down Expand Up @@ -109,11 +117,14 @@ type acctestConfig struct {
}

type acctestServiceConfig struct {
Service string `hcl:",label"`
VpcLock bool `hcl:"vpc_lock,optional"`
Parallelism int `hcl:"parallelism,optional"`
Skip bool `hcl:"skip,optional"`
Region string `hcl:"region,optional"`
Service string `hcl:",label"`
VpcLock bool `hcl:"vpc_lock,optional"`
Parallelism int `hcl:"parallelism,optional"`
Skip bool `hcl:"skip,optional"`
Region string `hcl:"region,optional"`
PatternOverride string `hcl:"pattern_override,optional"`
SplitPackageRealPackage string `hcl:"split_package_real_package,optional"`
ExcludePattern string `hcl:"exclude_pattern,optional"`
}

func acctestConfigurations(filename string) (map[string]acctestServiceConfig, error) {
Expand Down
3 changes: 3 additions & 0 deletions internal/generate/teamcity/services.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ val services = mapOf(
{{- if .VpcLock }}, vpcLock = true{{ end -}}
{{- if ne .Parallelism 0 }}, parallelismOverride = {{ .Parallelism }}{{ end -}}
{{- if ne .Region "" }}, regionOverride = "{{ .Region }}"{{ end -}}
{{- if ne .PatternOverride "" }}, patternOverride = "{{ .PatternOverride }}"{{ end -}}
{{- if ne .SplitPackageRealPackage "" }}, splitPackageRealPackage = "{{ .SplitPackageRealPackage }}"{{ end -}}
{{- if ne .ExcludePattern "" }}, excludePattern = "{{ .ExcludePattern }}"{{ end -}}
),
{{- end }}
)
Loading