53 lines
1.9 KiB
Go
53 lines
1.9 KiB
Go
package spool
|
|
|
|
import (
|
|
"context"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
rvboxv1 "github.com/rvbox/rvbox/gen/go/rvbox/v1"
|
|
)
|
|
|
|
func TestReconcileSnapshotRetainedAndTombstoned_HP_SES_09(t *testing.T) {
|
|
t.Parallel()
|
|
ctx := context.Background()
|
|
store := openTestStore(t, ctx, filepath.Join(t.TempDir(), "spool"), DefaultTombstoneLimit)
|
|
issue := testUUID(t, "019c46f1-1d02-7000-8000-000000000081")
|
|
command := testCommand(issue, []byte("reconcile"))
|
|
if _, err := store.AcceptCommand(ctx, command, time.Now().UTC()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := store.AppendEvent(ctx, issue, EventInput{Kind: 3, Compression: 1, Payload: []byte("running"), CreatedAt: time.Now().UTC()}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := store.AssignSendWindow(ctx, issue, 1, 1<<20); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
snapshot, err := store.ReconcileSnapshot(ctx)
|
|
if err != nil || len(snapshot.RetainedCommands) != 1 {
|
|
t.Fatalf("retained snapshot = %#v, %v", snapshot, err)
|
|
}
|
|
retained := snapshot.RetainedCommands[0]
|
|
if retained.GetIssueUuid() != issue.String() || retained.GetLastClientEventSeq() != 1 || retained.GetTombstoned() || retained.GetLifecycle() != rvboxv1.CommandLifecycle_COMMAND_QUEUED {
|
|
t.Fatalf("retained command = %#v", retained)
|
|
}
|
|
if err := store.Ack(ctx, issue, 1); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := store.MarkTerminal(ctx, issue, uint32(rvboxv1.CommandLifecycle_COMMAND_SUCCEEDED)); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := store.CleanupTerminal(ctx, issue, time.Now().UTC()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
snapshot, err = store.ReconcileSnapshot(ctx)
|
|
if err != nil || len(snapshot.RetainedCommands) != 1 {
|
|
t.Fatalf("tombstone snapshot = %#v, %v", snapshot, err)
|
|
}
|
|
tombstone := snapshot.RetainedCommands[0]
|
|
if !tombstone.GetTombstoned() || tombstone.GetLifecycle() != rvboxv1.CommandLifecycle_COMMAND_SUCCEEDED || tombstone.GetCommandRevision() != 1 || tombstone.GetLastClientEventSeq() != 0 {
|
|
t.Fatalf("tombstone command = %#v", tombstone)
|
|
}
|
|
}
|