Skip to content

Commit 966c888

Browse files
authored
fix: test: no parallel when starting Prometheus endpoint (coder#13981)
* fix: test: no parallel when starting Prometheus endpoint * fix
1 parent 5a4dbcf commit 966c888

File tree

1 file changed

+73
-74
lines changed

1 file changed

+73
-74
lines changed

enterprise/cli/provisionerdaemons_test.go

Lines changed: 73 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -299,88 +299,87 @@ func TestProvisionerDaemon_SessionToken(t *testing.T) {
299299
assert.Equal(t, buildinfo.Version(), daemons[0].Version)
300300
assert.Equal(t, proto.CurrentVersion.String(), daemons[0].APIVersion)
301301
})
302+
}
302303

303-
t.Run("PrometheusEnabled", func(t *testing.T) {
304-
t.Parallel()
305-
306-
prometheusPort := testutil.RandomPortNoListen(t)
304+
//nolint:paralleltest,tparallel // Prometheus endpoint tends to fail with `bind: address already in use`.
305+
func TestProvisionerDaemon_PrometheusEnabled(t *testing.T) {
306+
prometheusPort := testutil.RandomPortNoListen(t)
307307

308-
// Configure CLI client
309-
client, admin := coderdenttest.New(t, &coderdenttest.Options{
310-
ProvisionerDaemonPSK: "provisionersftw",
311-
LicenseOptions: &coderdenttest.LicenseOptions{
312-
Features: license.Features{
313-
codersdk.FeatureExternalProvisionerDaemons: 1,
314-
},
308+
// Configure CLI client
309+
client, admin := coderdenttest.New(t, &coderdenttest.Options{
310+
ProvisionerDaemonPSK: "provisionersftw",
311+
LicenseOptions: &coderdenttest.LicenseOptions{
312+
Features: license.Features{
313+
codersdk.FeatureExternalProvisionerDaemons: 1,
315314
},
316-
})
317-
anotherClient, _ := coderdtest.CreateAnotherUser(t, client, admin.OrganizationID, rbac.RoleTemplateAdmin())
318-
inv, conf := newCLI(t, "provisionerd", "start", "--name", "daemon-with-prometheus", "--prometheus-enable", "--prometheus-address", fmt.Sprintf("127.0.0.1:%d", prometheusPort))
319-
clitest.SetupConfig(t, anotherClient, conf)
320-
pty := ptytest.New(t).Attach(inv)
321-
ctx, cancel := context.WithTimeout(inv.Context(), testutil.WaitLong)
322-
defer cancel()
315+
},
316+
})
317+
anotherClient, _ := coderdtest.CreateAnotherUser(t, client, admin.OrganizationID, rbac.RoleTemplateAdmin())
318+
inv, conf := newCLI(t, "provisionerd", "start", "--name", "daemon-with-prometheus", "--prometheus-enable", "--prometheus-address", fmt.Sprintf("127.0.0.1:%d", prometheusPort))
319+
clitest.SetupConfig(t, anotherClient, conf)
320+
pty := ptytest.New(t).Attach(inv)
321+
ctx, cancel := context.WithTimeout(inv.Context(), testutil.WaitLong)
322+
defer cancel()
323323

324-
// Start "provisionerd" command
325-
clitest.Start(t, inv)
326-
pty.ExpectMatchContext(ctx, "starting provisioner daemon")
324+
// Start "provisionerd" command
325+
clitest.Start(t, inv)
326+
pty.ExpectMatchContext(ctx, "starting provisioner daemon")
327327

328-
var daemons []codersdk.ProvisionerDaemon
329-
var err error
330-
require.Eventually(t, func() bool {
331-
daemons, err = client.ProvisionerDaemons(ctx)
332-
if err != nil {
333-
return false
334-
}
335-
return len(daemons) == 1
336-
}, testutil.WaitLong, testutil.IntervalSlow)
337-
require.Equal(t, "daemon-with-prometheus", daemons[0].Name)
328+
var daemons []codersdk.ProvisionerDaemon
329+
var err error
330+
require.Eventually(t, func() bool {
331+
daemons, err = client.ProvisionerDaemons(ctx)
332+
if err != nil {
333+
return false
334+
}
335+
return len(daemons) == 1
336+
}, testutil.WaitLong, testutil.IntervalSlow)
337+
require.Equal(t, "daemon-with-prometheus", daemons[0].Name)
338338

339-
// Fetch metrics from Prometheus endpoint
340-
var req *http.Request
341-
var res *http.Response
342-
require.Eventually(t, func() bool {
343-
req, err = http.NewRequestWithContext(ctx, "GET", fmt.Sprintf("http://127.0.0.1:%d", prometheusPort), nil)
344-
if err != nil {
345-
t.Logf("unable to create new HTTP request: %s", err.Error())
346-
return false
347-
}
339+
// Fetch metrics from Prometheus endpoint
340+
var req *http.Request
341+
var res *http.Response
342+
require.Eventually(t, func() bool {
343+
req, err = http.NewRequestWithContext(ctx, "GET", fmt.Sprintf("http://127.0.0.1:%d", prometheusPort), nil)
344+
if err != nil {
345+
t.Logf("unable to create new HTTP request: %s", err.Error())
346+
return false
347+
}
348348

349-
// nolint:bodyclose
350-
res, err = http.DefaultClient.Do(req)
351-
if err != nil {
352-
t.Logf("unable to call Prometheus endpoint: %s", err.Error())
353-
return false
354-
}
355-
return true
356-
}, testutil.WaitShort, testutil.IntervalMedium)
357-
defer res.Body.Close()
349+
// nolint:bodyclose
350+
res, err = http.DefaultClient.Do(req)
351+
if err != nil {
352+
t.Logf("unable to call Prometheus endpoint: %s", err.Error())
353+
return false
354+
}
355+
return true
356+
}, testutil.WaitShort, testutil.IntervalMedium)
357+
defer res.Body.Close()
358358

359-
// Scan for metric patterns
360-
scanner := bufio.NewScanner(res.Body)
361-
hasOneDaemon := false
362-
hasGoStats := false
363-
hasPromHTTP := false
364-
for scanner.Scan() {
365-
if strings.HasPrefix(scanner.Text(), "coderd_provisionerd_num_daemons 1") {
366-
hasOneDaemon = true
367-
continue
368-
}
369-
if strings.HasPrefix(scanner.Text(), "go_goroutines") {
370-
hasGoStats = true
371-
continue
372-
}
373-
if strings.HasPrefix(scanner.Text(), "promhttp_metric_handler_requests_total") {
374-
hasPromHTTP = true
375-
continue
376-
}
377-
t.Logf("scanned %s", scanner.Text())
359+
// Scan for metric patterns
360+
scanner := bufio.NewScanner(res.Body)
361+
hasOneDaemon := false
362+
hasGoStats := false
363+
hasPromHTTP := false
364+
for scanner.Scan() {
365+
if strings.HasPrefix(scanner.Text(), "coderd_provisionerd_num_daemons 1") {
366+
hasOneDaemon = true
367+
continue
368+
}
369+
if strings.HasPrefix(scanner.Text(), "go_goroutines") {
370+
hasGoStats = true
371+
continue
378372
}
379-
require.NoError(t, scanner.Err())
373+
if strings.HasPrefix(scanner.Text(), "promhttp_metric_handler_requests_total") {
374+
hasPromHTTP = true
375+
continue
376+
}
377+
t.Logf("scanned %s", scanner.Text())
378+
}
379+
require.NoError(t, scanner.Err())
380380

381-
// Verify patterns
382-
require.True(t, hasOneDaemon, "should be one daemon running")
383-
require.True(t, hasGoStats, "Go stats are missing")
384-
require.True(t, hasPromHTTP, "Prometheus HTTP metrics are missing")
385-
})
381+
// Verify patterns
382+
require.True(t, hasOneDaemon, "should be one daemon running")
383+
require.True(t, hasGoStats, "Go stats are missing")
384+
require.True(t, hasPromHTTP, "Prometheus HTTP metrics are missing")
386385
}

0 commit comments

Comments
 (0)