From 78c8eb825ab4781cce306fe961b25d5ccb795e34 Mon Sep 17 00:00:00 2001 From: Gilberto Bertin Date: Thu, 14 Dec 2023 12:26:03 +0100 Subject: [PATCH] check: add third client scheduled on a different node for some upcoming tests we will need a new client scheduled on a different node than the first 2 clients. This commit adds this new client. Signed-off-by: Gilberto Bertin --- connectivity/check/deployment.go | 44 ++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/connectivity/check/deployment.go b/connectivity/check/deployment.go index 6ad955f54a..12c5f374df 100644 --- a/connectivity/check/deployment.go +++ b/connectivity/check/deployment.go @@ -34,6 +34,7 @@ const ( clientDeploymentName = "client" client2DeploymentName = "client2" + client3DeploymentName = "client3" clientCPDeployment = "client-cp" DNSTestServerContainerName = "dns-test-server" @@ -854,7 +855,46 @@ func (ct *ConnectivityTest) deploy(ctx context.Context) error { } } - // 3rd client scheduled on the control plane + // 3rd client scheduled on a different node than the first 2 clients + _, err = ct.clients.src.GetDeployment(ctx, ct.params.TestNamespace, client3DeploymentName, metav1.GetOptions{}) + if err != nil { + ct.Logf("✨ [%s] Deploying %s deployment...", ct.clients.src.ClusterName(), client3DeploymentName) + clientDeployment := newDeployment(deploymentParameters{ + Name: client3DeploymentName, + Kind: kindClientName, + NamedPort: "http-8080", + Port: 8080, + Image: ct.params.CurlImage, + Command: []string{"/bin/ash", "-c", "sleep 10000000"}, + Labels: map[string]string{"other": "client-other-node"}, + Annotations: ct.params.DeploymentAnnotations.Match(client3DeploymentName), + Affinity: &corev1.Affinity{ + PodAntiAffinity: &corev1.PodAntiAffinity{ + RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{ + { + LabelSelector: &metav1.LabelSelector{ + MatchExpressions: []metav1.LabelSelectorRequirement{ + {Key: "name", Operator: metav1.LabelSelectorOpIn, Values: []string{clientDeploymentName}}, + }, + }, + TopologyKey: corev1.LabelHostname, + }, + }, + }, + }, + NodeSelector: ct.params.NodeSelector, + }) + _, err = ct.clients.src.CreateServiceAccount(ctx, ct.params.TestNamespace, k8s.NewServiceAccount(client3DeploymentName), metav1.CreateOptions{}) + if err != nil { + return fmt.Errorf("unable to create service account %s: %s", client3DeploymentName, err) + } + _, err = ct.clients.src.CreateDeployment(ctx, ct.params.TestNamespace, clientDeployment, metav1.CreateOptions{}) + if err != nil { + return fmt.Errorf("unable to create deployment %s: %s", client3DeploymentName, err) + } + } + + // 4th client scheduled on the control plane if ct.params.K8sLocalHostTest { ct.Logf("✨ [%s] Deploying %s deployment...", ct.clients.src.ClusterName(), clientCPDeployment) clientDeployment := newDeployment(deploymentParameters{ @@ -1062,7 +1102,7 @@ func (ct *ConnectivityTest) deploy(ctx context.Context) error { // deploymentList returns 2 lists of Deployments to be used for running tests with. func (ct *ConnectivityTest) deploymentList() (srcList []string, dstList []string) { if !ct.params.Perf { - srcList = []string{clientDeploymentName, client2DeploymentName, echoSameNodeDeploymentName} + srcList = []string{clientDeploymentName, client2DeploymentName, client3DeploymentName, echoSameNodeDeploymentName} } else { perfNm := newPerfDeploymentNameManager(&ct.params) srcList = []string{perfNm.ClientName(), perfNm.ServerName()}