mirror of https://github.com/status-im/consul.git
state: add 2 more test cases for terminate gateway streaming events
Co-Authored-By: Kyle Havlovitz <kylehav@gmail.com>
This commit is contained in:
parent
a21be5efa8
commit
30a575dd33
|
@ -483,7 +483,7 @@ func TestServiceHealthEventsFromChanges(t *testing.T) {
|
||||||
evRenameService,
|
evRenameService,
|
||||||
evServiceMutated,
|
evServiceMutated,
|
||||||
evNodeUnchanged,
|
evNodeUnchanged,
|
||||||
evChecksMutated,
|
evServiceChecksMutated,
|
||||||
),
|
),
|
||||||
testServiceHealthDeregistrationEvent(t, "web",
|
testServiceHealthDeregistrationEvent(t, "web",
|
||||||
evConnectTopic,
|
evConnectTopic,
|
||||||
|
@ -797,14 +797,14 @@ func TestServiceHealthEventsFromChanges(t *testing.T) {
|
||||||
evServiceCheckFail,
|
evServiceCheckFail,
|
||||||
evNodeUnchanged,
|
evNodeUnchanged,
|
||||||
evServiceUnchanged,
|
evServiceUnchanged,
|
||||||
evChecksMutated,
|
evServiceChecksMutated,
|
||||||
),
|
),
|
||||||
testServiceHealthEvent(t, "web",
|
testServiceHealthEvent(t, "web",
|
||||||
evSidecar,
|
evSidecar,
|
||||||
evServiceCheckFail,
|
evServiceCheckFail,
|
||||||
evNodeUnchanged,
|
evNodeUnchanged,
|
||||||
evServiceUnchanged,
|
evServiceUnchanged,
|
||||||
evChecksMutated,
|
evServiceChecksMutated,
|
||||||
),
|
),
|
||||||
testServiceHealthEvent(t, "web",
|
testServiceHealthEvent(t, "web",
|
||||||
evConnectTopic,
|
evConnectTopic,
|
||||||
|
@ -812,7 +812,7 @@ func TestServiceHealthEventsFromChanges(t *testing.T) {
|
||||||
evServiceCheckFail,
|
evServiceCheckFail,
|
||||||
evNodeUnchanged,
|
evNodeUnchanged,
|
||||||
evServiceUnchanged,
|
evServiceUnchanged,
|
||||||
evChecksMutated,
|
evServiceChecksMutated,
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
WantErr: false,
|
WantErr: false,
|
||||||
|
@ -1430,6 +1430,118 @@ func TestServiceHealthEventsFromChanges(t *testing.T) {
|
||||||
testServiceHealthDeregistrationEvent(t, "srv1"),
|
testServiceHealthDeregistrationEvent(t, "srv1"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "rename a terminating gateway instance",
|
||||||
|
Setup: func(s *Store, tx *txn) error {
|
||||||
|
configEntry := &structs.TerminatingGatewayConfigEntry{
|
||||||
|
Kind: structs.TerminatingGateway,
|
||||||
|
Name: "tgate1",
|
||||||
|
Services: []structs.LinkedService{
|
||||||
|
{
|
||||||
|
Name: "srv1",
|
||||||
|
EnterpriseMeta: *structs.DefaultEnterpriseMeta(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
EnterpriseMeta: *structs.DefaultEnterpriseMeta(),
|
||||||
|
}
|
||||||
|
err := ensureConfigEntryTxn(tx, tx.Index, configEntry, structs.DefaultEnterpriseMeta())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
configEntry = &structs.TerminatingGatewayConfigEntry{
|
||||||
|
Kind: structs.TerminatingGateway,
|
||||||
|
Name: "tgate2",
|
||||||
|
Services: []structs.LinkedService{
|
||||||
|
{
|
||||||
|
Name: "srv1",
|
||||||
|
EnterpriseMeta: *structs.DefaultEnterpriseMeta(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
EnterpriseMeta: *structs.DefaultEnterpriseMeta(),
|
||||||
|
}
|
||||||
|
err = ensureConfigEntryTxn(tx, tx.Index, configEntry, structs.DefaultEnterpriseMeta())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return s.ensureRegistrationTxn(tx, tx.Index, false,
|
||||||
|
testServiceRegistration(t, "tgate1", regTerminatingGateway), false)
|
||||||
|
},
|
||||||
|
Mutate: func(s *Store, tx *txn) error {
|
||||||
|
rename := func(req *structs.RegisterRequest) error {
|
||||||
|
req.Service.Service = "tgate2"
|
||||||
|
req.Checks[1].ServiceName = "tgate2"
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return s.ensureRegistrationTxn(tx, tx.Index, false,
|
||||||
|
testServiceRegistration(t, "tgate1", regTerminatingGateway, rename), false)
|
||||||
|
},
|
||||||
|
WantEvents: []stream.Event{
|
||||||
|
testServiceHealthDeregistrationEvent(t,
|
||||||
|
"tgate1",
|
||||||
|
evServiceTermingGateway("tgate1")),
|
||||||
|
testServiceHealthEvent(t,
|
||||||
|
"tgate1",
|
||||||
|
evServiceTermingGateway(""),
|
||||||
|
evNodeUnchanged,
|
||||||
|
evServiceMutated,
|
||||||
|
evServiceChecksMutated,
|
||||||
|
evTerminatingGatewayRenamed("tgate2")),
|
||||||
|
testServiceHealthDeregistrationEvent(t,
|
||||||
|
"tgate1",
|
||||||
|
evConnectTopic,
|
||||||
|
evServiceTermingGateway("srv1")),
|
||||||
|
testServiceHealthEvent(t,
|
||||||
|
"tgate1",
|
||||||
|
evConnectTopic,
|
||||||
|
evServiceTermingGateway("srv1"),
|
||||||
|
evNodeUnchanged,
|
||||||
|
evServiceMutated,
|
||||||
|
evServiceChecksMutated,
|
||||||
|
evTerminatingGatewayRenamed("tgate2")),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "delete a terminating gateway instance",
|
||||||
|
Setup: func(s *Store, tx *txn) error {
|
||||||
|
configEntry := &structs.TerminatingGatewayConfigEntry{
|
||||||
|
Kind: structs.TerminatingGateway,
|
||||||
|
Name: "tgate1",
|
||||||
|
Services: []structs.LinkedService{
|
||||||
|
{
|
||||||
|
Name: "srv1",
|
||||||
|
EnterpriseMeta: *structs.DefaultEnterpriseMeta(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "srv2",
|
||||||
|
EnterpriseMeta: *structs.DefaultEnterpriseMeta(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
EnterpriseMeta: *structs.DefaultEnterpriseMeta(),
|
||||||
|
}
|
||||||
|
err := ensureConfigEntryTxn(tx, tx.Index, configEntry, structs.DefaultEnterpriseMeta())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return s.ensureRegistrationTxn(tx, tx.Index, false,
|
||||||
|
testServiceRegistration(t, "tgate1", regTerminatingGateway), false)
|
||||||
|
},
|
||||||
|
Mutate: func(s *Store, tx *txn) error {
|
||||||
|
return s.deleteServiceTxn(tx, tx.Index, "node1", "tgate1", structs.DefaultEnterpriseMeta())
|
||||||
|
},
|
||||||
|
WantEvents: []stream.Event{
|
||||||
|
testServiceHealthDeregistrationEvent(t,
|
||||||
|
"tgate1",
|
||||||
|
evServiceTermingGateway("")),
|
||||||
|
testServiceHealthDeregistrationEvent(t,
|
||||||
|
"tgate1",
|
||||||
|
evConnectTopic,
|
||||||
|
evServiceTermingGateway("srv1")),
|
||||||
|
testServiceHealthDeregistrationEvent(t,
|
||||||
|
"tgate1",
|
||||||
|
evConnectTopic,
|
||||||
|
evServiceTermingGateway("srv2")),
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range cases {
|
for _, tc := range cases {
|
||||||
|
@ -1528,6 +1640,7 @@ var cmpPartialOrderEvents = cmp.Options{
|
||||||
cmpopts.SortSlices(func(i, j stream.Event) bool {
|
cmpopts.SortSlices(func(i, j stream.Event) bool {
|
||||||
key := func(e stream.Event) string {
|
key := func(e stream.Event) string {
|
||||||
csn := getPayloadCheckServiceNode(e.Payload)
|
csn := getPayloadCheckServiceNode(e.Payload)
|
||||||
|
// TODO: double check this sort key is correct.
|
||||||
return fmt.Sprintf("%s/%s/%s/%s", e.Topic, csn.Node.Node, csn.Service.Service, e.Payload.(EventPayloadCheckServiceNode).key)
|
return fmt.Sprintf("%s/%s/%s/%s", e.Topic, csn.Node.Node, csn.Service.Service, e.Payload.(EventPayloadCheckServiceNode).key)
|
||||||
}
|
}
|
||||||
return key(i) < key(j)
|
return key(i) < key(j)
|
||||||
|
@ -1848,12 +1961,12 @@ func evServiceMutated(e *stream.Event) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// evChecksMutated option alters the base event service check to set it's
|
// evServiceChecksMutated option alters the base event service check to set it's
|
||||||
// CreateIndex (but not modify index) to the setup index. This expresses that we
|
// CreateIndex (but not modify index) to the setup index. This expresses that we
|
||||||
// expect the service check records originally created in setup to have been
|
// expect the service check records originally created in setup to have been
|
||||||
// mutated during the update. NOTE: this must be sequenced after
|
// mutated during the update. NOTE: this must be sequenced after
|
||||||
// evServiceUnchanged if both are used.
|
// evServiceUnchanged if both are used.
|
||||||
func evChecksMutated(e *stream.Event) error {
|
func evServiceChecksMutated(e *stream.Event) error {
|
||||||
getPayloadCheckServiceNode(e.Payload).Checks[1].CreateIndex = 10
|
getPayloadCheckServiceNode(e.Payload).Checks[1].CreateIndex = 10
|
||||||
getPayloadCheckServiceNode(e.Payload).Checks[1].ModifyIndex = 100
|
getPayloadCheckServiceNode(e.Payload).Checks[1].ModifyIndex = 100
|
||||||
return nil
|
return nil
|
||||||
|
@ -1911,6 +2024,15 @@ func evRenameService(e *stream.Event) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func evTerminatingGatewayRenamed(newName string) func(e *stream.Event) error {
|
||||||
|
return func(e *stream.Event) error {
|
||||||
|
csn := getPayloadCheckServiceNode(e.Payload)
|
||||||
|
csn.Service.Service = newName
|
||||||
|
csn.Checks[1].ServiceName = newName
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// evNodeMeta option alters the base event node to add some meta data.
|
// evNodeMeta option alters the base event node to add some meta data.
|
||||||
func evNodeMeta(e *stream.Event) error {
|
func evNodeMeta(e *stream.Event) error {
|
||||||
csn := getPayloadCheckServiceNode(e.Payload)
|
csn := getPayloadCheckServiceNode(e.Payload)
|
||||||
|
|
Loading…
Reference in New Issue