package mapper import ( "testing" clusterApi "edge-infra.dev/pkg/edge/apis/cluster/v1alpha1" gkeClusterApi "edge-infra.dev/pkg/edge/apis/gkecluster/v1alpha1" metastatus "edge-infra.dev/pkg/k8s/meta/status" "github.com/stretchr/testify/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // Test ToConvertUnstructuredToNode func TestToConvertUnstructuredToNode(t *testing.T) { test, _ := ToConvertUnstructuredToNode(unstructarr) actual, _ := ToConvertUnstructuredToNode(unstructarr) assert.Equal(t, test, actual) } var ( clusterSucceeded = metav1.Condition{Status: metav1.ConditionTrue, Type: "Ready", Reason: clusterApi.ClusterReadyReason, Message: "cluster reconciled successfully"} clusterSyncing = metav1.Condition{Status: metav1.ConditionUnknown, Type: "Ready", Reason: metastatus.ProgressingReason, Message: "reconciliation in progress"} clusterSyncing2 = metav1.Condition{Status: metav1.ConditionUnknown, Type: "Ready", Reason: clusterApi.PluginReconcilingReason, Message: "plugin reconciling"} clusterFailed = metav1.Condition{Status: metav1.ConditionFalse, Type: "Ready", Reason: clusterApi.InvalidShipmentSpecReason, Message: "generate shipments failed"} gkeClusterSucceeded = metav1.Condition{Status: metav1.ConditionTrue, Type: "Ready", Reason: gkeClusterApi.GKEClusterReadyReason, Message: "cluster reconciled successfully"} gkeClusterSyncing = metav1.Condition{Status: metav1.ConditionUnknown, Type: "Ready", Reason: metastatus.ProgressingReason, Message: "reconciliation in progress"} gkeClusterSyncing2 = metav1.Condition{Status: metav1.ConditionUnknown, Type: "Ready", Reason: gkeClusterApi.ContainerClusterNotReadyReason, Message: "ContainerCluster not yet ready"} gkeClusterSyncing3 = metav1.Condition{Status: metav1.ConditionUnknown, Type: "Ready", Reason: gkeClusterApi.ContainerClusterNotReadyReason, Message: "ContainerNodePool not yet ready"} gkeClusterFailed = metav1.Condition{Status: metav1.ConditionFalse, Type: "Ready", Reason: gkeClusterApi.EdgeBootstrapFailedReason, Message: "bootstrap failed"} ) func TestToStoreClusterStatus(t *testing.T) { ready, status := ToStoreClusterStatus([]metav1.Condition{clusterSucceeded}, clusterApi.ClusterReadyReason, []string{ metastatus.ProgressingReason, clusterApi.PluginReconcilingReason, }) assert.True(t, ready) assert.Equal(t, metastatus.ReadyCondition, status.Status) assert.Equal(t, "the cluster is ready", status.Message) ready, status = ToStoreClusterStatus([]metav1.Condition{clusterSyncing}, clusterApi.ClusterReadyReason, []string{ metastatus.ProgressingReason, clusterApi.PluginReconcilingReason, }) assert.False(t, ready) assert.Equal(t, Provisioning, status.Status) assert.Equal(t, "Progressing: reconciliation in progress", status.Message) ready, status = ToStoreClusterStatus([]metav1.Condition{clusterSyncing2}, clusterApi.ClusterReadyReason, []string{ metastatus.ProgressingReason, clusterApi.PluginReconcilingReason, }) assert.False(t, ready) assert.Equal(t, Provisioning, status.Status) assert.Equal(t, "PluginReconciling: plugin reconciling", status.Message) ready, status = ToStoreClusterStatus([]metav1.Condition{clusterFailed}, clusterApi.ClusterReadyReason, []string{ metastatus.ProgressingReason, clusterApi.PluginReconcilingReason, }) assert.False(t, ready) assert.Equal(t, ProvisioningError, status.Status) assert.Equal(t, "InvalidShipmentSpec: generate shipments failed", status.Message) // GKE clusters ready, status = ToStoreClusterStatus([]metav1.Condition{gkeClusterSucceeded}, gkeClusterApi.GKEClusterReadyReason, []string{ metastatus.ProgressingReason, gkeClusterApi.ContainerClusterNotReadyReason, gkeClusterApi.ContainerNodePoolNotReadyReason, }) assert.True(t, ready) assert.Equal(t, metastatus.ReadyCondition, status.Status) assert.Equal(t, "the cluster is ready", status.Message) ready, status = ToStoreClusterStatus([]metav1.Condition{gkeClusterSyncing}, gkeClusterApi.GKEClusterReadyReason, []string{ metastatus.ProgressingReason, gkeClusterApi.ContainerClusterNotReadyReason, gkeClusterApi.ContainerNodePoolNotReadyReason, }) assert.False(t, ready) assert.Equal(t, Provisioning, status.Status) assert.Equal(t, "Progressing: reconciliation in progress", status.Message) ready, status = ToStoreClusterStatus([]metav1.Condition{gkeClusterSyncing2}, gkeClusterApi.GKEClusterReadyReason, []string{ metastatus.ProgressingReason, gkeClusterApi.ContainerClusterNotReadyReason, gkeClusterApi.ContainerNodePoolNotReadyReason, }) assert.False(t, ready) assert.Equal(t, Provisioning, status.Status) assert.Equal(t, "ContainerClusterNotReady: ContainerCluster not yet ready", status.Message) ready, status = ToStoreClusterStatus([]metav1.Condition{gkeClusterSyncing3}, gkeClusterApi.GKEClusterReadyReason, []string{ metastatus.ProgressingReason, gkeClusterApi.ContainerClusterNotReadyReason, gkeClusterApi.ContainerNodePoolNotReadyReason, }) assert.False(t, ready) assert.Equal(t, Provisioning, status.Status) assert.Equal(t, "ContainerClusterNotReady: ContainerNodePool not yet ready", status.Message) ready, status = ToStoreClusterStatus([]metav1.Condition{gkeClusterFailed}, gkeClusterApi.GKEClusterReadyReason, []string{ metastatus.ProgressingReason, gkeClusterApi.ContainerClusterNotReadyReason, gkeClusterApi.ContainerNodePoolNotReadyReason, }) assert.False(t, ready) assert.Equal(t, ProvisioningError, status.Status) assert.Equal(t, "EdgeBootstrapFailed: bootstrap failed", status.Message) }