Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556package db
import ( "context" "fmt" "slices" "testing" "time")
// raw sql because EnqueuePipeline takes minutes at this depthfunc queueOf(t *testing.T, depth, repos int) *DB { t.Helper() database := newTestDB(t) tx, err := database.Begin() if err != nil { t.Fatal(err) } stmt, err := tx.Prepare(`insert into jobs (repo_did, pipeline_id, tpl, created_at_ns) values (?, ?, '{}', 1)`) if err != nil { t.Fatal(err) } for i := range depth { if _, err := stmt.Exec(fmt.Sprintf("did:plc:repo%04d", i%repos), fmt.Sprintf("p%d", i)); err != nil { t.Fatal(err) } } if err := tx.Commit(); err != nil { t.Fatal(err) } return database}
func medianDequeue(t *testing.T, d *DB, n int) time.Duration { t.Helper() var took []time.Duration for range n { start := time.Now() if job, err := d.DequeueJob(context.Background(), nil); err != nil || job == nil { t.Fatalf("dequeue = %v, %v", job, err) } took = append(took, time.Since(start)) } slices.Sort(took) return took[len(took)/2]}
func TestDequeueCostDoesNotFollowTheQueueDepth(t *testing.T) { shallow := medianDequeue(t, queueOf(t, 500, 200), 9) deep := medianDequeue(t, queueOf(t, 100_000, 200), 9) t.Logf("median dequeue %v at depth 500, %v at depth 100000 over 200 repos", shallow, deep) if deep > 8*shallow+5*time.Millisecond { t.Fatalf("median dequeue is %v at depth 100000 against %v at depth 500, want it independent of depth", deep, shallow) }}