github.com/jenkins-x/jx/v2@v2.1.155/pkg/cmd/step/e2e/step_e2e_gc_test.go (about) 1 // +build unit 2 3 package e2e_test 4 5 import ( 6 "testing" 7 "time" 8 9 "github.com/jenkins-x/jx/v2/pkg/cloud/gke" 10 "github.com/jenkins-x/jx/v2/pkg/cluster" 11 "github.com/jenkins-x/jx/v2/pkg/cmd/step/e2e" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestGetBuildNumberCluster(t *testing.T) { 16 t.Parallel() 17 o := e2e.StepE2EGCOptions{} 18 num, err := o.GetBuildNumberFromCluster(getCluster("168", "jenkins-gkebdd", "159")) 19 assert.NoError(t, err) 20 assert.Equal(t, 159, num) 21 num, err = o.GetBuildNumberFromCluster(getCluster("169", "jenkins-gkebdd", "160")) 22 assert.NoError(t, err) 23 assert.Equal(t, 160, num) 24 num, err = o.GetBuildNumberFromCluster(getCluster("169", "jenkins-gkebdd", "xx")) 25 assert.NotNil(t, err) 26 27 } 28 29 func TestDeleteDueToNewerRun(t *testing.T) { 30 t.Parallel() 31 o := e2e.StepE2EGCOptions{} 32 cluster1 := getCluster("168", "jenkins-gkebdd", "159") 33 cluster2 := getCluster("168", "jenkins-gkebdd", "160") 34 clusters := make([]gke.Cluster, 0) 35 clusters = append(clusters, *cluster1, *cluster2) 36 assert.Equal(t, true, o.ShouldDeleteDueToNewerRun(cluster1, clusters)) 37 cluster4 := getCluster("168", "jenkins-gkebdd", "160") 38 clusters = append(clusters, *cluster4) 39 assert.Equal(t, false, o.ShouldDeleteDueToNewerRun(cluster4, clusters)) 40 } 41 42 func TestDeleteDueToNewerRunEKS(t *testing.T) { 43 t.Parallel() 44 o := e2e.StepE2EGCOptions{ 45 Providers: []string{"eks"}, 46 } 47 cluster1 := getEKSCluster("168", "jenkins-gkebdd", "159") 48 cluster2 := getEKSCluster("168", "jenkins-gkebdd", "160") 49 clusters := make([]*cluster.Cluster, 0) 50 clusters = append(clusters, cluster1, cluster2) 51 assert.Equal(t, true, o.ShouldDeleteDueToNewerRunEKS(cluster1, clusters)) 52 cluster4 := getEKSCluster("168", "jenkins-gkebdd", "160") 53 clusters = append(clusters, cluster4) 54 assert.Equal(t, false, o.ShouldDeleteDueToNewerRunEKS(cluster4, clusters)) 55 } 56 57 func TestShouldDeleteMarkedClusterEKS(t *testing.T) { 58 t.Parallel() 59 o := e2e.StepE2EGCOptions{ 60 Providers: []string{"eks"}, 61 } 62 cluster := getEKSCluster("168", "jenkins-gkebdd", "159") 63 cluster2 := getEKSCluster("170", "jenkins-gkebdd", "159") 64 assert.Equal(t, false, o.ShouldDeleteMarkedEKSCluster(cluster)) 65 cluster2.Labels["delete-me"] = "true" 66 assert.Equal(t, true, o.ShouldDeleteMarkedEKSCluster(cluster2)) 67 } 68 69 func TestShouldDeleteMarkedCluster(t *testing.T) { 70 t.Parallel() 71 o := e2e.StepE2EGCOptions{} 72 cluster := getCluster("168", "jenkins-gkebdd", "159") 73 cluster2 := getCluster("170", "jenkins-gkebdd", "159") 74 assert.Equal(t, false, o.ShouldDeleteMarkedCluster(cluster)) 75 cluster2.ResourceLabels["delete-me"] = "true" 76 assert.Equal(t, true, o.ShouldDeleteMarkedCluster(cluster2)) 77 } 78 79 func TestShouldDeleteOlderThanDurationEKS(t *testing.T) { 80 t.Parallel() 81 o := e2e.StepE2EGCOptions{ 82 Providers: []string{"eks"}, 83 } 84 o.Duration = 2 85 cluster := getEKSCluster("168", "jenkins-gkebdd", "159") 86 cluster.Labels["create-time"] = time.Now().UTC().Format("Mon-Jan-2-2006-15-04-05") 87 assert.Equal(t, false, o.ShouldDeleteOlderThanDurationEKS(cluster)) 88 cluster2 := getEKSCluster("170", "jenkins-gkebdd", "159") 89 cluster2.Labels["create-time"] = time.Now().UTC().Add(-3 * time.Hour).Format("Mon-Jan-2-2006-15-04-05") 90 assert.Equal(t, true, o.ShouldDeleteOlderThanDurationEKS(cluster2)) 91 cluster2.Labels["keep-me"] = "true" 92 assert.Equal(t, false, o.ShouldDeleteOlderThanDurationEKS(cluster2)) 93 } 94 95 func TestShouldDeleteOlderThanDuration(t *testing.T) { 96 t.Parallel() 97 o := e2e.StepE2EGCOptions{} 98 o.Duration = 2 99 cluster := getCluster("168", "jenkins-gkebdd", "159") 100 cluster.ResourceLabels["create-time"] = time.Now().UTC().Format("Mon-Jan-2-2006-15-04-05") 101 assert.Equal(t, false, o.ShouldDeleteOlderThanDuration(cluster)) 102 cluster2 := getCluster("170", "jenkins-gkebdd", "159") 103 cluster2.ResourceLabels["create-time"] = time.Now().UTC().Add(-3 * time.Hour).Format("Mon-Jan-2-2006-15-04-05") 104 assert.Equal(t, true, o.ShouldDeleteOlderThanDuration(cluster2)) 105 cluster2.ResourceLabels["keep-me"] = "true" 106 assert.Equal(t, false, o.ShouldDeleteOlderThanDuration(cluster2)) 107 } 108 109 func getEKSCluster(prNumber string, clusterType string, buildNumber string) *cluster.Cluster { 110 resourceLabels := make(map[string]string) 111 resourceLabels["branch"] = "pr-" + prNumber 112 resourceLabels["cluster"] = clusterType 113 return &cluster.Cluster{ 114 Name: resourceLabels["branch"] + "-" + buildNumber + "-" + clusterType, 115 Labels: resourceLabels, 116 Status: "RUNNING", 117 } 118 } 119 120 func getCluster(prNumber string, clusterType string, buildNumber string) *gke.Cluster { 121 resourceLabels := make(map[string]string) 122 resourceLabels["branch"] = "pr-" + prNumber 123 resourceLabels["cluster"] = clusterType 124 return &gke.Cluster{ 125 Name: resourceLabels["branch"] + "-" + buildNumber + "-" + clusterType, 126 ResourceLabels: resourceLabels, 127 Status: "RUNNING", 128 } 129 }