From 374cd683cdcfc9456aad18de25753dbb38ba7a5e Mon Sep 17 00:00:00 2001 From: cskh Date: Tue, 8 Aug 2023 18:23:07 -0400 Subject: [PATCH] =?UTF-8?q?Backport=201.16.x=20Upgrade=20test:=20remove=20?= =?UTF-8?q?outdated=20test=20and=20disable=20log=20due=20to=20verbosity=20?= =?UTF-8?q?(=E2=80=A6=20(#18413)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upgrade test: remove outdated test and disable log due to verbosity (#18403) * remove outdated test * disable log since we have too many parallel tests --- .github/workflows/test-integrations.yml | 4 +- .../upgrade/basic/fullstopupgrade_test.go | 90 +++++++++++++++++++ 2 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 test/integration/consul-container/test/upgrade/basic/fullstopupgrade_test.go diff --git a/.github/workflows/test-integrations.yml b/.github/workflows/test-integrations.yml index b42459331ced..bacf337e3ab5 100644 --- a/.github/workflows/test-integrations.yml +++ b/.github/workflows/test-integrations.yml @@ -515,7 +515,9 @@ jobs: -p=4 \ -tags "${{ env.GOTAGS }}" \ -timeout=30m \ - -json ./... \ + -json \ + ./... \ + --follow-log=false \ --target-image ${{ env.CONSUL_LATEST_IMAGE_NAME }} \ --target-version local \ --latest-image docker.mirror.hashicorp.services/${{ env.CONSUL_LATEST_IMAGE_NAME }} \ diff --git a/test/integration/consul-container/test/upgrade/basic/fullstopupgrade_test.go b/test/integration/consul-container/test/upgrade/basic/fullstopupgrade_test.go new file mode 100644 index 000000000000..6823dfd547bb --- /dev/null +++ b/test/integration/consul-container/test/upgrade/basic/fullstopupgrade_test.go @@ -0,0 +1,90 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package upgrade + +import ( + "context" + "fmt" + "testing" + "time" + + goretry "github.com/avast/retry-go" + "github.com/stretchr/testify/require" + + "github.com/hashicorp/consul/api" + "github.com/hashicorp/consul/sdk/testutil/retry" + libcluster "github.com/hashicorp/consul/test/integration/consul-container/libs/cluster" + libservice "github.com/hashicorp/consul/test/integration/consul-container/libs/service" + "github.com/hashicorp/consul/test/integration/consul-container/libs/topology" + "github.com/hashicorp/consul/test/integration/consul-container/libs/utils" +) + +// Test upgrade a cluster of latest version to the target version +func TestStandardUpgradeToTarget_fromLatest(t *testing.T) { + const numServers = 1 + buildOpts := &libcluster.BuildOptions{ + ConsulImageName: utils.GetLatestImageName(), + ConsulVersion: utils.LatestVersion, + Datacenter: "dc1", + InjectAutoEncryption: true, + } + + cluster, _, _ := topology.NewCluster(t, &topology.ClusterConfig{ + NumServers: numServers, + BuildOpts: buildOpts, + ApplyDefaultProxySettings: true, + }) + client := cluster.APIClient(0) + + libcluster.WaitForLeader(t, cluster, client) + libcluster.WaitForMembers(t, client, numServers) + + // Create a service to be stored in the snapshot + const serviceName = "api" + index := libservice.ServiceCreate(t, client, serviceName) + + require.NoError(t, client.Agent().ServiceRegister( + &api.AgentServiceRegistration{Name: serviceName, Port: 9998}, + )) + err := goretry.Do( + func() error { + ch, errCh := libservice.ServiceHealthBlockingQuery(client, serviceName, index) + select { + case err := <-errCh: + require.NoError(t, err) + case service := <-ch: + index = service[0].Service.ModifyIndex + if len(service) != 1 { + return fmt.Errorf("service is %d, want 1", len(service)) + } + if serviceName != service[0].Service.Service { + return fmt.Errorf("service name is %s, want %s", service[0].Service.Service, serviceName) + } + if service[0].Service.Port != 9998 { + return fmt.Errorf("service is %d, want 9998", service[0].Service.Port) + } + } + return nil + }, + goretry.Attempts(5), + goretry.Delay(time.Second), + ) + require.NoError(t, err) + + // upgrade the cluster to the Target version + t.Logf("initiating standard upgrade to version=%q", utils.TargetVersion) + err = cluster.StandardUpgrade(t, context.Background(), utils.GetTargetImageName(), utils.TargetVersion) + + require.NoError(t, err) + libcluster.WaitForLeader(t, cluster, client) + libcluster.WaitForMembers(t, client, numServers) + + // Verify service is restored from the snapshot + retry.RunWith(&retry.Timer{Timeout: 5 * time.Second, Wait: 500 * time.Microsecond}, t, func(r *retry.R) { + service, _, err := client.Catalog().Service(serviceName, "", &api.QueryOptions{}) + require.NoError(r, err) + require.Len(r, service, 1) + require.Equal(r, serviceName, service[0].ServiceName) + }) +}