blob: aa4f917e3a31db3525f506cf98f6182c68d2c372 [file] [log] [blame]
// Copyright Istio Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package xds_test
import (
"fmt"
"testing"
)
import (
discovery "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3"
)
import (
"github.com/apache/dubbo-go-pixiu/pilot/pkg/xds"
v3 "github.com/apache/dubbo-go-pixiu/pilot/pkg/xds/v3"
)
func TestRDS(t *testing.T) {
tests := []struct {
name string
node string
routes []string
}{
{
"sidecar_new",
sidecarID(app3Ip, "app3"),
[]string{"80", "8080"},
},
{
"gateway_new",
gatewayID(gatewayIP),
[]string{"http.80", "https.443.https.my-gateway.testns"},
},
{
// Even if we get a bad route, we should still send Envoy an empty response, rather than
// ignore it. If we ignore the route, the listeners can get stuck waiting forever.
"sidecar_badroute",
sidecarID(app3Ip, "app3"),
[]string{"ht&p"},
},
}
s := xds.NewFakeDiscoveryServer(t, xds.FakeOptions{})
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ads := s.ConnectADS().WithType(v3.RouteType).WithID(tt.node)
ads.RequestResponseAck(t, &discovery.DiscoveryRequest{ResourceNames: tt.routes})
})
}
}
const (
app3Ip = "10.2.0.1"
gatewayIP = "10.3.0.1"
)
// Common code for the xds testing.
// The tests in this package use an in-process pilot using mock service registry and
// envoy.
func sidecarID(ip, deployment string) string { // nolint: unparam
return fmt.Sprintf("sidecar~%s~%s-644fc65469-96dza.testns~testns.svc.cluster.local", ip, deployment)
}
func gatewayID(ip string) string { //nolint: unparam
return fmt.Sprintf("router~%s~istio-gateway-644fc65469-96dzt.dubbo-system~dubbo-system.svc.cluster.local", ip)
}