Skip to content

Commit b0ff117

Browse files
committed
[usage] Filter out not started workspace instances
1 parent 3328f57 commit b0ff117

File tree

3 files changed

+3
-18
lines changed

3 files changed

+3
-18
lines changed

components/usage/pkg/apiv1/usage_test.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -299,10 +299,8 @@ func TestInstanceToUsageRecords(t *testing.T) {
299299
workspaceID := dbtest.GenerateWorkspaceID()
300300
teamAttributionID := db.NewTeamAttributionID(teamID)
301301
instanceId := uuid.New()
302-
creationTime := db.NewVarcharTime(time.Date(2022, 05, 30, 00, 00, 00, 00, time.UTC))
303302
startedTime := db.NewVarcharTime(time.Date(2022, 05, 30, 00, 01, 00, 00, time.UTC))
304303
stoppingTime := db.NewVarcharTime(time.Date(2022, 06, 1, 1, 0, 0, 0, time.UTC))
305-
stoppedTime := db.NewVarcharTime(time.Date(2022, 06, 1, 1, 1, 0, 0, time.UTC))
306304

307305
scenarios := []struct {
308306
Name string
@@ -320,10 +318,8 @@ func TestInstanceToUsageRecords(t *testing.T) {
320318
WorkspaceClass: defaultWorkspaceClass,
321319
Type: db.WorkspaceType_Prebuild,
322320
UsageAttributionID: teamAttributionID,
323-
CreationTime: creationTime,
324321
StartedTime: startedTime,
325322
StoppingTime: stoppingTime,
326-
StoppedTime: stoppedTime,
327323
},
328324
},
329325
Expected: []db.WorkspaceInstanceUsage{{
@@ -352,10 +348,8 @@ func TestInstanceToUsageRecords(t *testing.T) {
352348
Type: db.WorkspaceType_Regular,
353349
WorkspaceID: workspaceID,
354350
UsageAttributionID: teamAttributionID,
355-
CreationTime: creationTime,
356351
StartedTime: startedTime,
357352
StoppingTime: db.VarcharTime{},
358-
StoppedTime: db.VarcharTime{},
359353
},
360354
},
361355
Expected: []db.WorkspaceInstanceUsage{{
@@ -402,7 +396,7 @@ func TestReportGenerator_GenerateUsageReport(t *testing.T) {
402396
UsageAttributionID: db.NewTeamAttributionID(teamID.String()),
403397
StartedTime: db.NewVarcharTime(time.Date(2022, 05, 30, 00, 01, 00, 00, time.UTC)),
404398
}),
405-
// No creation time, invalid record
399+
// No creation time, invalid record, ignored
406400
dbtest.NewWorkspaceInstance(t, db.WorkspaceInstance{
407401
ID: uuid.New(),
408402
UsageAttributionID: db.NewTeamAttributionID(teamID.String()),
@@ -426,7 +420,7 @@ func TestReportGenerator_GenerateUsageReport(t *testing.T) {
426420
require.Equal(t, nowFunc(), report.GenerationTime)
427421
require.Equal(t, startOfMay, report.From)
428422
// require.Equal(t, startOfJune, report.To) TODO(gpl) This is not true anymore - does it really make sense to test for it?
429-
require.Len(t, report.InvalidSessions, 1)
423+
require.Len(t, report.InvalidSessions, 0)
430424
require.Len(t, report.UsageRecords, 2)
431425
}
432426

@@ -654,7 +648,6 @@ func TestReconcileWithLedger(t *testing.T) {
654648
WorkspaceClass: db.WorkspaceClass_Default,
655649
Type: db.WorkspaceType_Regular,
656650
UsageAttributionID: db.NewTeamAttributionID(uuid.New().String()),
657-
CreationTime: db.NewVarcharTime(now.Add(1 * time.Minute)),
658651
}
659652

660653
inserts, updates := reconcileUsageWithLedger([]db.WorkspaceInstanceForUsage{instance, instance}, nil, pricer, now)
@@ -685,7 +678,6 @@ func TestReconcileWithLedger(t *testing.T) {
685678
WorkspaceClass: db.WorkspaceClass_Default,
686679
Type: db.WorkspaceType_Regular,
687680
UsageAttributionID: db.NewTeamAttributionID(uuid.New().String()),
688-
CreationTime: db.NewVarcharTime(now.Add(1 * time.Minute)),
689681
}
690682

691683
// the fields in the usage record deliberately do not match the instance, except for the Instance ID.

components/usage/pkg/db/workspace_instance.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ func ListWorkspaceInstancesInRange(ctx context.Context, conn *gorm.DB, from, to
134134
Where(
135135
conn.Where("wsi.stoppingTime >= ?", TimeToISO8601(from)).Or("wsi.stoppingTime = ?", ""),
136136
).
137+
Where("wsi.startedTime != ?", "").
137138
Where("wsi.startedTime < ?", TimeToISO8601(to)).
138139
Where("wsi.usageAttributionId != ?", "").
139140
FindInBatches(&instancesInBatch, 1000, func(_ *gorm.DB, _ int) error {
@@ -155,10 +156,8 @@ func queryWorkspaceInstanceForUsage(ctx context.Context, conn *gorm.DB) *gorm.DB
155156
"ws.type as workspaceType, " +
156157
"wsi.workspaceClass as workspaceClass, " +
157158
"wsi.usageAttributionId as usageAttributionId, " +
158-
"wsi.creationTime as creationTime, " +
159159
"wsi.startedTime as startedTime, " +
160160
"wsi.stoppingTime as stoppingTime, " +
161-
"wsi.stoppedTime as stoppedTime, " +
162161
"ws.ownerId as ownerId, " +
163162
"ws.id as workspaceId",
164163
).
@@ -224,10 +223,8 @@ type WorkspaceInstanceForUsage struct {
224223
Type WorkspaceType `gorm:"column:workspaceType;type:char;size:16;default:regular;" json:"workspaceType"`
225224
UsageAttributionID AttributionID `gorm:"column:usageAttributionId;type:varchar;size:60;" json:"usageAttributionId"`
226225

227-
CreationTime VarcharTime `gorm:"column:creationTime;type:varchar;size:255;" json:"creationTime"`
228226
StartedTime VarcharTime `gorm:"column:startedTime;type:varchar;size:255;" json:"startedTime"`
229227
StoppingTime VarcharTime `gorm:"column:stoppingTime;type:varchar;size:255;" json:"stoppingTime"`
230-
StoppedTime VarcharTime `gorm:"column:stoppedTime;type:varchar;size:255;" json:"stoppedTime"`
231228
}
232229

233230
// WorkspaceRuntimeSeconds computes how long this WorkspaceInstance has been running.

components/usage/pkg/db/workspace_instance_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,8 @@ func TestListWorkspaceInstancesInRange_Fields(t *testing.T) {
122122
WorkspaceClass: instance.WorkspaceClass,
123123
Type: workspace.Type,
124124
UsageAttributionID: instance.UsageAttributionID,
125-
CreationTime: instance.CreationTime,
126125
StartedTime: instance.StartedTime,
127126
StoppingTime: instance.StoppingTime,
128-
StoppedTime: instance.StoppedTime,
129127
}, retrieved[0])
130128
})
131129

@@ -159,10 +157,8 @@ func TestListWorkspaceInstancesInRange_Fields(t *testing.T) {
159157
WorkspaceClass: instance.WorkspaceClass,
160158
Type: workspace.Type,
161159
UsageAttributionID: instance.UsageAttributionID,
162-
CreationTime: instance.CreationTime,
163160
StartedTime: instance.StartedTime,
164161
StoppingTime: instance.StoppingTime,
165-
StoppedTime: instance.StoppedTime,
166162
}, retrieved[0])
167163
})
168164

0 commit comments

Comments
 (0)