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
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
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