github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/syz-cluster/pkg/db/session_repo_test.go (about) 1 // Copyright 2024 syzkaller project authors. All rights reserved. 2 // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 3 4 package db 5 6 import ( 7 "testing" 8 "time" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestSeriesInsertSession(t *testing.T) { 14 client, ctx := NewTransientDB(t) 15 sessionRepo := NewSessionRepository(client) 16 seriesRepo := NewSeriesRepository(client) 17 18 series := &Series{ExtID: "some-series"} 19 err := seriesRepo.Insert(ctx, series, nil) 20 assert.NoError(t, err) 21 22 withSession := func(need int) { 23 list, err := seriesRepo.ListLatest(ctx, SeriesFilter{Limit: 10}, time.Time{}) 24 assert.NoError(t, err) 25 var cnt int 26 for _, item := range list { 27 if item.Session != nil { 28 cnt++ 29 } 30 } 31 assert.Equal(t, cnt, need) 32 } 33 34 // This series is indeed without a session. 35 withSession(0) 36 37 // Add a new session. 38 session := &Session{SeriesID: series.ID} 39 err = sessionRepo.Insert(ctx, session) 40 assert.NoError(t, err) 41 42 // The sessions is not started yet. 43 withSession(0) 44 45 // Now start it. 46 err = sessionRepo.Start(ctx, session.ID) 47 assert.NoError(t, err) 48 withSession(1) 49 } 50 51 func TestQueryWaitingSessions(t *testing.T) { 52 client, ctx := NewTransientDB(t) 53 sessionRepo := NewSessionRepository(client) 54 seriesRepo := NewSeriesRepository(client) 55 56 series := &Series{ExtID: "some-series"} 57 err := seriesRepo.Insert(ctx, series, nil) 58 assert.NoError(t, err) 59 60 nthTime := func(i int) time.Time { 61 return time.Date(2009, time.January, 1, 1, i, 0, 0, time.UTC) 62 } 63 64 for i := 0; i < 5; i++ { 65 session := &Session{ 66 SeriesID: series.ID, 67 CreatedAt: nthTime(i), 68 } 69 err = sessionRepo.Insert(ctx, session) 70 assert.NoError(t, err) 71 } 72 73 var next *NextSession 74 for i := 0; i < 5; i++ { 75 var list []*Session 76 list, next, err = sessionRepo.ListWaiting(ctx, next, 1) 77 assert.NoError(t, err) 78 assert.Len(t, list, 1) 79 assert.Equal(t, nthTime(i), list[0].CreatedAt) 80 } 81 }