kuma

Форк
0
119 строк · 3.0 Кб
1
package meshhealthcheck
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/meshhealthcheck/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 := "meshhealthcheck-api"
17

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

25
	E2EAfterEach(func() {
26
		Expect(
27
			DeleteMeshResources(kubernetes.Cluster, meshName, v1alpha1.MeshHealthCheckResourceTypeDescriptor),
28
		).To(Succeed())
29
	})
30

31
	E2EAfterAll(func() {
32
		Expect(kubernetes.Cluster.DeleteMesh(meshName)).To(Succeed())
33
	})
34

35
	It("should create MeshHealthCheck policy", func() {
36
		// given no MeshHealthChecks
37
		mtps, err := kubernetes.Cluster.GetKumactlOptions().KumactlList("meshhealthchecks", meshName)
38
		Expect(err).ToNot(HaveOccurred())
39
		Expect(mtps).To(BeEmpty())
40

41
		// when
42
		Expect(YamlK8s(fmt.Sprintf(`
43
apiVersion: kuma.io/v1alpha1
44
kind: MeshHealthCheck
45
metadata:
46
  name: mhc1
47
  namespace: %s
48
  labels:
49
    kuma.io/mesh: meshhealthcheck-api
50
spec:
51
  targetRef:
52
    kind: Mesh
53
  to:
54
    - targetRef:
55
        kind: MeshService
56
        name: test-server
57
      default:
58
        interval: 10s
59
        timeout: 2s
60
        unhealthyThreshold: 3
61
        healthyThreshold: 1
62
        failTrafficOnPanic: true
63
        noTrafficInterval: 1s
64
        healthyPanicThreshold: 0
65
        reuseConnection: true
66
        http:
67
          path: /
68
          expectedStatuses: [200]
69
`, Config.KumaNamespace))(kubernetes.Cluster)).To(Succeed())
70

71
		// then
72
		mtps, err = kubernetes.Cluster.GetKumactlOptions().KumactlList("meshhealthchecks", meshName)
73
		Expect(err).ToNot(HaveOccurred())
74
		Expect(mtps).To(HaveLen(1))
75
		Expect(mtps[0]).To(Equal(fmt.Sprintf("mhc1.%s", Config.KumaNamespace)))
76
	})
77

78
	It("should deny creating policy in the non-system namespace", func() {
79
		// given no MeshHealthChecks
80
		mtps, err := kubernetes.Cluster.GetKumactlOptions().KumactlList("meshhealthchecks", meshName)
81
		Expect(err).ToNot(HaveOccurred())
82
		Expect(mtps).To(BeEmpty())
83

84
		// when
85
		err = k8s.KubectlApplyFromStringE(
86
			kubernetes.Cluster.GetTesting(),
87
			kubernetes.Cluster.GetKubectlOptions(), `
88
apiVersion: kuma.io/v1alpha1
89
kind: MeshHealthCheck
90
metadata:
91
  name: mhc1
92
  namespace: default
93
  labels:
94
    kuma.io/mesh: meshhealthcheck-api
95
spec:
96
  targetRef:
97
    kind: Mesh
98
  to:
99
    - targetRef:
100
        kind: MeshService
101
        name: test-server
102
      default:
103
        interval: 10s
104
        timeout: 2s
105
        unhealthyThreshold: 3
106
        healthyThreshold: 1
107
        failTrafficOnPanic: true
108
        noTrafficInterval: 1s
109
        healthyPanicThreshold: 0
110
        reuseConnection: true
111
        http:
112
          path: /
113
          expectedStatuses: [200]
114
`)
115

116
		Expect(err).To(HaveOccurred())
117
		Expect(err.Error()).To(ContainSubstring(fmt.Sprintf("policy can only be created in the system namespace:%s", Config.KumaNamespace)))
118
	})
119
}
120

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

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

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

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