@@ -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
}
0 commit comments