Skip to content

Commit

Permalink
Add SynchronizedBeforeSuite to avoid panic and race condition with co…
Browse files Browse the repository at this point in the history
…nfig file (#105)

* Add SynchronizedBeforeSuite to avoid panic and race condition with config file

Signed-off-by: Parthvi <parthvi.vala@suse.com>

* Attempt at fixing error with k8s-chart-support tests

Signed-off-by: Parthvi <parthvi.vala@suse.com>

* Update hosted/helpers/helper_common.go

Co-authored-by: Chandan Pinjani <chandan.pinjani@suse.com>
Signed-off-by: Parthvi Vala <parthvi.vala@gmail.com>

---------

Signed-off-by: Parthvi <parthvi.vala@suse.com>
Signed-off-by: Parthvi Vala <parthvi.vala@gmail.com>
Co-authored-by: Chandan Pinjani <chandan.pinjani@suse.com>
  • Loading branch information
valaparthvi and cpinjani authored May 13, 2024
1 parent 3487fdc commit 4d83bc9
Show file tree
Hide file tree
Showing 14 changed files with 100 additions and 44 deletions.
7 changes: 5 additions & 2 deletions hosted/aks/k8s_chart_support/k8s_chart_support_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,21 @@ func TestK8sChartSupport(t *testing.T) {
RunSpecs(t, "K8sChartSupport Suite")
}

var _ = BeforeSuite(func() {
var _ = SynchronizedBeforeSuite(func() []byte {
helpers.CommonSynchronizedBeforeSuite()
return nil
}, func() {
Expect(helpers.Kubeconfig).ToNot(BeEmpty())

By("Adding the necessary chart repos", func() {
helpers.AddRancherCharts()
})

ctx = helpers.CommonBeforeSuite()
})

var _ = BeforeEach(func() {
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
clusterName = namegen.AppendRandomString(helpers.ClusterNamePrefix)
k8sVersion, err = helper.GetK8sVersion(ctx.RancherClient, ctx.CloudCred.ID, location)
Expect(err).To(BeNil())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,10 @@ func TestK8sChartSupportUpgrade(t *testing.T) {
RunSpecs(t, "K8sChartSupportUpgrade Suite")
}

var _ = BeforeSuite(func() {
var _ = SynchronizedBeforeSuite(func() []byte {
helpers.CommonSynchronizedBeforeSuite()
return nil
}, func() {
Expect(helpers.RancherVersion).ToNot(BeEmpty())
// For upgrade tests, the rancher version should not be an unreleased version (for e.g. 2.8-head)
Expect(helpers.RancherVersion).ToNot(ContainSubstring("head"))
Expand All @@ -52,14 +55,12 @@ var _ = BeforeSuite(func() {
helpers.DeployRancherManager(helpers.RancherVersion, true)
})

ctx = helpers.CommonBeforeSuite()
})

var _ = BeforeEach(func() {
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
Expect(err).To(BeNil())
clusterName = namegen.AppendRandomString(helpers.ClusterNamePrefix)

k8sVersion, err = helper.GetK8sVersion(ctx.RancherClient, ctx.CloudCred.ID, location)
Expect(err).To(BeNil())
Expect(k8sVersion).ToNot(BeEmpty())
Expand Down
8 changes: 7 additions & 1 deletion hosted/aks/p0/p0_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,15 @@ func TestP0(t *testing.T) {
RunSpecs(t, "P0 Suite")
}

var _ = SynchronizedBeforeSuite(func() []byte {
helpers.CommonSynchronizedBeforeSuite()
return nil
}, func() {
ctx = helpers.CommonBeforeSuite()
})

var _ = BeforeEach(func() {
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
clusterName = namegen.AppendRandomString(helpers.ClusterNamePrefix)
k8sVersion, err = helper.GetK8sVersion(ctx.RancherClient, ctx.CloudCred.ID, location)
Expect(err).To(BeNil())
Expand Down
3 changes: 2 additions & 1 deletion hosted/aks/support_matrix/support_matrix_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ var (

func TestSupportMatrix(t *testing.T) {
RegisterFailHandler(Fail)
helpers.CommonSynchronizedBeforeSuite()
ctx = helpers.CommonBeforeSuite()
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
availableVersionList, err = helper.ListSingleVariantAKSAvailableVersions(ctx.RancherClient, ctx.CloudCred.ID, location)
Expect(err).To(BeNil())
RunSpecs(t, "SupportMatrix Suite")
Expand Down
8 changes: 5 additions & 3 deletions hosted/eks/k8s_chart_support/k8s_chart_support_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,20 @@ func TestK8sChartSupport(t *testing.T) {
RunSpecs(t, "K8sChartSupport Suite")
}

var _ = BeforeSuite(func() {
var _ = SynchronizedBeforeSuite(func() []byte {
helpers.CommonSynchronizedBeforeSuite()
return nil
}, func() {
Expect(helpers.Kubeconfig).ToNot(BeEmpty())

By("Adding the necessary chart repos", func() {
helpers.AddRancherCharts()
})

ctx = helpers.CommonBeforeSuite()
})

var _ = BeforeEach(func() {
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
clusterName = namegen.AppendRandomString(helpers.ClusterNamePrefix)

k8sVersion, err = helper.GetK8sVersion(ctx.RancherClient)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,10 @@ func TestK8sChartSupportUpgrade(t *testing.T) {
RunSpecs(t, "K8sChartSupportUpgrade Suite")
}

var _ = BeforeSuite(func() {
var _ = SynchronizedBeforeSuite(func() []byte {
helpers.CommonSynchronizedBeforeSuite()
return nil
}, func() {
Expect(helpers.RancherVersion).ToNot(BeEmpty())
// For upgrade tests, the rancher version should not be an unreleased version (for e.g. 2.8-head)
Expect(helpers.RancherVersion).ToNot(ContainSubstring("head"))
Expand All @@ -52,12 +55,11 @@ var _ = BeforeSuite(func() {
helpers.DeployRancherManager(helpers.RancherVersion, true)
})

ctx = helpers.CommonBeforeSuite()
})

var _ = BeforeEach(func() {
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
Expect(err).To(BeNil())
clusterName = namegen.AppendRandomString(helpers.ClusterNamePrefix)
k8sVersion, err = helper.GetK8sVersion(ctx.RancherClient)
Expect(err).To(BeNil())
Expand Down
8 changes: 7 additions & 1 deletion hosted/eks/p0/p0_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,15 @@ func TestP0(t *testing.T) {
RunSpecs(t, "P0 Suite")
}

var _ = SynchronizedBeforeSuite(func() []byte {
helpers.CommonSynchronizedBeforeSuite()
return nil
}, func() {
ctx = helpers.CommonBeforeSuite()
})

var _ = BeforeEach(func() {
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
clusterName = namegen.AppendRandomString(helpers.ClusterNamePrefix)
k8sVersion, err = helper.GetK8sVersion(ctx.RancherClient)
Expect(err).To(BeNil())
Expand Down
3 changes: 2 additions & 1 deletion hosted/eks/support_matrix/support_matrix_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ var (

func TestSupportMatrix(t *testing.T) {
RegisterFailHandler(Fail)
helpers.CommonSynchronizedBeforeSuite()
ctx = helpers.CommonBeforeSuite()
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
availableVersionList, err = kubernetesversions.ListEKSAllVersions(ctx.RancherClient)
Expect(err).To(BeNil())
Expect(availableVersionList).ToNot(BeEmpty())
Expand Down
8 changes: 6 additions & 2 deletions hosted/gke/k8s_chart_support/k8s_chart_support_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,21 @@ func TestK8sChartSupport(t *testing.T) {
RunSpecs(t, "K8sChartSupport Suite")
}

var _ = BeforeSuite(func() {
var _ = SynchronizedBeforeSuite(func() []byte {
helpers.CommonSynchronizedBeforeSuite()
return nil
}, func() {
Expect(helpers.Kubeconfig).ToNot(BeEmpty())

By("Adding the necessary chart repos", func() {
helpers.AddRancherCharts()
})

ctx = helpers.CommonBeforeSuite()
})

var _ = BeforeEach(func() {
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
clusterName = namegen.AppendRandomString(helpers.ClusterNamePrefix)

k8sVersion, err = helper.GetK8sVersion(ctx.RancherClient, project, ctx.CloudCred.ID, zone, "", false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,10 @@ func TestK8sChartSupportUpgrade(t *testing.T) {
RunSpecs(t, "K8sChartSupportUpgrade Suite")
}

var _ = BeforeSuite(func() {
var _ = SynchronizedBeforeSuite(func() []byte {
helpers.CommonSynchronizedBeforeSuite()
return nil
}, func() {
Expect(helpers.K8sUpgradedMinorVersion).ToNot(BeEmpty())
Expect(helpers.Kubeconfig).ToNot(BeEmpty())

Expand All @@ -49,19 +52,17 @@ var _ = BeforeSuite(func() {
helpers.DeployRancherManager(helpers.RancherVersion, true)
})

ctx = helpers.CommonBeforeSuite()
})

var _ = BeforeEach(func() {
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
Expect(err).To(BeNil())
clusterName = namegen.AppendRandomString(helpers.ClusterNamePrefix)

// For k8s chart support upgrade we want to begin with the default k8s version; we will upgrade rancher and then upgrade k8s to the default available there.
k8sVersion, err = helper.GetK8sVersion(ctx.RancherClient, project, ctx.CloudCred.ID, zone, "", false)
Expect(err).To(BeNil())
GinkgoLogr.Info(fmt.Sprintf("Using GKE version %s", k8sVersion))

})

var _ = AfterEach(func() {
Expand Down
8 changes: 7 additions & 1 deletion hosted/gke/p0/p0_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,14 @@ func TestP0(t *testing.T) {
RunSpecs(t, "P0 Suite")
}

var _ = SynchronizedBeforeSuite(func() []byte {
helpers.CommonSynchronizedBeforeSuite()
return nil
}, func() {
ctx = helpers.CommonBeforeSuite()
})

var _ = BeforeEach(func() {
ctx = helpers.CommonBeforeSuite(helpers.Provider)
clusterName = namegen.AppendRandomString(helpers.ClusterNamePrefix)
})

Expand Down
9 changes: 7 additions & 2 deletions hosted/gke/p1/p1_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,15 @@ func TestP1(t *testing.T) {
RunSpecs(t, "P1 Suite")
}

var _ = SynchronizedBeforeSuite(func() []byte {
helpers.CommonSynchronizedBeforeSuite()
return nil
}, func() {
ctx = helpers.CommonBeforeSuite()
})

var _ = BeforeEach(func() {
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
Expect(err).To(BeNil())
clusterName = namegen.AppendRandomString(helpers.ClusterNamePrefix)
k8sVersion, err = helper.GetK8sVersion(ctx.RancherClient, project, ctx.CloudCred.ID, zone, "", false)
Expect(err).To(BeNil())
Expand Down
3 changes: 2 additions & 1 deletion hosted/gke/support_matrix/support_matrix_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ var (

func TestSupportMatrix(t *testing.T) {
RegisterFailHandler(Fail)
helpers.CommonSynchronizedBeforeSuite()
ctx = helpers.CommonBeforeSuite()
var err error
ctx = helpers.CommonBeforeSuite(helpers.Provider)
availableVersionList, err = helper.ListSingleVariantGKEAvailableVersions(ctx.RancherClient, project, ctx.CloudCred.ID, zone, "")
Expect(err).To(BeNil())
RunSpecs(t, "SupportMatrix Suite")
Expand Down
53 changes: 35 additions & 18 deletions hosted/helpers/helper_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func CommonBeforeSuite(cloud string) Context {
func CommonSynchronizedBeforeSuite() {
ginkgo.GinkgoLogr.Info("Using Common SynchronizedBeforeSuite ...")

rancherConfig := new(rancher.Config)

Expand All @@ -43,6 +44,37 @@ func CommonBeforeSuite(cloud string) Context {

config.UpdateConfig(rancher.ConfigurationFileKey, rancherConfig)

switch Provider {
case "aks":
credentialConfig := new(cloudcredentials.AzureCredentialConfig)
config.LoadAndUpdateConfig("azureCredentials", credentialConfig, func() {
credentialConfig.ClientID = os.Getenv("AKS_CLIENT_ID")
credentialConfig.SubscriptionID = os.Getenv("AKS_SUBSCRIPTION_ID")
credentialConfig.ClientSecret = os.Getenv("AKS_CLIENT_SECRET")
})
case "eks":
credentialConfig := new(cloudcredentials.AmazonEC2CredentialConfig)
config.LoadAndUpdateConfig("awsCredentials", credentialConfig, func() {
credentialConfig.AccessKey = os.Getenv("AWS_ACCESS_KEY_ID")
credentialConfig.SecretKey = os.Getenv("AWS_SECRET_ACCESS_KEY")
credentialConfig.DefaultRegion = GetEKSRegion()
})

case "gke":
credentialConfig := new(cloudcredentials.GoogleCredentialConfig)
config.LoadAndUpdateConfig("googleCredentials", credentialConfig, func() {
credentialConfig.AuthEncodedJSON = os.Getenv("GCP_CREDENTIALS")
})
}

}

func CommonBeforeSuite() Context {
ginkgo.GinkgoLogr.Info("Using Common BeforeSuite ...")

rancherConfig := new(rancher.Config)
config.LoadConfig(rancher.ConfigurationFileKey, rancherConfig)

testSession := session.NewSession()
rancherClient, err := rancher.NewClient(rancherConfig.AdminToken, testSession)
Expect(err).To(BeNil())
Expand All @@ -57,30 +89,15 @@ func CommonBeforeSuite(cloud string) Context {
Expect(err).To(BeNil())

var cloudCredential *cloudcredentials.CloudCredential
switch cloud {

switch Provider {
case "aks":
credentialConfig := new(cloudcredentials.AzureCredentialConfig)
config.LoadAndUpdateConfig("azureCredentials", credentialConfig, func() {
credentialConfig.ClientID = os.Getenv("AKS_CLIENT_ID")
credentialConfig.SubscriptionID = os.Getenv("AKS_SUBSCRIPTION_ID")
credentialConfig.ClientSecret = os.Getenv("AKS_CLIENT_SECRET")
})
cloudCredential, err = azure.CreateAzureCloudCredentials(rancherClient)
Expect(err).To(BeNil())
case "eks":
credentialConfig := new(cloudcredentials.AmazonEC2CredentialConfig)
config.LoadAndUpdateConfig("awsCredentials", credentialConfig, func() {
credentialConfig.AccessKey = os.Getenv("AWS_ACCESS_KEY_ID")
credentialConfig.SecretKey = os.Getenv("AWS_SECRET_ACCESS_KEY")
credentialConfig.DefaultRegion = GetEKSRegion()
})
cloudCredential, err = aws.CreateAWSCloudCredentials(rancherClient)
Expect(err).To(BeNil())
case "gke":
credentialConfig := new(cloudcredentials.GoogleCredentialConfig)
config.LoadAndUpdateConfig("googleCredentials", credentialConfig, func() {
credentialConfig.AuthEncodedJSON = os.Getenv("GCP_CREDENTIALS")
})
cloudCredential, err = google.CreateGoogleCloudCredentials(rancherClient)
Expect(err).To(BeNil())
}
Expand Down

0 comments on commit 4d83bc9

Please sign in to comment.