@@ -3986,6 +3986,59 @@ func TestGetPresetsBackoff(t *testing.T) {
3986
3986
require .Equal (t , int32 (2 ), backoff .NumFailed )
3987
3987
}
3988
3988
})
3989
+
3990
+ t .Run ("check LastBuildAt timestamp" , func (t * testing.T ) {
3991
+ t .Parallel ()
3992
+
3993
+ db , _ := dbtestutil .NewDB (t )
3994
+ ctx := testutil .Context (t , testutil .WaitShort )
3995
+ dbgen .Organization (t , db , database.Organization {
3996
+ ID : orgID ,
3997
+ })
3998
+ dbgen .User (t , db , database.User {
3999
+ ID : userID ,
4000
+ })
4001
+ lookbackPeriod := time .Hour
4002
+
4003
+ tmpl1 := createTemplate (db )
4004
+ tmpl1V1 := createTmplVersion (db , tmpl1 , tmpl1 .ActiveVersionID , & tmplVersionOpts {
4005
+ DesiredInstances : 5 ,
4006
+ })
4007
+ createWorkspaceBuild (db , tmpl1 , tmpl1V1 , & workspaceBuildOpts {
4008
+ successfulJob : false ,
4009
+ createdAt : now .Add (- 4 * time .Minute ),
4010
+ })
4011
+ createWorkspaceBuild (db , tmpl1 , tmpl1V1 , & workspaceBuildOpts {
4012
+ successfulJob : false ,
4013
+ createdAt : now .Add (- 0 * time .Minute ),
4014
+ })
4015
+ createWorkspaceBuild (db , tmpl1 , tmpl1V1 , & workspaceBuildOpts {
4016
+ successfulJob : false ,
4017
+ createdAt : now .Add (- 3 * time .Minute ),
4018
+ })
4019
+ createWorkspaceBuild (db , tmpl1 , tmpl1V1 , & workspaceBuildOpts {
4020
+ successfulJob : false ,
4021
+ createdAt : now .Add (- 1 * time .Minute ),
4022
+ })
4023
+ createWorkspaceBuild (db , tmpl1 , tmpl1V1 , & workspaceBuildOpts {
4024
+ successfulJob : false ,
4025
+ createdAt : now .Add (- 2 * time .Minute ),
4026
+ })
4027
+
4028
+ backoffs , err := db .GetPresetsBackoff (ctx , now .Add (- lookbackPeriod ))
4029
+ require .NoError (t , err )
4030
+
4031
+ require .Len (t , backoffs , 1 )
4032
+ {
4033
+ backoff := backoffs [0 ]
4034
+ require .Equal (t , backoff .TemplateVersionID , tmpl1 .ActiveVersionID )
4035
+ require .Equal (t , backoff .PresetID , tmpl1V1 .preset .ID )
4036
+ require .Equal (t , database .ProvisionerJobStatusFailed , backoff .LatestBuildStatus )
4037
+ require .Equal (t , int32 (5 ), backoff .NumFailed )
4038
+ // make sure LastBuildAt is equal to latest failed build timestamp
4039
+ require .Equal (t , 0 , now .Compare (backoff .LastBuildAt .(time.Time )))
4040
+ }
4041
+ })
3989
4042
}
3990
4043
3991
4044
func requireUsersMatch (t testing.TB , expected []database.User , found []database.GetUsersRow , msg string ) {
0 commit comments