Repository navigation
Expand file tree
/
Copy pathepoch_commit_test.go
More file actions
50 lines (47 loc) · 1.88 KB
/
Copy pathepoch_commit_test.go
File metadata and controls
50 lines (47 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package filament_test
import (
"errors"
"testing"
"github.com/galaxy-io/filament"
"github.com/galaxy-io/filament/internal/streamproof"
"github.com/galaxy-io/filament/streamkit"
)
func TestEpochCommitValidatesCompletion(t *testing.T) {
ref := filament.EpochRef{Attempt: filament.AttemptRef{RunID: "run", ExecutionID: "worker", StreamID: "stream", Generation: 1, Token: 1}, Epoch: 1, MembershipRevision: 1}
domain := filament.DomainKey{Domain: "log", Incarnation: "source"}
positions := filament.DomainPositions{domain: {Codec: "opaque", Version: 0, Value: []byte("10")}}
codecs := &streamkit.Registry{}
if err := codecs.Register("opaque", 0, streamkit.OpaqueCodec{}); err != nil {
t.Fatal(err)
}
for _, name := range []string{"valid", "missing", "wrong epoch", "expanded coverage", "wrong totals", "wrong resource"} {
t.Run(name, func(t *testing.T) {
req := filament.EpochCommit{
Certificate: filament.EpochCertificate{Ref: ref, Coverage: filament.Coverage{Positions: positions.Clone()}, Records: 1, Bytes: 2, Receipts: []filament.EpochReceipt{{Resource: "events", Rows: 1, Bytes: 2}}},
Completion: streamproof.New(ref.Binding(), positions, 1, 2, map[string]streamproof.ResourceTotals{"events": {Rows: 1, Bytes: 2}}),
}
switch name {
case "missing":
req.Completion = filament.EpochCompletion{}
case "wrong epoch":
req.Certificate.Ref.Epoch++
case "expanded coverage":
req.Certificate.Coverage.Positions[domain] = filament.Position{Codec: "opaque", Version: 0, Value: []byte("11")}
case "wrong totals":
req.Certificate.Records++
case "wrong resource":
req.Certificate.Receipts[0].Resource = "other"
}
err := req.ValidateCompletion(codecs)
if name == "valid" {
if err != nil {
t.Fatal(err)
}
return
}
if !errors.Is(err, filament.ErrIncompleteCoverage) {
t.Fatalf("expected incomplete coverage, got %v", err)
}
})
}
}