54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
|
package troubleshoot
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
"os"
|
||
|
"testing"
|
||
|
|
||
|
envoy_listener_v3 "github.com/envoyproxy/go-control-plane/envoy/config/listener/v3"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
"google.golang.org/protobuf/encoding/protojson"
|
||
|
)
|
||
|
|
||
|
func TestGetUpstreamIPsFromFilterChain(t *testing.T) {
|
||
|
file, err := os.Open("testdata/listeners.json")
|
||
|
require.NoError(t, err)
|
||
|
jsonBytes, err := io.ReadAll(file)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
expected := []UpstreamIP{
|
||
|
{
|
||
|
IPs: []string{
|
||
|
"10.244.0.63",
|
||
|
"10.244.0.64",
|
||
|
},
|
||
|
IsVirtual: false,
|
||
|
ClusterNames: map[string]struct{}{
|
||
|
"passthrough~foo.default.dc1.internal.dc1.consul": {},
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
IPs: []string{
|
||
|
"10.96.5.96",
|
||
|
"240.0.0.1",
|
||
|
},
|
||
|
IsVirtual: true,
|
||
|
ClusterNames: map[string]struct{}{
|
||
|
"foo.default.dc1.internal.dc1.consul": {},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
var listener envoy_listener_v3.Listener
|
||
|
unmarshal := &protojson.UnmarshalOptions{
|
||
|
DiscardUnknown: true,
|
||
|
}
|
||
|
err = unmarshal.Unmarshal(jsonBytes, &listener)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
upstream_ips, err := getUpstreamIPsFromFilterChain(listener.GetFilterChains())
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
require.Equal(t, expected, upstream_ips)
|
||
|
}
|