carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

1package dbreads
2
3import (
4 "bytes"
5 "strings"
6 "testing"
7 "time"
8)
9
10func TestIDsAreDbrAnd26Base32(t *testing.T) {
11 t.Parallel()
12 id, err := NewID(bytes.NewReader(make([]byte, 16)))
13 if err != nil || id != "dbr_aaaaaaaaaaaaaaaaaaaaaaaaaa" || !ValidID(id) {
14 t.Fatalf("NewID = %q, %v", id, err)
15 }
16 minted, err := MintID()
17 if err != nil || !ValidID(minted) {
18 t.Fatalf("MintID = %q, %v", minted, err)
19 }
20 for _, bad := range []string{"", "run_aaaaaaaaaaaaaaaaaaaaaaaaaa", "dbr_AAAAAAAAAAAAAAAAAAAAAAAAAA", "dbr_aaaa", "queue", "dbr_aaaaaaaaaaaaaaaaaaaaaaaaa/"} {
21 if ValidID(bad) {
22 t.Errorf("ValidID(%q) = true", bad)
23 }
24 }
25}
26
27func TestKeysLiveUnderOnePrefix(t *testing.T) {
28 t.Parallel()
29 id := "dbr_aaaaaaaaaaaaaaaaaaaaaaaaaa"
30 for _, k := range []string{RequestKey(id), PickedKey(id), ChunkKey(id, 1), ResultKey(id), CancelKey(id),
31 QueueKey("uk", time.Date(2026, 10, 22, 9, 0, 5, 0, time.UTC), id)} {
32 if !strings.HasPrefix(k, "db-reads/") {
33 t.Errorf("%s is outside db-reads/", k)
34 }
35 }
36 if got := ChunkKey(id, 12); got != "db-reads/"+id+"/out/00000012" {
37 t.Fatalf("ChunkKey = %s", got)
38 }
39 if seq, ok := ParseChunkKey(ChunkKey(id, 12), OutPrefix(id)); !ok || seq != 12 {
40 t.Fatalf("ParseChunkKey = %d %v", seq, ok)
41 }
42 for _, bad := range []string{OutPrefix(id) + "0000001", OutPrefix(id) + "-0000001", OutPrefix(id) + "00000000", OutPrefix(id) + "0000001x"} {
43 if _, ok := ParseChunkKey(bad, OutPrefix(id)); ok {
44 t.Errorf("ParseChunkKey(%q) accepted", bad)
45 }
46 }
47}
48
49func TestQueueKeyRoundTrips(t *testing.T) {
50 t.Parallel()
51 id := "dbr_bbbbbbbbbbbbbbbbbbbbbbbbbb"
52 issued := time.Date(2026, 10, 22, 10, 59, 50, 0, time.UTC)
53 key := QueueKey("uk", issued, id)
54 if key != "db-reads/queue/uk/2026102210/1792666790-"+id {
55 t.Fatalf("QueueKey = %s", key)
56 }
57 e, ok := ParseQueueKey(key)
58 if !ok || e.Region != "uk" || e.Hour != "2026102210" || !e.Issued.Equal(issued) || e.ID != id {
59 t.Fatalf("ParseQueueKey = %+v %v", e, ok)
60 }
61 for _, bad := range []string{
62 "db-reads/queue/uk/2026102210/x-" + id,
63 "db-reads/queue/uk/20261022/1792666790-" + id,
64 "db-reads/queue/../2026102210/1792666790-" + id,
65 "db-reads/queue/uk/2026102210/01792666790-" + id,
66 "db-reads/queue/uk/2026102210/1792666790-run_bbbbbbbbbbbbbbbbbbbbbbbbbb",
67 } {
68 if _, ok := ParseQueueKey(bad); ok {
69 t.Errorf("ParseQueueKey(%q) accepted", bad)
70 }
71 }
72}
73
74func TestInWindowIs60sPlus60sOfSkew(t *testing.T) {
75 t.Parallel()
76 now := time.Date(2026, 10, 22, 9, 0, 0, 0, time.UTC)
77 for _, c := range []struct {
78 issued time.Time
79 want bool
80 }{
81 {now, true},
82 {now.Add(-120 * time.Second), true},
83 {now.Add(-121 * time.Second), false},
84 {now.Add(60 * time.Second), true},
85 {now.Add(61 * time.Second), false},
86 } {
87 if got := InWindow(c.issued, now); got != c.want {
88 t.Errorf("InWindow(%s) = %v", c.issued.Sub(now), got)
89 }
90 }
91}
92