From 88cae15b6a0446502dc043a1a53e34d49eb448f6 Mon Sep 17 00:00:00 2001 From: Francesco Cheinasso Date: Thu, 17 Oct 2024 09:12:15 +0200 Subject: [PATCH] fixes --- cmd/gateway/geneve/main.go | 2 +- cmd/gateway/main.go | 3 +- cmd/gateway/wireguard/main.go | 2 +- .../liqo/files/liqo-gateway-ClusterRole.yaml | 10 --- ...iqo-wireguard-gateway-client-template.yaml | 16 ++-- ...wireguard-gateway-server-template-eks.yaml | 16 ++-- ...iqo-wireguard-gateway-server-template.yaml | 16 ++-- pkg/gateway/concurrent/const.go | 3 - pkg/gateway/concurrent/gateway.go | 2 +- pkg/gateway/flags.go | 17 ++++ pkg/gateway/options.go | 3 + .../wireguard/wggatewayclient_controller.go | 13 +-- .../wireguard/wggatewayserver_controller.go | 87 +++++-------------- test/e2e/cruise/network/network_test.go | 2 +- 14 files changed, 74 insertions(+), 118 deletions(-) diff --git a/cmd/gateway/geneve/main.go b/cmd/gateway/geneve/main.go index 963b9259db..6a93985951 100644 --- a/cmd/gateway/geneve/main.go +++ b/cmd/gateway/geneve/main.go @@ -109,7 +109,7 @@ func run(cmd *cobra.Command, _ []string) error { return fmt.Errorf("unable to setup internalnode reconciler: %w", err) } - runnable, err := concurrent.NewRunnableGuest("geneve") + runnable, err := concurrent.NewRunnableGuest(options.GwOptions.ContainerName) if err != nil { return fmt.Errorf("unable to create runnable guest: %w", err) } diff --git a/cmd/gateway/main.go b/cmd/gateway/main.go index 443cae7f56..3bcf045b3d 100644 --- a/cmd/gateway/main.go +++ b/cmd/gateway/main.go @@ -116,7 +116,7 @@ func run(cmd *cobra.Command, _ []string) error { cfg := config.GetConfigOrDie() // Create the client. This client should be used only outside the reconciler. - // This client don't need a cache. + // This client does not need a cache. cl, err := client.New(cfg, client.Options{ Scheme: scheme, }) @@ -210,6 +210,7 @@ func run(cmd *cobra.Command, _ []string) error { connoptions.GwOptions.PodName, connoptions.GwOptions.Name, connoptions.GwOptions.Namespace, + connoptions.GwOptions.ConcurrentContainersNames, ) if err != nil { return fmt.Errorf("unable to create concurrent runnable: %w", err) diff --git a/cmd/gateway/wireguard/main.go b/cmd/gateway/wireguard/main.go index aae52936bc..5e475ffed0 100644 --- a/cmd/gateway/wireguard/main.go +++ b/cmd/gateway/wireguard/main.go @@ -157,7 +157,7 @@ func run(cmd *cobra.Command, _ []string) error { return fmt.Errorf("unable to register prometheus collector: %w", err) } - runnable, err := concurrent.NewRunnableGuest("wireguard") + runnable, err := concurrent.NewRunnableGuest(options.GwOptions.ContainerName) if err != nil { return fmt.Errorf("unable to create runnable guest: %w", err) } diff --git a/deployments/liqo/files/liqo-gateway-ClusterRole.yaml b/deployments/liqo/files/liqo-gateway-ClusterRole.yaml index 137dc079e1..37d1ef67d6 100644 --- a/deployments/liqo/files/liqo-gateway-ClusterRole.yaml +++ b/deployments/liqo/files/liqo-gateway-ClusterRole.yaml @@ -21,16 +21,6 @@ rules: - patch - update - watch -- apiGroups: - - "" - resources: - - secrets - verbs: - - create - - delete - - get - - list - - update - apiGroups: - coordination.k8s.io resources: diff --git a/deployments/liqo/templates/liqo-wireguard-gateway-client-template.yaml b/deployments/liqo/templates/liqo-wireguard-gateway-client-template.yaml index 50bc5b64fd..6364da5b68 100644 --- a/deployments/liqo/templates/liqo-wireguard-gateway-client-template.yaml +++ b/deployments/liqo/templates/liqo-wireguard-gateway-client-template.yaml @@ -37,9 +37,6 @@ spec: spec: serviceAccount: "{{"{{ .Name }}"}}" serviceAccountName: "{{"{{ .Name }}"}}" - volumes: - - name: ipc - emptyDir: {} containers: - name: gateway image: {{ .Values.networking.gatewayTemplates.container.gateway.image.name }}{{ include "liqo.suffix" $gatewayConfig }}:{{ include "liqo.version" $gatewayConfig }} @@ -52,6 +49,8 @@ spec: - --node-name={{"$(NODE_NAME)"}} - --pod-name={{"$(POD_NAME)"}} - --mode=client + - --container-name=gateway + - --concurrent-containers-names=wireguard,geneve {{- if .Values.metrics.enabled }} - --metrics-address=:8080 {{- end }} @@ -60,9 +59,7 @@ spec: - --ping-loss-threshold={{ .Values.networking.gatewayTemplates.ping.lossThreshold }} - --ping-interval={{ .Values.networking.gatewayTemplates.ping.interval }} - --ping-update-status-interval={{ .Values.networking.gatewayTemplates.ping.updateStatusInterval }} - {{- if gt .Values.networking.gatewayTemplates.replicas 1.0 }} - --leader-election=true - {{- end }} {{- if .Values.requirements.kernel.disabled }} - --disable-kernel-version-check {{- end }} @@ -98,6 +95,7 @@ spec: - --remote-cluster-id={{"{{ .ClusterID }}"}} - --gateway-uid={{"{{ .GatewayUID }}"}} - --mode=client + - --container-name=wireguard - --mtu={{"{{ .Spec.MTU }}"}} - --endpoint-address={{"{{ index .Spec.Endpoint.Addresses 0 }}"}} - --endpoint-port={{"{{ .Spec.Endpoint.Port }}"}} @@ -106,9 +104,6 @@ spec: {{- end }} - --health-probe-bind-address=:8083 - --implementation={{ .Values.networking.gatewayTemplates.wireguard.implementation }} - volumeMounts: - - name: ipc - mountPath: /ipc {{- if .Values.metrics.enabled }} ports: - containerPort: 8082 @@ -123,6 +118,8 @@ spec: privileged: true {{ end }} volumeMounts: + - name: ipc + mountPath: /ipc - name: wireguard-config mountPath: /etc/wireguard/keys - name: geneve @@ -136,6 +133,7 @@ spec: - --node-name={{"$(NODE_NAME)"}} - --pod-name={{"$(POD_NAME)"}} - --mode=server + - --container-name=geneve - --geneve-port={{ .Values.networking.genevePort }} {{- if .Values.metrics.enabled }} - --metrics-address=:8084 @@ -169,4 +167,6 @@ spec: - name: wireguard-config secret: secretName: "{{"{{ .SecretName }}"}}" + - name: ipc + emptyDir: {} {{- end }} diff --git a/deployments/liqo/templates/liqo-wireguard-gateway-server-template-eks.yaml b/deployments/liqo/templates/liqo-wireguard-gateway-server-template-eks.yaml index 8a77bc5a0c..763c4a0fd3 100644 --- a/deployments/liqo/templates/liqo-wireguard-gateway-server-template-eks.yaml +++ b/deployments/liqo/templates/liqo-wireguard-gateway-server-template-eks.yaml @@ -64,9 +64,6 @@ spec: spec: serviceAccount: "{{"{{ .Name }}"}}" serviceAccountName: "{{"{{ .Name }}"}}" - volumes: - - name: ipc - emptyDir: {} containers: - name: gateway image: {{ .Values.networking.gatewayTemplates.container.gateway.image.name }}{{ include "liqo.suffix" $gatewayConfig }}:{{ include "liqo.version" $gatewayConfig }} @@ -79,6 +76,8 @@ spec: - --pod-name={{"$(POD_NAME)"}} - --gateway-uid={{"{{ .GatewayUID }}"}} - --mode=server + - --container-name=gateway + - --concurrent-containers-names=wireguard,geneve {{- if .Values.metrics.enabled }} - --metrics-address=:8080 {{- end }} @@ -87,9 +86,7 @@ spec: - --ping-loss-threshold={{ .Values.networking.gatewayTemplates.ping.lossThreshold }} - --ping-interval={{ .Values.networking.gatewayTemplates.ping.interval }} - --ping-update-status-interval={{ .Values.networking.gatewayTemplates.ping.updateStatusInterval }} - {{- if gt .Values.networking.gatewayTemplates.replicas 1.0 }} - --leader-election=true - {{- end }} {{- if .Values.requirements.kernel.disabled }} - --disable-kernel-version-check {{- end }} @@ -125,6 +122,7 @@ spec: - --remote-cluster-id={{"{{ .ClusterID }}"}} - --gateway-uid={{"{{ .GatewayUID }}"}} - --mode=server + - --container-name=wireguard - --mtu={{"{{ .Spec.MTU }}"}} - --listen-port={{"{{ .Spec.Endpoint.Port }}"}} {{- if .Values.metrics.enabled }} @@ -132,9 +130,6 @@ spec: {{- end }} - --health-probe-bind-address=:8083 - --implementation={{ .Values.networking.gatewayTemplates.wireguard.implementation }} - volumeMounts: - - name: ipc - mountPath: /ipc {{- if .Values.metrics.enabled }} ports: - containerPort: 8082 @@ -149,6 +144,8 @@ spec: privileged: true {{ end }} volumeMounts: + - name: ipc + mountPath: /ipc - name: wireguard-config mountPath: /etc/wireguard/keys - name: geneve @@ -162,6 +159,7 @@ spec: - --pod-name={{"$(POD_NAME)"}} - --gateway-uid={{"{{ .GatewayUID }}"}} - --mode=server + - --container-name=geneve - --geneve-port={{ .Values.networking.genevePort }} {{- if .Values.metrics.enabled }} - --metrics-address=:8084 @@ -197,4 +195,6 @@ spec: - name: wireguard-config secret: secretName: "{{"{{ .SecretName }}"}}" + - name: ipc + emptyDir: {} {{- end }} diff --git a/deployments/liqo/templates/liqo-wireguard-gateway-server-template.yaml b/deployments/liqo/templates/liqo-wireguard-gateway-server-template.yaml index 777bd1c01c..1d7db1cdc9 100644 --- a/deployments/liqo/templates/liqo-wireguard-gateway-server-template.yaml +++ b/deployments/liqo/templates/liqo-wireguard-gateway-server-template.yaml @@ -55,9 +55,6 @@ spec: spec: serviceAccount: "{{"{{ .Name }}"}}" serviceAccountName: "{{"{{ .Name }}"}}" - volumes: - - name: ipc - emptyDir: {} containers: - name: gateway image: {{ .Values.networking.gatewayTemplates.container.gateway.image.name }}{{ include "liqo.suffix" $gatewayConfig }}:{{ include "liqo.version" $gatewayConfig }} @@ -70,6 +67,8 @@ spec: - --pod-name={{"$(POD_NAME)"}} - --gateway-uid={{"{{ .GatewayUID }}"}} - --mode=server + - --container-name=gateway + - --concurrent-containers-names=wireguard,geneve {{- if .Values.metrics.enabled }} - --metrics-address=:8080 {{- end }} @@ -78,9 +77,7 @@ spec: - --ping-loss-threshold={{ .Values.networking.gatewayTemplates.ping.lossThreshold }} - --ping-interval={{ .Values.networking.gatewayTemplates.ping.interval }} - --ping-update-status-interval={{ .Values.networking.gatewayTemplates.ping.updateStatusInterval }} - {{- if gt .Values.networking.gatewayTemplates.replicas 1.0 }} - --leader-election=true - {{- end }} {{- if .Values.requirements.kernel.disabled }} - --disable-kernel-version-check {{- end }} @@ -116,6 +113,7 @@ spec: - --remote-cluster-id={{"{{ .ClusterID }}"}} - --gateway-uid={{"{{ .GatewayUID }}"}} - --mode=server + - --container-name=wireguard - --mtu={{"{{ .Spec.MTU }}"}} - --listen-port={{"{{ .Spec.Endpoint.Port }}"}} {{- if .Values.metrics.enabled }} @@ -123,9 +121,6 @@ spec: {{- end }} - --health-probe-bind-address=:8083 - --implementation={{ .Values.networking.gatewayTemplates.wireguard.implementation }} - volumeMounts: - - name: ipc - mountPath: /ipc {{- if .Values.metrics.enabled }} ports: - containerPort: 8082 @@ -140,6 +135,8 @@ spec: privileged: true {{ end }} volumeMounts: + - name: ipc + mountPath: /ipc - name: wireguard-config mountPath: /etc/wireguard/keys - name: geneve @@ -153,6 +150,7 @@ spec: - --pod-name={{"$(POD_NAME)"}} - --gateway-uid={{"{{ .GatewayUID }}"}} - --mode=server + - --container-name=geneve - --geneve-port={{ .Values.networking.genevePort }} {{- if .Values.metrics.enabled }} - --metrics-address=:8084 @@ -186,4 +184,6 @@ spec: - name: wireguard-config secret: secretName: "{{"{{ .SecretName }}"}}" + - name: ipc + emptyDir: {} {{- end }} diff --git a/pkg/gateway/concurrent/const.go b/pkg/gateway/concurrent/const.go index 8b0fea606c..83bc4ec7d8 100644 --- a/pkg/gateway/concurrent/const.go +++ b/pkg/gateway/concurrent/const.go @@ -16,6 +16,3 @@ package concurrent // UnixSocketPath is the path of the Unix socket. const unixSocketPath string = "/ipc/leader.sock" - -// ContainerNames is the list of container names. -var containerNames = []string{"wireguard", "geneve"} diff --git a/pkg/gateway/concurrent/gateway.go b/pkg/gateway/concurrent/gateway.go index 5700b961f6..873e615ad6 100644 --- a/pkg/gateway/concurrent/gateway.go +++ b/pkg/gateway/concurrent/gateway.go @@ -40,7 +40,7 @@ type RunnableGateway struct { } // NewRunnableGateway creates a new Runnable. -func NewRunnableGateway(cl client.Client, podName, deploymentName, namespace string) (*RunnableGateway, error) { +func NewRunnableGateway(cl client.Client, podName, deploymentName, namespace string, containerNames []string) (*RunnableGateway, error) { guestConnections := ipc.NewGuestConnections(containerNames) socket, err := ipc.CreateListenSocket(unixSocketPath) diff --git a/pkg/gateway/flags.go b/pkg/gateway/flags.go index ad5ce94c20..09cd3f0329 100644 --- a/pkg/gateway/flags.go +++ b/pkg/gateway/flags.go @@ -39,6 +39,8 @@ const ( FlagNameNodeName FlagName = "node-name" // FlagNamePodName is the name of the pod. FlagNamePodName FlagName = "pod-name" + // FlagContainerName is the name of the container. + FlagContainerName FlagName = "container-name" // FlagNameGatewayUID is the UID of the Gateway resource. FlagNameGatewayUID FlagName = "gateway-uid" @@ -46,6 +48,9 @@ const ( // FlagNameMode is the mode in which the gateway is configured. FlagNameMode FlagName = "mode" + // FlagConcurrentContainersNames is the names of the containers that the gateway container must wait for. + FlagConcurrentContainersNames FlagName = "concurrent-containers-names" + // FlagNameLeaderElection is the flag to enable leader election. FlagNameLeaderElection FlagName = "leader-election" // FlagNameLeaderElectionLeaseDuration is the lease duration for the leader election. @@ -75,6 +80,7 @@ var RequiredFlags = []FlagName{ FlagNameGatewayUID, FlagNameNodeName, FlagNamePodName, + FlagContainerName, } // InitFlags initializes the flags for the gateway. @@ -84,11 +90,15 @@ func InitFlags(flagset *pflag.FlagSet, opts *Options) { flagset.StringVar(&opts.RemoteClusterID, FlagNameRemoteClusterID.String(), "", "ClusterID of the remote cluster") flagset.StringVar(&opts.NodeName, FlagNameNodeName.String(), "", "Node name") flagset.StringVar(&opts.PodName, FlagNamePodName.String(), "", "Pod name") + flagset.StringVar(&opts.ContainerName, FlagContainerName.String(), "", "Container name") flagset.StringVar(&opts.GatewayUID, FlagNameGatewayUID.String(), "", "Parent gateway resource UID") flagset.Var(&opts.Mode, FlagNameMode.String(), "Parent gateway mode") + flagset.StringSliceVar(&opts.ConcurrentContainersNames, FlagConcurrentContainersNames.String(), + []string{}, "the container list that gateway container must wait for") + flagset.BoolVar(&opts.LeaderElection, FlagNameLeaderElection.String(), false, "Enable leader election") flagset.DurationVar(&opts.LeaderElectionLeaseDuration, FlagNameLeaderElectionLeaseDuration.String(), 15*time.Second, "LeaseDuration for the leader election") @@ -111,5 +121,12 @@ func MarkFlagsRequired(cmd *cobra.Command) error { return err } } + + if cmd.Name() == "liqo-gateway" { + if err := cmd.MarkFlagRequired(FlagConcurrentContainersNames.String()); err != nil { + return err + } + } + return nil } diff --git a/pkg/gateway/options.go b/pkg/gateway/options.go index 4aa7cdf70e..9eaf3e62ed 100644 --- a/pkg/gateway/options.go +++ b/pkg/gateway/options.go @@ -28,11 +28,14 @@ type Options struct { RemoteClusterID string NodeName string PodName string + ContainerName string GatewayUID string Mode Mode + ConcurrentContainersNames []string + LeaderElection bool LeaderElectionLeaseDuration time.Duration LeaderElectionRenewDeadline time.Duration diff --git a/pkg/liqo-controller-manager/networking/external-network/wireguard/wggatewayclient_controller.go b/pkg/liqo-controller-manager/networking/external-network/wireguard/wggatewayclient_controller.go index 5c3772d63f..9de235c2d8 100644 --- a/pkg/liqo-controller-manager/networking/external-network/wireguard/wggatewayclient_controller.go +++ b/pkg/liqo-controller-manager/networking/external-network/wireguard/wggatewayclient_controller.go @@ -17,7 +17,6 @@ package wireguard import ( "context" "fmt" - "sort" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -293,20 +292,12 @@ func (r *WgGatewayClientReconciler) handleInternalEndpointStatus(ctx context.Con return err } - if len(podList.Items) == 0 { - err := fmt.Errorf("no pods found for deployment %s/%s", dep.Namespace, dep.Name) + if len(podList.Items) != 1 { + err := fmt.Errorf("wrong number of pods for deployment %s/%s: %d (must be 1)", dep.Namespace, dep.Name, len(podList.Items)) klog.Error(err) return err } - // sort pods by creation timestamp (older first), and name - sort.Slice(podList.Items, func(i, j int) bool { - if podList.Items[i].CreationTimestamp.Equal(&podList.Items[j].CreationTimestamp) { - return podList.Items[i].Name < podList.Items[j].Name - } - return podList.Items[i].CreationTimestamp.Before(&podList.Items[j].CreationTimestamp) - }) - if podList.Items[0].Status.PodIP == "" { err := fmt.Errorf("pod %s/%s has no IP", podList.Items[0].Namespace, podList.Items[0].Name) klog.Error(err) diff --git a/pkg/liqo-controller-manager/networking/external-network/wireguard/wggatewayserver_controller.go b/pkg/liqo-controller-manager/networking/external-network/wireguard/wggatewayserver_controller.go index 8dc700403e..f9c4bfc198 100644 --- a/pkg/liqo-controller-manager/networking/external-network/wireguard/wggatewayserver_controller.go +++ b/pkg/liqo-controller-manager/networking/external-network/wireguard/wggatewayserver_controller.go @@ -18,7 +18,6 @@ import ( "context" "fmt" - "golang.org/x/exp/maps" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" rbacv1 "k8s.io/api/rbac/v1" @@ -384,11 +383,6 @@ func (r *WgGatewayServerReconciler) forgeEndpointStatusNodePort(ctx context.Cont port := service.Spec.Ports[0].NodePort protocol := &service.Spec.Ports[0].Protocol - // Every node IP is a valid endpoint. For convenience, we get the IP of all nodes hosting replicas of the deployment - // (i.e., WireGuard gateway servers). - var addresses []string - var internalAddress string - var nodeName string podsSelector := client.MatchingLabelsSelector{Selector: labels.SelectorFromSet(gateway.ForgeActiveGatewayPodLabels())} var podList corev1.PodList if err := r.List(ctx, &podList, client.InNamespace(dep.Namespace), podsSelector); err != nil { @@ -396,69 +390,25 @@ func (r *WgGatewayServerReconciler) forgeEndpointStatusNodePort(ctx context.Cont return nil, nil, err } - switch len(podList.Items) { - case 0: - err := fmt.Errorf("pods of deployment %s/%s not found", dep.Namespace, dep.Name) - klog.Error(err) - return nil, nil, err - case 1: - var nodes []*corev1.Node - pod := &podList.Items[0] - // get node hosting pod - var node corev1.Node - err := r.Get(ctx, types.NamespacedName{Name: pod.Spec.NodeName}, &node) - if err != nil && !apierrors.IsNotFound(err) { - klog.Errorf("Unable to get node %q: %v", pod.Spec.NodeName, err) - return nil, nil, err - } - if !apierrors.IsNotFound(err) { - nodes = append(nodes, &node) - } - // For every node, get IP address. We avoid duplicate utilizing a map and then converting to array. - // Note that duplicates should not happen if the deployment correctly have replicas spread across different nodes, - // but we double check anyway. - addressesMap := make(map[string]string) - for i := range nodes { - if utils.IsNodeReady(nodes[i]) { - address, err := utils.GetAddress(nodes[i]) - if err == nil { - addressesMap[address] = nodes[i].Name - } - } - } - // If addressesMap is empty, it could be due to temporary not ready nodes. - // In this case, we choose a random one (e.g., the first) - if len(addressesMap) == 0 { - if len(nodes) > 0 { - address, err := utils.GetAddress(nodes[0]) - if err == nil { - addressesMap[address] = nodes[0].Name - } - } - } - // If addressesMap is still empty, we raise an error - if len(addressesMap) == 0 { - err := fmt.Errorf("no valid addresses found for WireGuard server %s/%s", service.Namespace, service.Name) - klog.Error(err) - return nil, nil, err - } - // Addresses contains only the keys to avoid duplicates - addresses = maps.Keys(addressesMap) - // TODO: if using active-passive, it should get the IP of the active node - nodeName = addressesMap[addresses[0]] - default: - err := fmt.Errorf("multiple active gateway pods found for deployment %s/%s", dep.Namespace, dep.Name) + if len(podList.Items) != 1 { + err := fmt.Errorf("wrong number of pods for deployment %s/%s: %d (must be 1)", dep.Namespace, dep.Name, len(podList.Items)) klog.Error(err) return nil, nil, err } - // get the ip of the pod running on the node pod := &podList.Items[0] - if pod.Spec.NodeName == nodeName { - internalAddress = pod.Status.PodIP - if internalAddress == "" { - err := fmt.Errorf("pod %s/%s has no IP", pod.Namespace, pod.Name) - klog.Error(err) + + node := &corev1.Node{} + err := r.Get(ctx, types.NamespacedName{Name: pod.Spec.NodeName}, node) + if err != nil && !apierrors.IsNotFound(err) { + klog.Errorf("Unable to get node %q: %v", pod.Spec.NodeName, err) + return nil, nil, err + } + + addresses := make([]string, 1) + if utils.IsNodeReady(node) { + if addresses[0], err = utils.GetAddress(node); err != nil { + klog.Errorf("Unable to get address of node %q: %v", pod.Spec.NodeName, err) return nil, nil, err } } @@ -467,13 +417,20 @@ func (r *WgGatewayServerReconciler) forgeEndpointStatusNodePort(ctx context.Cont return nil, nil, err } + internalAddress := pod.Status.PodIP + if internalAddress == "" { + err := fmt.Errorf("pod %s/%s has no IP", pod.Namespace, pod.Name) + klog.Error(err) + return nil, nil, err + } + return &networkingv1beta1.EndpointStatus{ Protocol: protocol, Port: port, Addresses: addresses, }, &networkingv1beta1.InternalGatewayEndpoint{ IP: ptr.To(networkingv1beta1.IP(internalAddress)), - Node: &nodeName, + Node: &pod.Spec.NodeName, }, nil } diff --git a/test/e2e/cruise/network/network_test.go b/test/e2e/cruise/network/network_test.go index ce00cec60f..127563da7f 100644 --- a/test/e2e/cruise/network/network_test.go +++ b/test/e2e/cruise/network/network_test.go @@ -48,7 +48,7 @@ const ( // testName is the name of this E2E test. testName = "NETWORK" // StressMax is the maximum number of stress iterations. - stressMax = 5 + stressMax = 3 ) func TestE2E(t *testing.T) {