-
Notifications
You must be signed in to change notification settings - Fork 173
Expand file tree
/
Copy pathetcd_test.go
More file actions
66 lines (56 loc) · 2.05 KB
/
Copy pathetcd_test.go
File metadata and controls
66 lines (56 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package etcd
import (
"context"
"testing"
v1 "github.com/openshift/api/operator/v1"
"github.com/openshift/library-go/pkg/operator/v1helpers"
"github.com/stretchr/testify/require"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes/fake"
"github.com/openshift/cluster-etcd-operator/pkg/operator/ceohelpers"
)
func TestRemoveStaticContainer(t *testing.T) {
ctx := context.Background()
operatorClient := newFakeOperatorClient()
kubeClient := fake.NewSimpleClientset()
err := RemoveStaticContainer(ctx, operatorClient, kubeClient)
require.NoError(t, err)
_, status, _, err := operatorClient.GetStaticPodOperatorState()
require.NoError(t, err)
require.True(t, v1helpers.IsOperatorConditionTrue(status.Conditions, ceohelpers.OperatorConditionExternalEtcdReadyForTransition))
require.True(t, v1helpers.IsOperatorConditionTrue(status.Conditions, ceohelpers.OperatorConditionExternalEtcdHasCompletedTransition))
events, err := kubeClient.CoreV1().Events("openshift-etcd").List(ctx, metav1.ListOptions{})
require.NoError(t, err)
expectedReasons := map[string]bool{
"EtcdTransitionStarted": true,
"EtcdTransitionWaitingForRemoval": true,
"EtcdTransitionStaticContainerRemoved": true,
"EtcdTransitionCompleted": true,
}
require.Len(t, events.Items, len(expectedReasons))
for _, event := range events.Items {
require.True(t, expectedReasons[event.Reason], "unexpected event reason: %s", event.Reason)
require.Equal(t, "Normal", event.Type)
require.Equal(t, "tnf-setup-runner", event.Source.Component)
delete(expectedReasons, event.Reason)
}
require.Empty(t, expectedReasons, "missing events: %v", expectedReasons)
}
func newFakeOperatorClient() v1helpers.StaticPodOperatorClient {
return v1helpers.NewFakeStaticPodOperatorClient(
&v1.StaticPodOperatorSpec{},
&v1.StaticPodOperatorStatus{
OperatorStatus: v1.OperatorStatus{
LatestAvailableRevision: 1,
},
NodeStatuses: []v1.NodeStatus{
{
NodeName: "master-0",
CurrentRevision: 1,
},
},
},
nil,
nil,
)
}