kuma

Форк
0
/
zone_insight_helpers_test.go 
123 строки · 3.5 Кб
1
package v1alpha1_test
2

3
import (
4
	"time"
5

6
	. "github.com/onsi/ginkgo/v2"
7
	. "github.com/onsi/gomega"
8

9
	mesh_proto "github.com/kumahq/kuma/api/mesh/v1alpha1"
10
	system_proto "github.com/kumahq/kuma/api/system/v1alpha1"
11
	util_proto "github.com/kumahq/kuma/pkg/util/proto"
12
)
13

14
var _ = Describe("Zone Insights", func() {
15
	t1, _ := time.Parse(time.RFC3339, "2018-07-17T16:05:36.995+00:00")
16

17
	Context("UpdateSubscription", func() {
18
		It("should leave subscriptions in a valid state", func() {
19
			// given
20
			zoneInsight := &system_proto.ZoneInsight{
21
				Subscriptions: []*system_proto.KDSSubscription{
22
					{
23
						Id:             "1",
24
						ConnectTime:    util_proto.MustTimestampProto(t1),
25
						DisconnectTime: util_proto.MustTimestampProto(t1.Add(1 * time.Hour)),
26
					},
27
					{
28
						Id:          "2",
29
						ConnectTime: util_proto.MustTimestampProto(t1.Add(2 * time.Hour)),
30
					},
31
				},
32
			}
33

34
			// when
35
			Expect(zoneInsight.UpdateSubscription(&system_proto.KDSSubscription{
36
				Id:          "3",
37
				ConnectTime: util_proto.MustTimestampProto(t1.Add(3 * time.Hour)),
38
			})).To(Succeed())
39

40
			// then
41
			subscription := zoneInsight.GetSubscription("2")
42
			Expect(subscription.(*system_proto.KDSSubscription).DisconnectTime).ToNot(BeNil())
43
		})
44

45
		It("should return error for wrong subscription type", func() {
46
			// given
47
			zoneInsight := &system_proto.ZoneInsight{
48
				Subscriptions: []*system_proto.KDSSubscription{
49
					{
50
						Id:             "1",
51
						ConnectTime:    util_proto.MustTimestampProto(t1),
52
						DisconnectTime: util_proto.MustTimestampProto(t1.Add(1 * time.Hour)),
53
					},
54
					{
55
						Id:          "2",
56
						ConnectTime: util_proto.MustTimestampProto(t1.Add(2 * time.Hour)),
57
					},
58
				},
59
			}
60

61
			// when
62
			err := zoneInsight.UpdateSubscription(&mesh_proto.DiscoverySubscription{})
63

64
			// then
65
			Expect(err).To(HaveOccurred())
66
			Expect(err.Error()).To(Equal("invalid type *v1alpha1.DiscoverySubscription for ZoneInsight"))
67
		})
68
	})
69

70
	It("should compact finished subscriptions", func() {
71
		// given
72
		zoneInsight := &system_proto.ZoneInsight{
73
			Subscriptions: []*system_proto.KDSSubscription{
74
				{
75
					Id:             "1",
76
					ConnectTime:    util_proto.MustTimestampProto(t1),
77
					DisconnectTime: util_proto.MustTimestampProto(t1.Add(1 * time.Hour)),
78
					Config:         "a",
79
					Status: &system_proto.KDSSubscriptionStatus{
80
						LastUpdateTime: util_proto.MustTimestampProto(t1),
81
						Total: &system_proto.KDSServiceStats{
82
							ResponsesSent:         1,
83
							ResponsesAcknowledged: 1,
84
						},
85
						Stat: map[string]*system_proto.KDSServiceStats{
86
							"TrafficRoute": {
87
								ResponsesSent:         1,
88
								ResponsesAcknowledged: 1,
89
							},
90
						},
91
					},
92
				},
93
				{
94
					Id:          "2",
95
					ConnectTime: util_proto.MustTimestampProto(t1.Add(2 * time.Hour)),
96
					Config:      "b",
97
					Status: &system_proto.KDSSubscriptionStatus{
98
						LastUpdateTime: util_proto.MustTimestampProto(t1),
99
						Total: &system_proto.KDSServiceStats{
100
							ResponsesSent:         1,
101
							ResponsesAcknowledged: 1,
102
						},
103
						Stat: map[string]*system_proto.KDSServiceStats{
104
							"TrafficRoute": {
105
								ResponsesSent:         1,
106
								ResponsesAcknowledged: 1,
107
							},
108
						},
109
					},
110
				},
111
			},
112
		}
113

114
		// when
115
		zoneInsight.CompactFinished()
116

117
		// then
118
		Expect(zoneInsight.Subscriptions[0].Config).To(Equal(""))
119
		Expect(zoneInsight.Subscriptions[0].Status.Stat).To(BeEmpty())
120
		Expect(zoneInsight.Subscriptions[1].Config).To(Equal("b"))
121
		Expect(zoneInsight.Subscriptions[1].Status.Stat).NotTo(BeEmpty())
122
	})
123
})
124

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

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

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

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