@@ -299,88 +299,87 @@ func TestProvisionerDaemon_SessionToken(t *testing.T) {
299
299
assert .Equal (t ,buildinfo .Version (),daemons [0 ].Version )
300
300
assert .Equal (t ,proto .CurrentVersion .String (),daemons [0 ].APIVersion )
301
301
})
302
+ }
302
303
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 )
307
307
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 ,
315
314
},
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 ()
323
323
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" )
327
327
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 )
338
338
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
+ }
348
348
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 ()
358
358
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
378
372
}
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 ())
380
380
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" )
386
385
}