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  }