internal/store/queues_test.go

ebf1e30fe0ae09b2d5f93705c1cbf7f513b6ed22
gitbay/internal/store/queues_test.go history · blame · raw

48 lines · 1363 bytes

 1package store
 2
 3import "testing"
 4
 5// The build queue lists pending builds as well as running ones, so an
 6// admin can see what no runner is claiming without walking every repo.
 7func TestQueuesListsPendingBuilds(t *testing.T) {
 8	s := open(t)
 9	if err := s.MigrateUp(); err != nil {
10		t.Fatal(err)
11	}
12	uid, err := s.CreateUser("cmc", true)
13	if err != nil {
14		t.Fatal(err)
15	}
16	if _, err := s.CreateRepo("user", uid, "orgo", "public"); err != nil {
17		t.Fatal(err)
18	}
19	running, err := s.CreateBuild(1, "test", "abc123", "main", `["true"]`, "", "", true)
20	if err != nil {
21		t.Fatal(err)
22	}
23	pending, err := s.CreateBuild(1, "pages", "abc123", "main", `["true"]`, "", "", true)
24	if err != nil {
25		t.Fatal(err)
26	}
27	if _, ok, err := s.ClaimBuild(nil, false); err != nil || !ok {
28		t.Fatalf("claim: %v ok=%v", err, ok)
29	}
30
31	q, err := s.QueueStatus()
32	if err != nil {
33		t.Fatal(err)
34	}
35	if q.Builds.Pending != 1 || q.Builds.Running != 1 {
36		t.Fatalf("counts: %+v", q.Builds)
37	}
38	items := q.Builds.Items
39	if len(items) != 2 {
40		t.Fatalf("items: %+v", items)
41	}
42	if items[0].Number != running || items[0].Status != "running" || items[0].StartedAt == "" {
43		t.Fatalf("running row first: %+v", items[0])
44	}
45	if items[1].Number != pending || items[1].Status != "pending" || items[1].StartedAt != "" || items[1].CreatedAt == "" {
46		t.Fatalf("pending row after: %+v", items[1])
47	}
48}