...

Source file src/edge-infra.dev/pkg/edge/api/graph/mapper/mapper_store_test.go

Documentation: edge-infra.dev/pkg/edge/api/graph/mapper

     1  package mapper
     2  
     3  import (
     4  	"testing"
     5  
     6  	clusterApi "edge-infra.dev/pkg/edge/apis/cluster/v1alpha1"
     7  	gkeClusterApi "edge-infra.dev/pkg/edge/apis/gkecluster/v1alpha1"
     8  	metastatus "edge-infra.dev/pkg/k8s/meta/status"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  
    12  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    13  )
    14  
    15  // Test ToConvertUnstructuredToNode
    16  func TestToConvertUnstructuredToNode(t *testing.T) {
    17  	test, _ := ToConvertUnstructuredToNode(unstructarr)
    18  	actual, _ := ToConvertUnstructuredToNode(unstructarr)
    19  	assert.Equal(t, test, actual)
    20  }
    21  
    22  var (
    23  	clusterSucceeded = metav1.Condition{Status: metav1.ConditionTrue, Type: "Ready", Reason: clusterApi.ClusterReadyReason, Message: "cluster reconciled successfully"}
    24  	clusterSyncing   = metav1.Condition{Status: metav1.ConditionUnknown, Type: "Ready", Reason: metastatus.ProgressingReason, Message: "reconciliation in progress"}
    25  	clusterSyncing2  = metav1.Condition{Status: metav1.ConditionUnknown, Type: "Ready", Reason: clusterApi.PluginReconcilingReason, Message: "plugin reconciling"}
    26  	clusterFailed    = metav1.Condition{Status: metav1.ConditionFalse, Type: "Ready", Reason: clusterApi.InvalidShipmentSpecReason, Message: "generate shipments failed"}
    27  
    28  	gkeClusterSucceeded = metav1.Condition{Status: metav1.ConditionTrue, Type: "Ready", Reason: gkeClusterApi.GKEClusterReadyReason, Message: "cluster reconciled successfully"}
    29  	gkeClusterSyncing   = metav1.Condition{Status: metav1.ConditionUnknown, Type: "Ready", Reason: metastatus.ProgressingReason, Message: "reconciliation in progress"}
    30  	gkeClusterSyncing2  = metav1.Condition{Status: metav1.ConditionUnknown, Type: "Ready", Reason: gkeClusterApi.ContainerClusterNotReadyReason, Message: "ContainerCluster not yet ready"}
    31  	gkeClusterSyncing3  = metav1.Condition{Status: metav1.ConditionUnknown, Type: "Ready", Reason: gkeClusterApi.ContainerClusterNotReadyReason, Message: "ContainerNodePool not yet ready"}
    32  	gkeClusterFailed    = metav1.Condition{Status: metav1.ConditionFalse, Type: "Ready", Reason: gkeClusterApi.EdgeBootstrapFailedReason, Message: "bootstrap failed"}
    33  )
    34  
    35  func TestToStoreClusterStatus(t *testing.T) {
    36  	ready, status := ToStoreClusterStatus([]metav1.Condition{clusterSucceeded}, clusterApi.ClusterReadyReason, []string{
    37  		metastatus.ProgressingReason,
    38  		clusterApi.PluginReconcilingReason,
    39  	})
    40  	assert.True(t, ready)
    41  	assert.Equal(t, metastatus.ReadyCondition, status.Status)
    42  	assert.Equal(t, "the cluster is ready", status.Message)
    43  
    44  	ready, status = ToStoreClusterStatus([]metav1.Condition{clusterSyncing}, clusterApi.ClusterReadyReason, []string{
    45  		metastatus.ProgressingReason,
    46  		clusterApi.PluginReconcilingReason,
    47  	})
    48  	assert.False(t, ready)
    49  	assert.Equal(t, Provisioning, status.Status)
    50  	assert.Equal(t, "Progressing: reconciliation in progress", status.Message)
    51  
    52  	ready, status = ToStoreClusterStatus([]metav1.Condition{clusterSyncing2}, clusterApi.ClusterReadyReason, []string{
    53  		metastatus.ProgressingReason,
    54  		clusterApi.PluginReconcilingReason,
    55  	})
    56  	assert.False(t, ready)
    57  	assert.Equal(t, Provisioning, status.Status)
    58  	assert.Equal(t, "PluginReconciling: plugin reconciling", status.Message)
    59  
    60  	ready, status = ToStoreClusterStatus([]metav1.Condition{clusterFailed}, clusterApi.ClusterReadyReason, []string{
    61  		metastatus.ProgressingReason,
    62  		clusterApi.PluginReconcilingReason,
    63  	})
    64  	assert.False(t, ready)
    65  	assert.Equal(t, ProvisioningError, status.Status)
    66  	assert.Equal(t, "InvalidShipmentSpec: generate shipments failed", status.Message)
    67  
    68  	// GKE clusters
    69  	ready, status = ToStoreClusterStatus([]metav1.Condition{gkeClusterSucceeded}, gkeClusterApi.GKEClusterReadyReason, []string{
    70  		metastatus.ProgressingReason,
    71  		gkeClusterApi.ContainerClusterNotReadyReason,
    72  		gkeClusterApi.ContainerNodePoolNotReadyReason,
    73  	})
    74  	assert.True(t, ready)
    75  	assert.Equal(t, metastatus.ReadyCondition, status.Status)
    76  	assert.Equal(t, "the cluster is ready", status.Message)
    77  
    78  	ready, status = ToStoreClusterStatus([]metav1.Condition{gkeClusterSyncing}, gkeClusterApi.GKEClusterReadyReason, []string{
    79  		metastatus.ProgressingReason,
    80  		gkeClusterApi.ContainerClusterNotReadyReason,
    81  		gkeClusterApi.ContainerNodePoolNotReadyReason,
    82  	})
    83  	assert.False(t, ready)
    84  	assert.Equal(t, Provisioning, status.Status)
    85  	assert.Equal(t, "Progressing: reconciliation in progress", status.Message)
    86  
    87  	ready, status = ToStoreClusterStatus([]metav1.Condition{gkeClusterSyncing2}, gkeClusterApi.GKEClusterReadyReason, []string{
    88  		metastatus.ProgressingReason,
    89  		gkeClusterApi.ContainerClusterNotReadyReason,
    90  		gkeClusterApi.ContainerNodePoolNotReadyReason,
    91  	})
    92  	assert.False(t, ready)
    93  	assert.Equal(t, Provisioning, status.Status)
    94  	assert.Equal(t, "ContainerClusterNotReady: ContainerCluster not yet ready", status.Message)
    95  
    96  	ready, status = ToStoreClusterStatus([]metav1.Condition{gkeClusterSyncing3}, gkeClusterApi.GKEClusterReadyReason, []string{
    97  		metastatus.ProgressingReason,
    98  		gkeClusterApi.ContainerClusterNotReadyReason,
    99  		gkeClusterApi.ContainerNodePoolNotReadyReason,
   100  	})
   101  	assert.False(t, ready)
   102  	assert.Equal(t, Provisioning, status.Status)
   103  	assert.Equal(t, "ContainerClusterNotReady: ContainerNodePool not yet ready", status.Message)
   104  
   105  	ready, status = ToStoreClusterStatus([]metav1.Condition{gkeClusterFailed}, gkeClusterApi.GKEClusterReadyReason, []string{
   106  		metastatus.ProgressingReason,
   107  		gkeClusterApi.ContainerClusterNotReadyReason,
   108  		gkeClusterApi.ContainerNodePoolNotReadyReason,
   109  	})
   110  	assert.False(t, ready)
   111  	assert.Equal(t, ProvisioningError, status.Status)
   112  	assert.Equal(t, "EdgeBootstrapFailed: bootstrap failed", status.Message)
   113  }
   114  

View as plain text