vitess.io/vitess@v0.16.2/go/vt/wrangler/external_cluster_test.go (about) 1 package wrangler 2 3 import ( 4 "context" 5 "testing" 6 7 "vitess.io/vitess/go/test/utils" 8 9 "github.com/stretchr/testify/require" 10 11 "vitess.io/vitess/go/vt/logutil" 12 "vitess.io/vitess/go/vt/proto/topodata" 13 "vitess.io/vitess/go/vt/topo/memorytopo" 14 ) 15 16 func TestVitessCluster(t *testing.T) { 17 ctx := context.Background() 18 ts := memorytopo.NewServer("zone1") 19 tmc := newTestWranglerTMClient() 20 wr := New(logutil.NewConsoleLogger(), ts, tmc) 21 name, topoType, topoServer, topoRoot := "c1", "x", "y", "z" 22 23 t.Run("Zero clusters to start", func(t *testing.T) { 24 clusters, err := ts.GetExternalVitessClusters(ctx) 25 require.NoError(t, err) 26 require.Equal(t, 0, len(clusters)) 27 }) 28 t.Run("Mount first cluster", func(t *testing.T) { 29 err := wr.MountExternalVitessCluster(ctx, name, topoType, topoServer, topoRoot) 30 require.NoError(t, err) 31 vci, err := ts.GetExternalVitessCluster(ctx, name) 32 require.NoError(t, err) 33 require.Equal(t, vci.ClusterName, name) 34 expectedVc := &topodata.ExternalVitessCluster{ 35 TopoConfig: &topodata.TopoConfig{ 36 TopoType: topoType, 37 Server: topoServer, 38 Root: topoRoot, 39 }, 40 } 41 utils.MustMatch(t, expectedVc, vci.ExternalVitessCluster) 42 }) 43 44 t.Run("Mount second cluster", func(t *testing.T) { 45 name2 := "c2" 46 err := wr.MountExternalVitessCluster(ctx, name2, topoType, topoServer, topoRoot) 47 require.NoError(t, err) 48 }) 49 50 t.Run("List clusters should return c1,c2", func(t *testing.T) { 51 clusters, err := ts.GetExternalVitessClusters(ctx) 52 require.NoError(t, err) 53 require.Equal(t, 2, len(clusters)) 54 require.EqualValues(t, []string{"c1", "c2"}, clusters) 55 }) 56 t.Run("Unmount first cluster", func(t *testing.T) { 57 err := wr.UnmountExternalVitessCluster(ctx, name) 58 require.NoError(t, err) 59 vci, err := ts.GetExternalVitessCluster(ctx, name) 60 require.NoError(t, err) 61 require.Nil(t, vci) 62 }) 63 t.Run("List clusters should return c2", func(t *testing.T) { 64 clusters, err := ts.GetExternalVitessClusters(ctx) 65 require.NoError(t, err) 66 require.Equal(t, 1, len(clusters)) 67 require.EqualValues(t, []string{"c2"}, clusters) 68 }) 69 }