From 437f76991626eecf4e6f51d2c057a3844b4ebbc1 Mon Sep 17 00:00:00 2001 From: Daniel Nephin Date: Fri, 4 Feb 2022 14:04:12 -0500 Subject: [PATCH] A test to reproduce the issue --- agent/consul/state/catalog_test.go | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/agent/consul/state/catalog_test.go b/agent/consul/state/catalog_test.go index abbf831cfd..9d28bc1015 100644 --- a/agent/consul/state/catalog_test.go +++ b/agent/consul/state/catalog_test.go @@ -5977,6 +5977,40 @@ func setupIngressState(t *testing.T, s *Store) memdb.WatchSet { return ws } +func TestStore_EnsureService_DoesNotPanicOnIngressGateway(t *testing.T) { + store := NewStateStore(nil) + + err := store.EnsureConfigEntry(1, &structs.IngressGatewayConfigEntry{ + Kind: structs.IngressGateway, + Name: "the-ingress", + Listeners: []structs.IngressListener{ + { + Port: 12345, + Protocol: "tcp", + Services: []structs.IngressService{{Name: "the-service"}}, + }, + }, + }) + require.NoError(t, err) + + err = store.EnsureRegistration(2, &structs.RegisterRequest{ + Node: "the-node", + Service: &structs.NodeService{ + Kind: structs.ServiceKindConnectProxy, + Service: "the-proxy", + Proxy: structs.ConnectProxyConfig{ + DestinationServiceName: "the-ingress", + Upstreams: []structs.Upstream{ + { + DestinationName: "the-service", + }, + }, + }, + }, + }) + require.NoError(t, err) +} + func TestStateStore_DumpGatewayServices(t *testing.T) { s := testStateStore(t)