From 97fe0ccd34dfa86de3825b85dceb8709efde3c93 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Wed, 6 Aug 2025 12:34:07 -0700 Subject: [PATCH 1/3] Only consider versions available in ECH region for FIPS integrations server upgrade test --- .../ess/upgrade_integrations_server_test.go | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/testing/integration/ess/upgrade_integrations_server_test.go b/testing/integration/ess/upgrade_integrations_server_test.go index 81d6046ee0f..43a05aac633 100644 --- a/testing/integration/ess/upgrade_integrations_server_test.go +++ b/testing/integration/ess/upgrade_integrations_server_test.go @@ -45,9 +45,6 @@ func TestUpgradeIntegrationsServer(t *testing.T) { t.Fatal("ECH API key missing") } - startVersions := getUpgradeableFIPSVersions(t) - endVersion := define.Version() - prov, err := ess.NewProvisioner(ess.ProvisionerConfig{ Identifier: "it-upgrade-integrations-server", APIKey: echApiKey, @@ -58,6 +55,9 @@ func TestUpgradeIntegrationsServer(t *testing.T) { statefulProv, ok := prov.(*ess.StatefulProvisioner) require.True(t, ok) + startVersions := getUpgradeableFIPSVersions(t, statefulProv) + endVersion := define.Version() + t.Logf("Running test cases for upgrade from versions [%v] to version [%s]", startVersions, endVersion) for _, startVersion := range startVersions { t.Logf("Running test case for upgrade from version [%s] to version [%s]...", startVersion.String(), endVersion) @@ -109,10 +109,16 @@ func TestUpgradeIntegrationsServer(t *testing.T) { } // getUpgradeableFIPSVersions returns stack versions to use as the start version for an upgrade. -func getUpgradeableFIPSVersions(t *testing.T) version.SortableParsedVersions { +func getUpgradeableFIPSVersions(t *testing.T, prov *ess.StatefulProvisioner) version.SortableParsedVersions { + // Get the list of versions we use in upgrade integration tests in general. versions, err := upgradetest.GetUpgradableVersions() require.NoError(t, err, "could not get upgradable versions") + // Filter the list down to versions that are FIPS-capable and actually available + // in the ECH region + echVersions, err := prov.AvailableVersions() + require.NoError(t, err) + filteredVersions := make([]*version.ParsedSemVer, 0) for _, ver := range versions { // Filter out versions that are not FIPS-capable @@ -120,10 +126,26 @@ func getUpgradeableFIPSVersions(t *testing.T) version.SortableParsedVersions { continue } + // Filter out versions that are not available in the ECH region + if !isVersionInList(ver, echVersions) { + continue + } + filteredVersions = append(filteredVersions, ver) } + // Sort the final list so the test cases are run in a sorted order, + // making it easier for humans to follow and consume the output. sortedVers := version.SortableParsedVersions(filteredVersions) sort.Sort(sortedVers) return sortedVers } + +func isVersionInList(candidateVersion *version.ParsedSemVer, allowedVersions []*version.ParsedSemVer) bool { + for _, allowedVersion := range allowedVersions { + if allowedVersion.Equal(*candidateVersion) { + return true + } + } + return false +} From a4f1a5e340b856053faf3a4f38f25d1d7e225ec4 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Wed, 6 Aug 2025 14:15:52 -0700 Subject: [PATCH 2/3] Separate out ECH filtering --- .../ess/upgrade_integrations_server_test.go | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/testing/integration/ess/upgrade_integrations_server_test.go b/testing/integration/ess/upgrade_integrations_server_test.go index 43a05aac633..2a015360be5 100644 --- a/testing/integration/ess/upgrade_integrations_server_test.go +++ b/testing/integration/ess/upgrade_integrations_server_test.go @@ -45,6 +45,9 @@ func TestUpgradeIntegrationsServer(t *testing.T) { t.Fatal("ECH API key missing") } + startVersions := getUpgradeableFIPSVersions(t) + endVersion := define.Version() + prov, err := ess.NewProvisioner(ess.ProvisionerConfig{ Identifier: "it-upgrade-integrations-server", APIKey: echApiKey, @@ -55,8 +58,7 @@ func TestUpgradeIntegrationsServer(t *testing.T) { statefulProv, ok := prov.(*ess.StatefulProvisioner) require.True(t, ok) - startVersions := getUpgradeableFIPSVersions(t, statefulProv) - endVersion := define.Version() + startVersions = filterVersionsForECH(t, startVersions) t.Logf("Running test cases for upgrade from versions [%v] to version [%s]", startVersions, endVersion) for _, startVersion := range startVersions { @@ -109,16 +111,10 @@ func TestUpgradeIntegrationsServer(t *testing.T) { } // getUpgradeableFIPSVersions returns stack versions to use as the start version for an upgrade. -func getUpgradeableFIPSVersions(t *testing.T, prov *ess.StatefulProvisioner) version.SortableParsedVersions { - // Get the list of versions we use in upgrade integration tests in general. +func getUpgradeableFIPSVersions(t *testing.T) version.SortableParsedVersions { versions, err := upgradetest.GetUpgradableVersions() require.NoError(t, err, "could not get upgradable versions") - // Filter the list down to versions that are FIPS-capable and actually available - // in the ECH region - echVersions, err := prov.AvailableVersions() - require.NoError(t, err) - filteredVersions := make([]*version.ParsedSemVer, 0) for _, ver := range versions { // Filter out versions that are not FIPS-capable @@ -126,21 +122,28 @@ func getUpgradeableFIPSVersions(t *testing.T, prov *ess.StatefulProvisioner) ver continue } - // Filter out versions that are not available in the ECH region - if !isVersionInList(ver, echVersions) { - continue - } - filteredVersions = append(filteredVersions, ver) } - // Sort the final list so the test cases are run in a sorted order, - // making it easier for humans to follow and consume the output. sortedVers := version.SortableParsedVersions(filteredVersions) sort.Sort(sortedVers) return sortedVers } +func filterVersionsForECH(t *testing.T, versions []*version.ParsedSemVer, echProv *ess.StatefulProvisioner) []*version.ParsedSemVer { + echVersions, err := echProv.AvailableVersions() + require.NoError(t, err) + + filteredVersions := make([]*version.ParsedSemVer, 0) + for _, ver := range versions { + if isVersionInList(ver, echVersions) { + filteredVersions = append(filteredVersions, ver) + } + } + + return filteredVersions +} + func isVersionInList(candidateVersion *version.ParsedSemVer, allowedVersions []*version.ParsedSemVer) bool { for _, allowedVersion := range allowedVersions { if allowedVersion.Equal(*candidateVersion) { From 3a426950ffe61ff0c7b671914c72b161d84d9669 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 7 Aug 2025 09:51:07 -0700 Subject: [PATCH 3/3] Pass provisioner to filter function --- testing/integration/ess/upgrade_integrations_server_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/integration/ess/upgrade_integrations_server_test.go b/testing/integration/ess/upgrade_integrations_server_test.go index 2a015360be5..67ceef3f685 100644 --- a/testing/integration/ess/upgrade_integrations_server_test.go +++ b/testing/integration/ess/upgrade_integrations_server_test.go @@ -58,7 +58,7 @@ func TestUpgradeIntegrationsServer(t *testing.T) { statefulProv, ok := prov.(*ess.StatefulProvisioner) require.True(t, ok) - startVersions = filterVersionsForECH(t, startVersions) + startVersions = filterVersionsForECH(t, startVersions, statefulProv) t.Logf("Running test cases for upgrade from versions [%v] to version [%s]", startVersions, endVersion) for _, startVersion := range startVersions {