github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/tests/operation_remove_cluster_node_test.go (about) 1 package tests 2 3 import ( 4 "github.com/ravendb/ravendb-go-client/serverwide/operations" 5 "github.com/stretchr/testify/assert" 6 "os" 7 "testing" 8 "time" 9 ) 10 11 func removeNodeFromClusterTest(t *testing.T, driver *RavenTestDriver) { 12 if os.Getenv("RAVEN_License") == "" { 13 t.Skip("This test requires RavenDB license.") 14 } 15 var err error 16 store := driver.getDocumentStoreMust(t) 17 defer store.Close() 18 assert.NoError(t, err) 19 20 driver2 := createTestDriver(t) 21 store2, err := driver2.createMainStore() 22 defer store2.Close() 23 assert.NoError(t, err) 24 25 destroy := func() { destroyDriver(t, driver) } 26 defer recoverTest(t, destroy) 27 28 operationAddNodeToCluster := operations.OperationAddClusterNode{ 29 Url: store2.GetUrls()[0], 30 Tag: "B", 31 Watcher: false, 32 } 33 err = store.Maintenance().Server().Send(&operationAddNodeToCluster) 34 assert.NoError(t, err) 35 36 time.Sleep(time.Second * 5) // wait for topology to be updated 37 operation := operations.OperationGetClusterTopology{} 38 err = store.Maintenance().Server().Send(&operation) 39 assert.NoError(t, err) 40 assert.NotEmpty(t, operation.Leader) 41 assert.NotEmpty(t, operation.NodeTag) 42 43 topology := operation.Topology 44 assert.NotNil(t, topology) 45 assert.NotEmpty(t, topology.TopologyID) 46 assert.Equal(t, 2, len(topology.Members)) 47 assert.Equal(t, 0, len(topology.Watchers)) 48 assert.Equal(t, 0, len(topology.Promotables)) 49 50 operationRemoveNode := operations.RemoveClusterNode{ 51 Node: store2.GetUrls()[0], 52 Tag: "B", 53 } 54 err = store.Maintenance().Server().Send(&operationRemoveNode) 55 assert.NoError(t, err) 56 57 time.Sleep(time.Second * 5) // wait for topology to be updated 58 operation = operations.OperationGetClusterTopology{} 59 err = store.Maintenance().Server().Send(&operation) 60 assert.NoError(t, err) 61 assert.NotEmpty(t, operation.Leader) 62 assert.NotEmpty(t, operation.NodeTag) 63 64 topology = operation.Topology 65 assert.NotNil(t, topology) 66 assert.NotEmpty(t, topology.TopologyID) 67 assert.Equal(t, 1, len(topology.Members)) 68 assert.Equal(t, 0, len(topology.Watchers)) 69 assert.Equal(t, 0, len(topology.Promotables)) 70 } 71 72 func TestRemoveNodeFromCluster(t *testing.T) { 73 driver := createTestDriver(t) 74 75 destroy := func() { destroyDriver(t, driver) } 76 defer recoverTest(t, destroy) 77 78 removeNodeFromClusterTest(t, driver) 79 }