(t *testing.T)
| 30 | ) |
| 31 | |
| 32 | func 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 |
nothing calls this directly
no test coverage detected