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  }