6
. "github.com/onsi/ginkgo/v2"
7
. "github.com/onsi/gomega"
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"
14
var _ = Describe("Zone Insights", func() {
15
t1, _ := time.Parse(time.RFC3339, "2018-07-17T16:05:36.995+00:00")
17
Context("UpdateSubscription", func() {
18
It("should leave subscriptions in a valid state", func() {
20
zoneInsight := &system_proto.ZoneInsight{
21
Subscriptions: []*system_proto.KDSSubscription{
24
ConnectTime: util_proto.MustTimestampProto(t1),
25
DisconnectTime: util_proto.MustTimestampProto(t1.Add(1 * time.Hour)),
29
ConnectTime: util_proto.MustTimestampProto(t1.Add(2 * time.Hour)),
35
Expect(zoneInsight.UpdateSubscription(&system_proto.KDSSubscription{
37
ConnectTime: util_proto.MustTimestampProto(t1.Add(3 * time.Hour)),
41
subscription := zoneInsight.GetSubscription("2")
42
Expect(subscription.(*system_proto.KDSSubscription).DisconnectTime).ToNot(BeNil())
45
It("should return error for wrong subscription type", func() {
47
zoneInsight := &system_proto.ZoneInsight{
48
Subscriptions: []*system_proto.KDSSubscription{
51
ConnectTime: util_proto.MustTimestampProto(t1),
52
DisconnectTime: util_proto.MustTimestampProto(t1.Add(1 * time.Hour)),
56
ConnectTime: util_proto.MustTimestampProto(t1.Add(2 * time.Hour)),
62
err := zoneInsight.UpdateSubscription(&mesh_proto.DiscoverySubscription{})
65
Expect(err).To(HaveOccurred())
66
Expect(err.Error()).To(Equal("invalid type *v1alpha1.DiscoverySubscription for ZoneInsight"))
70
It("should compact finished subscriptions", func() {
72
zoneInsight := &system_proto.ZoneInsight{
73
Subscriptions: []*system_proto.KDSSubscription{
76
ConnectTime: util_proto.MustTimestampProto(t1),
77
DisconnectTime: util_proto.MustTimestampProto(t1.Add(1 * time.Hour)),
79
Status: &system_proto.KDSSubscriptionStatus{
80
LastUpdateTime: util_proto.MustTimestampProto(t1),
81
Total: &system_proto.KDSServiceStats{
83
ResponsesAcknowledged: 1,
85
Stat: map[string]*system_proto.KDSServiceStats{
88
ResponsesAcknowledged: 1,
95
ConnectTime: util_proto.MustTimestampProto(t1.Add(2 * time.Hour)),
97
Status: &system_proto.KDSSubscriptionStatus{
98
LastUpdateTime: util_proto.MustTimestampProto(t1),
99
Total: &system_proto.KDSServiceStats{
101
ResponsesAcknowledged: 1,
103
Stat: map[string]*system_proto.KDSServiceStats{
106
ResponsesAcknowledged: 1,
115
zoneInsight.CompactFinished()
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())