From 9acb4e08b96c3c7f5367b7c092b93458a80e6ccb Mon Sep 17 00:00:00 2001 From: Moritz Sanft <58110325+msanft@users.noreply.github.com> Date: Tue, 21 May 2024 16:22:43 +0200 Subject: [PATCH] bootstrapper: add test cases --- .../internal/kubernetes/kubernetes.go | 6 +- .../internal/kubernetes/kubernetes_test.go | 58 ++++++++++++++----- 2 files changed, 46 insertions(+), 18 deletions(-) diff --git a/bootstrapper/internal/kubernetes/kubernetes.go b/bootstrapper/internal/kubernetes/kubernetes.go index cbe58b709..a2c2ec1e9 100644 --- a/bootstrapper/internal/kubernetes/kubernetes.go +++ b/bootstrapper/internal/kubernetes/kubernetes.go @@ -153,11 +153,7 @@ func (k *KubeWrapper) InitCluster( } k.log.Info("Prioritizing etcd I/O") - err = k.etcdIOPrioritizer.PrioritizeIO() - if errors.Is(err, etcdio.ErrNoEtcdProcess) { - k.log.Warn("Skipping etcd I/O prioritization as etcd process is not running. " + - "This is expected if this node is a non-control-plane node.") - } else if err != nil { + if err := k.etcdIOPrioritizer.PrioritizeIO(); err != nil { return nil, fmt.Errorf("prioritizing etcd I/O: %w", err) } diff --git a/bootstrapper/internal/kubernetes/kubernetes_test.go b/bootstrapper/internal/kubernetes/kubernetes_test.go index 746754676..a2d54bb5b 100644 --- a/bootstrapper/internal/kubernetes/kubernetes_test.go +++ b/bootstrapper/internal/kubernetes/kubernetes_test.go @@ -14,6 +14,7 @@ import ( "strconv" "testing" + "github.com/edgelesssys/constellation/v2/bootstrapper/internal/etcdio" "github.com/edgelesssys/constellation/v2/bootstrapper/internal/kubernetes/k8sapi" "github.com/edgelesssys/constellation/v2/bootstrapper/internal/kubernetes/kubewaiter" "github.com/edgelesssys/constellation/v2/internal/cloud/metadata" @@ -181,6 +182,14 @@ func TestInitCluster(t *testing.T) { k8sVersion: "1.19", wantErr: true, }, + "etcd prioritizer fails on error": { + clusterUtil: stubClusterUtil{kubeconfig: []byte("someKubeconfig")}, + kubeAPIWaiter: stubKubeAPIWaiter{}, + etcdIOPrioritizer: stubEtcdIOPrioritizer{assert.AnError}, + providerMetadata: &stubProviderMetadata{}, + k8sVersion: versions.Default, + wantErr: true, + }, } for name, tc := range testCases { @@ -189,14 +198,15 @@ func TestInitCluster(t *testing.T) { require := require.New(t) kube := KubeWrapper{ - cloudProvider: "aws", // provide a valid cloud provider for cilium installation - clusterUtil: &tc.clusterUtil, - providerMetadata: tc.providerMetadata, - kubeAPIWaiter: &tc.kubeAPIWaiter, - configProvider: &stubConfigProvider{initConfig: k8sapi.KubeadmInitYAML{}}, - client: &tc.kubectl, - getIPAddr: func() (string, error) { return privateIP, nil }, - log: logger.NewTest(t), + cloudProvider: "aws", // provide a valid cloud provider for cilium installation + clusterUtil: &tc.clusterUtil, + providerMetadata: tc.providerMetadata, + kubeAPIWaiter: &tc.kubeAPIWaiter, + configProvider: &stubConfigProvider{initConfig: k8sapi.KubeadmInitYAML{}}, + client: &tc.kubectl, + getIPAddr: func() (string, error) { return privateIP, nil }, + etcdIOPrioritizer: &tc.etcdIOPrioritizer, + log: logger.NewTest(t), } _, err := kube.InitCluster( @@ -374,6 +384,27 @@ func TestJoinCluster(t *testing.T) { role: role.Worker, wantErr: true, }, + "etcd prioritizer doesn't fail on worker": { + clusterUtil: stubClusterUtil{}, + etcdIOPrioritizer: stubEtcdIOPrioritizer{etcdio.ErrNoEtcdProcess}, + providerMetadata: &stubProviderMetadata{ + selfResp: metadata.InstanceMetadata{ + ProviderID: "provider-id", + Name: "metadata-name", + VPCIP: "192.0.2.1", + }, + }, + role: role.Worker, + wantConfig: kubeadm.JoinConfiguration{ + Discovery: kubeadm.Discovery{ + BootstrapToken: joinCommand, + }, + NodeRegistration: kubeadm.NodeRegistrationOptions{ + Name: "metadata-name", + KubeletExtraArgs: map[string]string{"node-ip": "192.0.2.1"}, + }, + }, + }, } for name, tc := range testCases { @@ -382,11 +413,12 @@ func TestJoinCluster(t *testing.T) { require := require.New(t) kube := KubeWrapper{ - clusterUtil: &tc.clusterUtil, - providerMetadata: tc.providerMetadata, - configProvider: &stubConfigProvider{}, - getIPAddr: func() (string, error) { return privateIP, nil }, - log: logger.NewTest(t), + clusterUtil: &tc.clusterUtil, + providerMetadata: tc.providerMetadata, + configProvider: &stubConfigProvider{}, + getIPAddr: func() (string, error) { return privateIP, nil }, + etcdIOPrioritizer: &tc.etcdIOPrioritizer, + log: logger.NewTest(t), } err := kube.JoinCluster(context.Background(), joinCommand, tc.role, tc.k8sComponents)