kuma

Форк
0
110 строк · 2.7 Кб
1
package meshretry
2

3
import (
4
	"fmt"
5

6
	"github.com/gruntwork-io/terratest/modules/k8s"
7
	. "github.com/onsi/ginkgo/v2"
8
	. "github.com/onsi/gomega"
9

10
	"github.com/kumahq/kuma/pkg/plugins/policies/meshretry/api/v1alpha1"
11
	. "github.com/kumahq/kuma/test/framework"
12
	"github.com/kumahq/kuma/test/framework/envs/kubernetes"
13
)
14

15
func API() {
16
	meshName := "meshretry-api"
17

18
	BeforeAll(func() {
19
		err := NewClusterSetup().
20
			Install(MeshKubernetes(meshName)).
21
			Setup(kubernetes.Cluster)
22
		Expect(err).ToNot(HaveOccurred())
23

24
		// Delete the default meshretry policy
25
		Expect(DeleteMeshPolicyOrError(
26
			kubernetes.Cluster,
27
			v1alpha1.MeshRetryResourceTypeDescriptor,
28
			fmt.Sprintf("mesh-retry-all-%s", meshName),
29
		)).To(Succeed())
30
	})
31

32
	E2EAfterEach(func() {
33
		Expect(DeleteMeshResources(kubernetes.Cluster, meshName, v1alpha1.MeshRetryResourceTypeDescriptor)).To(Succeed())
34
	})
35

36
	E2EAfterAll(func() {
37
		Expect(kubernetes.Cluster.DeleteMesh(meshName)).To(Succeed())
38
	})
39

40
	It("should create MeshRetry policy", func() {
41
		// given no MeshRetry
42
		mrls, err := kubernetes.Cluster.GetKumactlOptions().KumactlList("meshretries", meshName)
43
		Expect(err).ToNot(HaveOccurred())
44
		Expect(mrls).To(BeEmpty())
45

46
		// when
47
		Expect(YamlK8s(fmt.Sprintf(`
48
apiVersion: kuma.io/v1alpha1
49
kind: MeshRetry
50
metadata:
51
  name: mesh-retry
52
  namespace: %s
53
  labels:
54
    kuma.io/mesh: %s
55
spec:
56
  targetRef:
57
    kind: Mesh
58
  to:
59
    - targetRef:
60
        kind: MeshService
61
        name: backend
62
      default:
63
        tcp:
64
          maxConnectAttempt: 5
65
        http:
66
          numRetries: 10
67
`, Config.KumaNamespace, meshName))(kubernetes.Cluster)).To(Succeed())
68

69
		// then
70
		mrls, err = kubernetes.Cluster.GetKumactlOptions().KumactlList("meshretries", meshName)
71
		Expect(err).ToNot(HaveOccurred())
72
		Expect(mrls).To(HaveLen(1))
73
		Expect(mrls[0]).To(Equal(fmt.Sprintf("mesh-retry.%s", Config.KumaNamespace)))
74
	})
75

76
	It("should deny creating policy in the non-system namespace", func() {
77
		// given no MeshRetry
78
		mrls, err := kubernetes.Cluster.GetKumactlOptions().KumactlList("meshretries", meshName)
79
		Expect(err).ToNot(HaveOccurred())
80
		Expect(mrls).To(BeEmpty())
81

82
		// when
83
		err = k8s.KubectlApplyFromStringE(
84
			kubernetes.Cluster.GetTesting(),
85
			kubernetes.Cluster.GetKubectlOptions(), fmt.Sprintf(`
86
apiVersion: kuma.io/v1alpha1
87
kind: MeshRetry
88
metadata:
89
  name: mesh-retry
90
  namespace: default
91
  labels:
92
    kuma.io/mesh: %s
93
spec:
94
  targetRef:
95
    kind: Mesh
96
  to:
97
    - targetRef:
98
        kind: MeshService
99
        name: backend
100
      default:
101
        tcp:
102
          maxConnectAttempt: 5
103
        http:
104
          numRetries: 10
105
`, meshName))
106

107
		Expect(err).To(HaveOccurred())
108
		Expect(err.Error()).To(ContainSubstring(fmt.Sprintf("policy can only be created in the system namespace:%s", Config.KumaNamespace)))
109
	})
110
}
111

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.