From c87bf16c987b5f7c44630801dd085a7b7e4affa5 Mon Sep 17 00:00:00 2001 From: liuwei Date: Mon, 15 Jun 2020 15:33:40 +0800 Subject: [PATCH] add heartbeat e2e test case --- test/e2e/loopback_test.go | 78 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/test/e2e/loopback_test.go b/test/e2e/loopback_test.go index c61f2630e..08542277a 100644 --- a/test/e2e/loopback_test.go +++ b/test/e2e/loopback_test.go @@ -228,13 +228,14 @@ var _ = ginkgo.Describe("Loopback registration [development]", func() { gomega.Expect(err).ToNot(gomega.HaveOccurred()) managedCluster.Spec.HubAcceptsClient = true + managedCluster.Spec.LeaseDurationSeconds = 5 managedCluster, err = managedClusters.Update(context.TODO(), managedCluster, metav1.UpdateOptions{}) return err }) gomega.Expect(err).ToNot(gomega.HaveOccurred()) ginkgo.By("Waiting for ManagedCluster to have HubAccepted=true") - err = wait.Poll(1*time.Second, 30*time.Second, func() (bool, error) { + err = wait.Poll(1*time.Second, 90*time.Second, func() (bool, error) { var err error managedCluster, err := managedClusters.Get(context.TODO(), clusterName, metav1.GetOptions{}) if err != nil { @@ -253,6 +254,81 @@ var _ = ginkgo.Describe("Loopback registration [development]", func() { return false, nil }) gomega.Expect(err).ToNot(gomega.HaveOccurred()) + + ginkgo.By("Waiting for ManagedCluster to join the hub cluser") + err = wait.Poll(1*time.Second, 90*time.Second, func() (bool, error) { + var err error + managedCluster, err := managedClusters.Get(context.TODO(), clusterName, metav1.GetOptions{}) + if err != nil { + return false, err + } + + condition := helpers.FindManagedClusterCondition(managedCluster.Status.Conditions, clusterv1.ManagedClusterConditionJoined) + + return helpers.IsConditionTrue(condition), nil + }) + gomega.Expect(err).ToNot(gomega.HaveOccurred()) + + ginkgo.By("Waiting for ManagedCluster available") + err = wait.Poll(1*time.Second, 90*time.Second, func() (bool, error) { + managedCluster, err := managedClusters.Get(context.TODO(), clusterName, metav1.GetOptions{}) + if err != nil { + return false, err + } + + condition := helpers.FindManagedClusterCondition(managedCluster.Status.Conditions, clusterv1.ManagedClusterConditionAvailable) + return helpers.IsConditionTrue(condition), nil + }) + gomega.Expect(err).ToNot(gomega.HaveOccurred()) + + leaseName := fmt.Sprintf("cluster-lease-%s", clusterName) + ginkgo.By(fmt.Sprintf("Make sure ManagedCluster lease %q exists", leaseName)) + var lastRenewTime *metav1.MicroTime + err = wait.Poll(1*time.Second, 30*time.Second, func() (bool, error) { + lease, err := hubClient.CoordinationV1().Leases(clusterName).Get(context.TODO(), leaseName, metav1.GetOptions{}) + if err != nil { + return false, err + } + lastRenewTime = lease.Spec.RenewTime + return true, nil + }) + gomega.Expect(err).ToNot(gomega.HaveOccurred()) + + ginkgo.By(fmt.Sprintf("Make sure ManagedCluster lease %q is updated", leaseName)) + err = wait.Poll(1*time.Second, 30*time.Second, func() (bool, error) { + lease, err := hubClient.CoordinationV1().Leases(clusterName).Get(context.TODO(), leaseName, metav1.GetOptions{}) + if err != nil { + return false, err + } + leaseUpdated := lastRenewTime.Before(lease.Spec.RenewTime) + if leaseUpdated { + lastRenewTime = lease.Spec.RenewTime + } + return leaseUpdated, nil + }) + gomega.Expect(err).ToNot(gomega.HaveOccurred()) + + ginkgo.By(fmt.Sprintf("Make sure ManagedCluster lease %q is updated again", leaseName)) + err = wait.Poll(1*time.Second, 30*time.Second, func() (bool, error) { + lease, err := hubClient.CoordinationV1().Leases(clusterName).Get(context.TODO(), leaseName, metav1.GetOptions{}) + if err != nil { + return false, err + } + return lastRenewTime.Before(lease.Spec.RenewTime), nil + }) + gomega.Expect(err).ToNot(gomega.HaveOccurred()) + + ginkgo.By("Make sure ManagedCluster is still available") + err = wait.Poll(1*time.Second, 30*time.Second, func() (bool, error) { + managedCluster, err := managedClusters.Get(context.TODO(), clusterName, metav1.GetOptions{}) + if err != nil { + return false, err + } + + condition := helpers.FindManagedClusterCondition(managedCluster.Status.Conditions, clusterv1.ManagedClusterConditionAvailable) + return helpers.IsConditionTrue(condition), nil + }) + gomega.Expect(err).ToNot(gomega.HaveOccurred()) }) })