carlos / platform Public

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

Plain git — no account needed to clone.

Download

Download this file

1package lease
2
3import (
4 "context"
5 "errors"
6 "testing"
7
8 "github.com/superfly/ltx"
9)
10
11type fakeLister struct {
12 levels map[int][]*ltx.FileInfo
13 err error
14 asked []int
15}
16
17func (f *fakeLister) LTXFiles(_ context.Context, level int, _ ltx.TXID, _ bool) (ltx.FileIterator, error) {
18 f.asked = append(f.asked, level)
19 if f.err != nil {
20 return nil, f.err
21 }
22 return ltx.NewFileInfoSliceIterator(f.levels[level]), nil
23}
24
25func TestHasReplicaIn(t *testing.T) {
26 ctx := context.Background()
27 empty := &fakeLister{}
28 if has, err := hasReplicaIn(ctx, empty); has || err != nil {
29 t.Fatalf("empty = %v, %v", has, err)
30 }
31 if len(empty.asked) != 10 {
32 t.Fatalf("levels asked = %v, want 0 to 9", empty.asked)
33 }
34 snap := &fakeLister{levels: map[int][]*ltx.FileInfo{9: {{Level: 9, MinTXID: 1, MaxTXID: 7, Size: 4096}}}}
35 if has, err := hasReplicaIn(ctx, snap); !has || err != nil {
36 t.Fatalf("a snapshot at level 9 = %v, %v", has, err)
37 }
38 broken := &fakeLister{err: errors.New("listing failed")}
39 if has, err := hasReplicaIn(ctx, broken); has || err == nil {
40 t.Fatalf("a failed listing = %v, %v; want an error, never false", has, err)
41 }
42}
43