kuma
75 строк · 2.0 Кб
1package graceful2
3import (4"fmt"5
6. "github.com/onsi/ginkgo/v2"7. "github.com/onsi/gomega"8
9"github.com/kumahq/kuma/test/framework"10. "github.com/kumahq/kuma/test/framework"11"github.com/kumahq/kuma/test/framework/deployments/testserver"12"github.com/kumahq/kuma/test/framework/envs/kubernetes"13)
14
15func WaitForEnvoyReady() {16namespace := "wait-for-envoy"17meshName := "wait-for-envoy"18
19BeforeAll(func() {20err := NewClusterSetup().21Install(NamespaceWithSidecarInjection(namespace)).22Install(MeshKubernetes(meshName)).23Install(testserver.Install(24testserver.WithMesh(meshName),25testserver.WithNamespace(namespace),26)).27Setup(kubernetes.Cluster)28Expect(err).ToNot(HaveOccurred())29})30
31E2EAfterAll(func() {32Expect(kubernetes.Cluster.TriggerDeleteNamespace(namespace)).To(Succeed())33Expect(kubernetes.Cluster.DeleteMesh(meshName)).To(Succeed())34})35
36It("should setup connectivity before app starts", func() {37// the pod simulates what many app does which is connecting to external destination (like a database) immediately38// restartPolicy is Never so if we fail we won't restart and the test fails.39err := NewClusterSetup().40Install(YamlK8s(fmt.Sprintf(`41apiVersion: v1
42kind: Pod
43metadata:
44name: wait-for-envoy
45namespace: %s
46labels:
47app: wait-for-envoy
48annotations:
49kuma.io/mesh: %s
50kuma.io/wait-for-dataplane-ready: "true"
51spec:
52restartPolicy: Never
53containers:
54- name: alpine
55image: %s
56args:
57- /bin/bash
58- -c
59- --
60- 'curl --max-time 3 --fail test-server_wait-for-envoy_svc_80.mesh && test-server echo --port 80'
61readinessProbe:
62httpGet:
63path: /
64port: 80
65successThreshold: 1
66resources:
67limits:
68cpu: 50m
69memory: 64Mi`, namespace, meshName, framework.Config.GetUniversalImage()))).70Install(framework.WaitNumPods(namespace, 1, "wait-for-envoy")).71Install(framework.WaitPodsAvailable(namespace, "wait-for-envoy")).72Setup(kubernetes.Cluster)73Expect(err).ToNot(HaveOccurred())74})75}
76