diff --git a/agent/catalog_endpoint_test.go b/agent/catalog_endpoint_test.go index 68e3eddaf..103e50ad2 100644 --- a/agent/catalog_endpoint_test.go +++ b/agent/catalog_endpoint_test.go @@ -1201,87 +1201,6 @@ func TestListServiceNodes_MergeCentralConfig(t *testing.T) { } } -func TestCatalogServiceNodes_MergeCentralConfigBlocking(t *testing.T) { - if testing.Short() { - t.Skip("too slow for testing.Short") - } - - t.Parallel() - a := NewTestAgent(t, "") - defer a.Shutdown() - - testrpc.WaitForLeader(t, a.RPC, "dc1") - - // Register the service - registerServiceReq := structs.TestRegisterRequestProxy(t) - var out struct{} - assert.Nil(t, a.RPC("Catalog.Register", registerServiceReq, &out)) - - // Register proxy-defaults - proxyGlobalEntry := registerProxyDefaults(t, a) - - // Run the query - rpcReq := structs.ServiceSpecificRequest{ - Datacenter: "dc1", - ServiceName: registerServiceReq.Service.Service, - MergeCentralConfig: true, - } - var rpcResp structs.IndexedServiceNodes - assert.Nil(t, a.RPC("Catalog.ServiceNodes", &rpcReq, &rpcResp)) - - assert.Len(t, rpcResp.ServiceNodes, 1) - serviceNode := rpcResp.ServiceNodes[0] - assert.Equal(t, registerServiceReq.Service.Service, serviceNode.ServiceName) - // validate proxy global defaults are resolved in the merged service config - assert.Equal(t, proxyGlobalEntry.Config, serviceNode.ServiceProxy.Config) - assert.Equal(t, proxyGlobalEntry.Mode, serviceNode.ServiceProxy.Mode) - - // Async cause a change - register service defaults - waitIndex := rpcResp.Index - start := time.Now() - var serviceDefaultsConfigEntry structs.ServiceConfigEntry - go func() { - time.Sleep(100 * time.Millisecond) - // Register service-defaults - serviceDefaultsConfigEntry = registerServiceDefaults(t, a, registerServiceReq.Service.Proxy.DestinationServiceName) - }() - - const waitDuration = 3 * time.Second -RUN_BLOCKING_QUERY: - url := fmt.Sprintf("/v1/catalog/service/%s?merge-central-config&wait=%s&index=%d", - registerServiceReq.Service.Service, waitDuration.String(), waitIndex) - req, _ := http.NewRequest("GET", url, nil) - resp := httptest.NewRecorder() - obj, err := a.srv.CatalogServiceNodes(resp, req) - - assert.Nil(t, err) - assertIndex(t, resp) - - elapsed := time.Since(start) - idx := getIndex(t, resp) - if idx < waitIndex { - t.Fatalf("bad index returned: %v", idx) - } else if idx == waitIndex { - if elapsed > waitDuration { - // This should prevent the loop from running longer than the waitDuration - t.Fatalf("too slow: %v", elapsed) - } - goto RUN_BLOCKING_QUERY - } - // Should block at least 100ms before getting the changed results - if elapsed < 100*time.Millisecond { - t.Fatalf("too fast: %v", elapsed) - } - - serviceNodes := obj.(structs.ServiceNodes) - - // validate response - assert.Len(t, serviceNodes, 1) - v := serviceNodes[0] - - validateMergeCentralConfigResponse(t, v, registerServiceReq, proxyGlobalEntry, serviceDefaultsConfigEntry) -} - // Test that the Connect-compatible endpoints can be queried for a // service via /v1/catalog/connect/:service. func TestCatalogConnectServiceNodes_good(t *testing.T) { diff --git a/agent/health_endpoint_test.go b/agent/health_endpoint_test.go index da09efedb..4b775f1e8 100644 --- a/agent/health_endpoint_test.go +++ b/agent/health_endpoint_test.go @@ -1958,91 +1958,6 @@ func TestListHealthyServiceNodes_MergeCentralConfig(t *testing.T) { } } -func TestHealthServiceNodes_MergeCentralConfigBlocking(t *testing.T) { - if testing.Short() { - t.Skip("too slow for testing.Short") - } - - t.Parallel() - a := NewTestAgent(t, "") - defer a.Shutdown() - - testrpc.WaitForLeader(t, a.RPC, "dc1") - - // Register the service - registerServiceReq := structs.TestRegisterRequestProxy(t) - registerServiceReq.Check = &structs.HealthCheck{ - Node: registerServiceReq.Node, - Name: "check1", - } - var out struct{} - assert.Nil(t, a.RPC("Catalog.Register", registerServiceReq, &out)) - - // Register proxy-defaults - proxyGlobalEntry := registerProxyDefaults(t, a) - - // Run the query - rpcReq := structs.ServiceSpecificRequest{ - Datacenter: "dc1", - ServiceName: registerServiceReq.Service.Service, - MergeCentralConfig: true, - } - var rpcResp structs.IndexedCheckServiceNodes - assert.Nil(t, a.RPC("Health.ServiceNodes", &rpcReq, &rpcResp)) - - assert.Len(t, rpcResp.Nodes, 1) - nodeService := rpcResp.Nodes[0].Service - assert.Equal(t, registerServiceReq.Service.Service, nodeService.Service) - // validate proxy global defaults are resolved in the merged service config - assert.Equal(t, proxyGlobalEntry.Config, nodeService.Proxy.Config) - assert.Equal(t, proxyGlobalEntry.Mode, nodeService.Proxy.Mode) - - // Async cause a change - register service defaults - waitIndex := rpcResp.Index - start := time.Now() - var serviceDefaultsConfigEntry structs.ServiceConfigEntry - go func() { - time.Sleep(100 * time.Millisecond) - // Register service-defaults - serviceDefaultsConfigEntry = registerServiceDefaults(t, a, registerServiceReq.Service.Proxy.DestinationServiceName) - }() - - const waitDuration = 3 * time.Second -RUN_BLOCKING_QUERY: - url := fmt.Sprintf("/v1/health/service/%s?merge-central-config&wait=%s&index=%d", - registerServiceReq.Service.Service, waitDuration.String(), waitIndex) - req, _ := http.NewRequest("GET", url, nil) - resp := httptest.NewRecorder() - obj, err := a.srv.HealthServiceNodes(resp, req) - - assert.Nil(t, err) - assertIndex(t, resp) - - elapsed := time.Since(start) - idx := getIndex(t, resp) - if idx < waitIndex { - t.Fatalf("bad index returned: %v", idx) - } else if idx == waitIndex { - if elapsed > waitDuration { - // This should prevent the loop from running longer than the waitDuration - t.Fatalf("too slow: %v", elapsed) - } - goto RUN_BLOCKING_QUERY - } - // Should block at least 100ms before getting the changed results - if elapsed < 100*time.Millisecond { - t.Fatalf("too fast: %v", elapsed) - } - - checkServiceNodes := obj.(structs.CheckServiceNodes) - - // validate response - assert.Len(t, checkServiceNodes, 1) - v := checkServiceNodes[0].Service.ToServiceNode(registerServiceReq.Node) - - validateMergeCentralConfigResponse(t, v, registerServiceReq, proxyGlobalEntry, serviceDefaultsConfigEntry) -} - func peerQuerySuffix(peerName string) string { if peerName == "" { return ""