mirror of
https://github.com/psviderski/uncloud.git
synced 2026-10-06 13:18:58 +00:00
refactor(store): unify logic and enhance logging for initial store sync (waitStoreSync)
This commit is contained in:
1 parent
0f6c03240b
commit
842f796e38
3 files changed
+102
-131
No files matched your search
@@ -349,6 +349,59 @@ func TestClusterLifecycle(t *testing.T) {
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("wait for store version edge cases", func(t *testing.T) {
|
||||
ctx, cancel := context.WithTimeout(ctx, 15*time.Second)
|
||||
defer cancel()
|
||||
|
||||
cli, err := c.Machines[0].Connect(ctx)
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() {
|
||||
require.NoError(t, cli.Close())
|
||||
})
|
||||
|
||||
t.Run("empty vector", func(t *testing.T) {
|
||||
_, err := cli.WaitForStoreVersion(ctx, &pb.WaitForStoreVersionRequest{})
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("zero version for unknown actor", func(t *testing.T) {
|
||||
_, err := cli.WaitForStoreVersion(ctx, &pb.WaitForStoreVersionRequest{
|
||||
MinVersion: map[string]uint64{uuid.NewString(): 0},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("invalid actor UUID", func(t *testing.T) {
|
||||
_, err := cli.WaitForStoreVersion(ctx, &pb.WaitForStoreVersionRequest{
|
||||
MinVersion: map[string]uint64{"not-a-uuid": 1},
|
||||
})
|
||||
require.Equal(t, codes.InvalidArgument, status.Code(err))
|
||||
})
|
||||
|
||||
t.Run("unknown actor times out", func(t *testing.T) {
|
||||
waitCtx, cancel := context.WithTimeout(ctx, 500*time.Millisecond)
|
||||
defer cancel()
|
||||
|
||||
// Background writes cannot satisfy a target for an actor that does not exist.
|
||||
_, err := cli.WaitForStoreVersion(waitCtx, &pb.WaitForStoreVersionRequest{
|
||||
MinVersion: map[string]uint64{uuid.NewString(): 1},
|
||||
})
|
||||
require.Equal(t, codes.DeadlineExceeded, status.Code(err))
|
||||
})
|
||||
|
||||
t.Run("cancel pending wait", func(t *testing.T) {
|
||||
waitCtx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
timer := time.AfterFunc(500*time.Millisecond, cancel)
|
||||
defer timer.Stop()
|
||||
|
||||
_, err := cli.WaitForStoreVersion(waitCtx, &pb.WaitForStoreVersionRequest{
|
||||
MinVersion: map[string]uint64{uuid.NewString(): 1},
|
||||
})
|
||||
require.Equal(t, codes.Canceled, status.Code(err))
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("remove", func(t *testing.T) {
|
||||
err := p.RemoveCluster(ctx, name)
|
||||
require.NoError(t, err)
|
||||
|
||||
Reference in new issue
Block a user