Test node operations on SGReplicateManager
(t *testing.T)
| 87 | |
| 88 | // Test node operations on SGReplicateManager |
| 89 | func TestReplicateManagerNodes(t *testing.T) { |
| 90 | |
| 91 | ctx := base.TestCtx(t) |
| 92 | testBucket := base.GetTestBucket(t) |
| 93 | defer testBucket.Close(ctx) |
| 94 | |
| 95 | testCfg, err := base.NewCfgSG(ctx, testBucket.GetSingleDataStore(), "") |
| 96 | require.NoError(t, err) |
| 97 | |
| 98 | manager, err := NewSGReplicateManager(ctx, &DatabaseContext{Name: "test"}, testCfg) |
| 99 | require.NoError(t, err) |
| 100 | defer manager.Stop() |
| 101 | |
| 102 | err = manager.registerNodeForHost("node1", "host1") |
| 103 | require.NoError(t, err) |
| 104 | |
| 105 | nodes, err := manager.getNodes() |
| 106 | require.NoError(t, err) |
| 107 | assert.Len(t, nodes, 1) |
| 108 | |
| 109 | err = manager.registerNodeForHost("node2", "host2") |
| 110 | require.NoError(t, err) |
| 111 | |
| 112 | nodes, err = manager.getNodes() |
| 113 | require.NoError(t, err) |
| 114 | assert.Len(t, nodes, 2) |
| 115 | |
| 116 | // re-adding an existing node is a no-op |
| 117 | err = manager.registerNodeForHost("node1", "host1") |
| 118 | require.NoError(t, err) |
| 119 | |
| 120 | nodes, err = manager.getNodes() |
| 121 | require.NoError(t, err) |
| 122 | assert.Len(t, nodes, 2) |
| 123 | |
| 124 | // Remove node |
| 125 | err = manager.RemoveNode("node1") |
| 126 | require.NoError(t, err) |
| 127 | |
| 128 | nodes, err = manager.getNodes() |
| 129 | require.NoError(t, err) |
| 130 | require.Len(t, nodes, 1) |
| 131 | node2, ok := nodes["node2"] |
| 132 | require.True(t, ok) |
| 133 | require.Equal(t, node2.UUID, "node2") |
| 134 | |
| 135 | // Removing an already removed node is a no-op |
| 136 | err = manager.RemoveNode("node1") |
| 137 | require.NoError(t, err) |
| 138 | |
| 139 | replications, err := manager.GetReplications() |
| 140 | require.NoError(t, err) |
| 141 | assert.Len(t, replications, 0) |
| 142 | } |
| 143 | |
| 144 | // Test concurrent node operations on SGReplicateManager |
| 145 | func TestReplicateManagerConcurrentNodeOperations(t *testing.T) { |
nothing calls this directly
no test coverage detected