Browse Source

Sort slice of ServiceNames deterministically

pull/13927/head
Chris S. Kim 2 years ago committed by Chris S. Kim
parent
commit
62ed0250c3
  1. 4
      agent/consul/state/peering.go
  2. 5
      agent/proxycfg-glue/exported_peered_services_test.go

4
agent/consul/state/peering.go

@ -353,7 +353,9 @@ func (s *Store) ExportedServicesForAllPeersByName(ws memdb.WatchSet, entMeta acl
}
m := list.ListAllDiscoveryChains()
if len(m) > 0 {
out[peering.Name] = maps.SliceOfKeys(m)
sns := maps.SliceOfKeys[structs.ServiceName, structs.ExportedDiscoveryChainInfo](m)
sort.Sort(structs.ServiceList(sns))
out[peering.Name] = sns
}
}

5
agent/proxycfg-glue/exported_peered_services_test.go

@ -10,6 +10,7 @@ import (
"github.com/hashicorp/consul/agent/proxycfg"
"github.com/hashicorp/consul/agent/structs"
"github.com/hashicorp/consul/proto/pbpeering"
"github.com/hashicorp/consul/sdk/testutil"
)
func TestServerExportedPeeredServices(t *testing.T) {
@ -59,7 +60,7 @@ func TestServerExportedPeeredServices(t *testing.T) {
})
require.NoError(t, dataSource.Notify(ctx, &structs.DCSpecificRequest{}, "", eventCh))
t.Run("initial state", func(t *testing.T) {
testutil.RunStep(t, "initial state", func(t *testing.T) {
result := getEventResult[*structs.IndexedExportedServiceList](t, eventCh)
require.Equal(t,
map[string]structs.ServiceList{
@ -69,7 +70,7 @@ func TestServerExportedPeeredServices(t *testing.T) {
)
})
t.Run("update exported services", func(t *testing.T) {
testutil.RunStep(t, "update exported services", func(t *testing.T) {
require.NoError(t, store.EnsureConfigEntry(nextIndex(), &structs.ExportedServicesConfigEntry{
Name: "default",
Services: []structs.ExportedService{

Loading…
Cancel
Save