From 05a60b6f56d50e17a69ca164565ca6bf806d5368 Mon Sep 17 00:00:00 2001 From: Arjan Bal Date: Wed, 25 Sep 2024 00:19:44 +0530 Subject: [PATCH] Avoid making a DNS request in aggregated_cluster_test --- .../e2e_test/aggregate_cluster_test.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/xds/internal/balancer/clusterresolver/e2e_test/aggregate_cluster_test.go b/xds/internal/balancer/clusterresolver/e2e_test/aggregate_cluster_test.go index 5f6f6e9ee436..b82e6d09202a 100644 --- a/xds/internal/balancer/clusterresolver/e2e_test/aggregate_cluster_test.go +++ b/xds/internal/balancer/clusterresolver/e2e_test/aggregate_cluster_test.go @@ -916,6 +916,7 @@ func (s) TestAggregateCluster_BadDNS_GoodEDS(t *testing.T) { // error, the test verifies that RPCs fail with the error triggered by the DNS // Discovery Mechanism (from sending an empty address list down). func (s) TestAggregateCluster_BadEDS_BadDNS(t *testing.T) { + dnsTargetCh, dnsR := setupDNS(t) // Start an xDS management server. managementServer := e2e.StartManagementServer(t, e2e.ManagementServerOptions{AllowResourceSubset: true}) @@ -929,6 +930,8 @@ func (s) TestAggregateCluster_BadEDS_BadDNS(t *testing.T) { const ( edsClusterName = clusterName + "-eds" dnsClusterName = clusterName + "-dns" + dnsHostName = "bad.ip.v4.address" + dnsPort = 8080 ) emptyEndpointResource := e2e.DefaultEndpoint(edsServiceName, "localhost", nil) resources := e2e.UpdateOptions{ @@ -936,7 +939,7 @@ func (s) TestAggregateCluster_BadEDS_BadDNS(t *testing.T) { Clusters: []*v3clusterpb.Cluster{ makeAggregateClusterResource(clusterName, []string{edsClusterName, dnsClusterName}), e2e.DefaultCluster(edsClusterName, edsServiceName, e2e.SecurityLevelNone), - makeLogicalDNSClusterResource(dnsClusterName, "bad.ip.v4.address", 8080), + makeLogicalDNSClusterResource(dnsClusterName, dnsHostName, dnsPort), }, Endpoints: []*v3endpointpb.ClusterLoadAssignment{emptyEndpointResource}, SkipValidation: true, @@ -952,6 +955,20 @@ func (s) TestAggregateCluster_BadEDS_BadDNS(t *testing.T) { cc, cleanup := setupAndDial(t, bootstrapContents) defer cleanup() + // Ensure that the DNS resolver is started for the expected target. + select { + case <-ctx.Done(): + t.Fatal("Timeout when waiting for DNS resolver to be started") + case target := <-dnsTargetCh: + got, want := target.Endpoint(), fmt.Sprintf("%s:%d", dnsHostName, dnsPort) + if got != want { + t.Fatalf("DNS resolution started for target %q, want %q", got, want) + } + } + + // Produce a bad resolver update from the DNS resolver. + dnsR.ReportError(fmt.Errorf("DNS error")) + // Ensure that the error from the DNS Resolver leads to an empty address // update for both priorities. client := testgrpc.NewTestServiceClient(cc)