MCPcopy Create free account
hub / github.com/apache/kvrocks-controller / TestClusterStore

Function TestClusterStore

store/store_test.go:32–107  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

30)
31
32func TestClusterStore(t *testing.T) {
33 ctx := context.Background()
34 store := NewClusterStore(engine.NewMock())
35
36 t.Run("create/get/list/delete namespace", func(t *testing.T) {
37 namespaces := []string{"ns0", "ns1", "ns2"}
38 for _, ns := range namespaces {
39 err := store.CreateNamespace(ctx, ns)
40 require.NoError(t, err)
41 require.ErrorIs(t, store.CreateNamespace(ctx, ns), consts.ErrAlreadyExists)
42 exists, err := store.ExistsNamespace(ctx, ns)
43 require.NoError(t, err)
44 require.True(t, exists)
45 }
46
47 exists, err := store.ExistsNamespace(ctx, "not-exits-ns")
48 require.NoError(t, err)
49 require.False(t, exists)
50
51 gotNamespaces, err := store.ListNamespace(ctx)
52 require.NoError(t, err)
53 require.ElementsMatch(t, namespaces, gotNamespaces)
54
55 for _, ns := range namespaces {
56 err := store.RemoveNamespace(ctx, ns)
57 require.NoError(t, err)
58 exists, err := store.ExistsNamespace(ctx, ns)
59 require.NoError(t, err)
60 require.False(t, exists)
61 }
62 })
63
64 t.Run("create/get/list/delete cluster", func(t *testing.T) {
65 ns := "ns0"
66 cluster0 := &Cluster{Name: "cluster0", Shards: Shards{NewShard()}}
67 cluster1 := &Cluster{Name: "cluster1", Shards: Shards{NewShard()}}
68 cluster0.Version.Store(2)
69 cluster1.Version.Store(3)
70
71 require.NoError(t, store.CreateCluster(ctx, ns, cluster0))
72 require.ErrorIs(t, store.CreateCluster(ctx, ns, cluster0), consts.ErrAlreadyExists)
73 require.NoError(t, store.CreateCluster(ctx, ns, cluster1))
74
75 gotCluster, err := store.GetCluster(ctx, ns, "cluster0")
76 require.NoError(t, err)
77 require.Equal(t, cluster0.Name, gotCluster.Name)
78 require.Equal(t, cluster0.Version.Load(), gotCluster.Version.Load())
79
80 gotClusters, err := store.ListCluster(ctx, ns)
81 require.NoError(t, err)
82 require.ElementsMatch(t, []string{"cluster0", "cluster1"}, gotClusters)
83
84 require.NoError(t, store.UpdateCluster(ctx, ns, cluster0))
85 gotCluster, err = store.GetCluster(ctx, ns, "cluster0")
86 require.NoError(t, err)
87 require.Equal(t, cluster0.Name, gotCluster.Name)
88 require.EqualValues(t, 3, gotCluster.Version.Load())
89

Callers

nothing calls this directly

Calls 15

CreateNamespaceMethod · 0.95
ExistsNamespaceMethod · 0.95
ListNamespaceMethod · 0.95
RemoveNamespaceMethod · 0.95
CreateClusterMethod · 0.95
GetClusterMethod · 0.95
ListClusterMethod · 0.95
UpdateClusterMethod · 0.95
RemoveClusterMethod · 0.95
CheckNewNodesMethod · 0.95
NewMockFunction · 0.92
NewClusterStoreFunction · 0.85

Tested by

no test coverage detected