Sort slice of ServiceNames deterministically

This commit is contained in:
Chris S. Kim 2022-07-27 11:06:20 -04:00 committed by Chris S. Kim
parent 85dd506ecb
commit 146dd93775
2 changed files with 6 additions and 3 deletions

View File

@ -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
}
}

View File

@ -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{