@@ -37,6 +37,10 @@ import (
37
37
"github.com/coder/coder/v2/testutil"
38
38
)
39
39
40
+ func TestMain (m * testing.M ) {
41
+ goleak .VerifyTestMain (m , testutil .GoleakOptions ... )
42
+ }
43
+
40
44
func TestExecutorAutostartOK (t * testing.T ) {
41
45
t .Parallel ()
42
46
@@ -1663,10 +1667,6 @@ func mustWorkspaceParameters(t *testing.T, client *codersdk.Client, workspaceID
1663
1667
require .NotEmpty (t , buildParameters )
1664
1668
}
1665
1669
1666
- func TestMain (m * testing.M ) {
1667
- goleak .VerifyTestMain (m , testutil .GoleakOptions ... )
1668
- }
1669
-
1670
1670
func TestExecutorAutostartSkipsWhenNoProvisionersAvailable (t * testing.T ) {
1671
1671
t .Parallel ()
1672
1672
@@ -1680,11 +1680,19 @@ func TestExecutorAutostartSkipsWhenNoProvisionersAvailable(t *testing.T) {
1680
1680
// We can't overwrite owner or scope as there's a `provisionersdk.MutateTags` function that has restrictions on those.
1681
1681
provisionerDaemonTags := map [string ]string {"test-tag" : "asdf" }
1682
1682
t .Logf ("Setting provisioner daemon tags: %v" , provisionerDaemonTags )
1683
- client , db := coderdtest .NewWithDatabase (t , & coderdtest.Options {
1683
+
1684
+ db , ps := dbtestutil .NewDB (t )
1685
+ client , _ , api := coderdtest .NewWithAPI (t , & coderdtest.Options {
1686
+ Database : db ,
1687
+ Pubsub : ps ,
1688
+ IncludeProvisionerDaemon : false ,
1684
1689
AutobuildTicker : tickCh ,
1685
- IncludeProvisionerDaemon : true ,
1686
1690
AutobuildStats : statsCh ,
1687
- ProvisionerDaemonTags : provisionerDaemonTags ,
1691
+ })
1692
+
1693
+ daemon1Closer := coderdtest .NewTaggedProvisionerDaemon (t , api , "name" , provisionerDaemonTags )
1694
+ t .Cleanup (func () {
1695
+ _ = daemon1Closer .Close ()
1688
1696
})
1689
1697
1690
1698
// Create workspace with autostart enabled and matching provisioner tags
@@ -1700,6 +1708,8 @@ func TestExecutorAutostartSkipsWhenNoProvisionersAvailable(t *testing.T) {
1700
1708
p , err := coderdtest .GetProvisionerForTags (db , time .Now (), workspace .OrganizationID , provisionerDaemonTags )
1701
1709
require .NoError (t , err , "Error getting provisioner for workspace" )
1702
1710
1711
+ daemon1Closer .Close ()
1712
+
1703
1713
// Ensure the provisioner is stale
1704
1714
staleTime := sched .Next (workspace .LatestBuild .CreatedAt ).Add ((- 1 * provisionerdserver .StaleInterval ) + - 10 * time .Second )
1705
1715
coderdtest .UpdateProvisionerLastSeenAt (t , db , p .ID , staleTime )
@@ -1713,7 +1723,14 @@ func TestExecutorAutostartSkipsWhenNoProvisionersAvailable(t *testing.T) {
1713
1723
// UpdateProvisionerLastSeenAt call above.
1714
1724
assert .Len (t , stats .Transitions , 0 , "should not create builds when no provisioners available" )
1715
1725
1726
+ daemon2Closer := coderdtest .NewTaggedProvisionerDaemon (t , api , "name" , provisionerDaemonTags )
1727
+ t .Cleanup (func () {
1728
+ _ = daemon2Closer .Close ()
1729
+ })
1730
+
1716
1731
// Ensure the provisioner is NOT stale, and see if we get a successful state transition.
1732
+ p , err = coderdtest .GetProvisionerForTags (db , time .Now (), workspace .OrganizationID , provisionerDaemonTags )
1733
+ require .NoError (t , err , "Error getting provisioner for workspace" )
1717
1734
notStaleTime := sched .Next (workspace .LatestBuild .CreatedAt ).Add ((- 1 * provisionerdserver .StaleInterval ) + 10 * time .Second )
1718
1735
coderdtest .UpdateProvisionerLastSeenAt (t , db , p .ID , notStaleTime )
1719
1736
0 commit comments