feat: sync multilayer td integration
This commit is contained in:
parent
20a310f6ca
commit
766c5db992
491 changed files with 26235 additions and 35340 deletions
65
internal/store/memory/update_state_delivery_test.go
Normal file
65
internal/store/memory/update_state_delivery_test.go
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
package memory
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"telesrv/internal/domain"
|
||||
)
|
||||
|
||||
func TestUpdateStateDeliveredCommitSeparatesConfirmedAndObserved(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
store := NewUpdateStateStore()
|
||||
authKeyID := [8]byte{1}
|
||||
const userID int64 = 1001
|
||||
if err := store.ObserveClientState(ctx, authKeyID, userID, domain.UpdateState{Pts: 2, Date: 20}); err != nil {
|
||||
t.Fatalf("observe request: %v", err)
|
||||
}
|
||||
if _, found, err := store.Get(ctx, authKeyID, userID); err != nil || found {
|
||||
t.Fatalf("observed request fabricated confirmed state: found=%v err=%v", found, err)
|
||||
}
|
||||
if err := store.CommitDeliveredState(ctx, authKeyID, userID, domain.UpdateState{Pts: 5, Date: 50}, domain.UpdateStateCommitDeliveredOnly); err != nil {
|
||||
t.Fatalf("commit delivered: %v", err)
|
||||
}
|
||||
confirmed, found, err := store.Get(ctx, authKeyID, userID)
|
||||
if err != nil || !found || confirmed.Pts != 5 {
|
||||
t.Fatalf("confirmed = %+v/%v err=%v, want pts=5", confirmed, found, err)
|
||||
}
|
||||
observed, found := store.ObservedClientState(authKeyID, userID)
|
||||
if !found || observed.Pts != 2 {
|
||||
t.Fatalf("observed = %+v/%v, want pts=2", observed, found)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateStateBaselineCommitIsAtomicAndMonotonic(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
store := NewUpdateStateStore()
|
||||
authKeyID := [8]byte{2}
|
||||
const userID int64 = 1002
|
||||
if err := store.CommitDeliveredState(ctx, authKeyID, userID, domain.UpdateState{Pts: 8, Date: 80}, domain.UpdateStateCommitDeliveredAndObservedBaseline); err != nil {
|
||||
t.Fatalf("commit baseline: %v", err)
|
||||
}
|
||||
if err := store.CommitDeliveredState(ctx, authKeyID, userID, domain.UpdateState{Pts: 3, Date: 30}, domain.UpdateStateCommitDeliveredAndObservedBaseline); err != nil {
|
||||
t.Fatalf("commit stale baseline: %v", err)
|
||||
}
|
||||
confirmed, _, _ := store.Get(ctx, authKeyID, userID)
|
||||
observed, _ := store.ObservedClientState(authKeyID, userID)
|
||||
if confirmed.Pts != 8 || observed.Pts != 8 {
|
||||
t.Fatalf("out-of-order baseline regressed state: confirmed=%+v observed=%+v", confirmed, observed)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateStateDeleteAuthKeyRemovesObservedOnlyRows(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
store := NewUpdateStateStore()
|
||||
authKeyID := [8]byte{3}
|
||||
if err := store.ObserveClientState(ctx, authKeyID, 1003, domain.UpdateState{Pts: 4}); err != nil {
|
||||
t.Fatalf("observe: %v", err)
|
||||
}
|
||||
if err := store.DeleteAuthKey(ctx, authKeyID); err != nil {
|
||||
t.Fatalf("delete auth key: %v", err)
|
||||
}
|
||||
if _, found := store.ObservedClientState(authKeyID, 1003); found {
|
||||
t.Fatal("observed-only row survived auth-key deletion")
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue