@@ -1038,7 +1038,7 @@ TEST_F(Dba_common_test, get_unavailable_instances_001) {
1038
1038
EXPECT_TRUE (unavailable_instances_list.empty ());
1039
1039
} catch (const shcore::Exception &e) {
1040
1040
SCOPED_TRACE (e.what ());
1041
- SCOPED_TRACE (" Unexpected failure at get_instances_md " );
1041
+ SCOPED_TRACE (" Unexpected failure at get_unavailable_instances_001 " );
1042
1042
ADD_FAILURE ();
1043
1043
}
1044
1044
@@ -1109,7 +1109,7 @@ TEST_F(Dba_common_test, get_unavailable_instances_002) {
1109
1109
EXPECT_TRUE (unavailable_instances_list.empty ());
1110
1110
} catch (const shcore::Exception &e) {
1111
1111
SCOPED_TRACE (e.what ());
1112
- SCOPED_TRACE (" Unexpected failure at get_instances_md " );
1112
+ SCOPED_TRACE (" Unexpected failure at get_unavailable_instances_002 " );
1113
1113
ADD_FAILURE ();
1114
1114
}
1115
1115
@@ -1245,6 +1245,205 @@ TEST_F(Dba_common_test, validate_replicaset_group_name_002) {
1245
1245
stop_server_mock (_mysql_sandbox_nport1);
1246
1246
stop_server_mock (_mysql_sandbox_nport2);
1247
1247
}
1248
+
1249
+ TEST_F (Dba_common_test, validate_instance_rejoinable_01) {
1250
+ // There are missing instances and the instance we are checking belongs to
1251
+ // that list
1252
+
1253
+ // get_instances_gr():
1254
+ //
1255
+ // member_id
1256
+ // ------------------------------------
1257
+ // 851f0e89-5730-11e7-9e4f-b86b230042b9
1258
+ // 8a8ae9ce-5730-11e7-a437-b86b230042b9
1259
+
1260
+ std::vector<tests::Fake_result_data> queries;
1261
+
1262
+ std::vector<std::vector<std::string>> values;
1263
+ values = {{" 8fcb92c9-5730-11e7-aa60-b86b230042b9" },
1264
+ {" 851f0e89-5730-11e7-9e4f-b86b230042b9" }};
1265
+
1266
+ add_ps_gr_group_members_query (&queries, values);
1267
+
1268
+ // get_instances_md():
1269
+ //
1270
+ // member_id
1271
+ // ------------------------------------
1272
+ // 851f0e89-5730-11e7-9e4f-b86b230042b9
1273
+ // 8a8ae9ce-5730-11e7-a437-b86b230042b9
1274
+ // 8fcb92c9-5730-11e7-aa60-b86b230042b9
1275
+
1276
+ values = {{" 851f0e89-5730-11e7-9e4f-b86b230042b9" },
1277
+ {" 8a8ae9ce-5730-11e7-a437-b86b230042b9" },
1278
+ {" 8fcb92c9-5730-11e7-aa60-b86b230042b9" }};
1279
+
1280
+ add_md_group_members_query (&queries, values);
1281
+
1282
+ values = {{" 8a8ae9ce-5730-11e7-a437-b86b230042b9" , " localhost:3320" ,
1283
+ " localhost:3320" }};
1284
+
1285
+ add_md_group_members_full_query (
1286
+ &queries, " 8a8ae9ce-5730-11e7-a437-b86b230042b9" , values);
1287
+
1288
+ START_SERVER_MOCK (_mysql_sandbox_nport1, queries);
1289
+
1290
+ auto md_session = create_dev_session (_mysql_sandbox_nport1);
1291
+
1292
+ std::shared_ptr<mysqlsh::dba::MetadataStorage> metadata;
1293
+ metadata.reset (new mysqlsh::dba::MetadataStorage (md_session));
1294
+
1295
+ std::vector<tests::Fake_result_data> instance_queries;
1296
+ add_get_server_variable_query (&instance_queries, " server_uuid" ,
1297
+ tests::Type::String,
1298
+ " 8a8ae9ce-5730-11e7-a437-b86b230042b9" );
1299
+ START_SERVER_MOCK (_mysql_sandbox_nport2, instance_queries);
1300
+ auto instance_session = create_session (_mysql_sandbox_nport2);
1301
+ try {
1302
+ bool is_rejoinable (
1303
+ validate_instance_rejoinable (instance_session.get (), metadata, 1 ));
1304
+
1305
+ EXPECT_TRUE (is_rejoinable);
1306
+ } catch (const shcore::Exception &e) {
1307
+ SCOPED_TRACE (e.what ());
1308
+ SCOPED_TRACE (" Unexpected failure at validate_instance_rejoinable_01" );
1309
+ ADD_FAILURE ();
1310
+ }
1311
+
1312
+ md_session->close (shcore::Argument_list ());
1313
+ stop_server_mock (_mysql_sandbox_nport1);
1314
+ instance_session->close (shcore::Argument_list ());
1315
+ stop_server_mock (_mysql_sandbox_nport2);
1316
+ }
1317
+
1318
+ TEST_F (Dba_common_test, validate_instance_rejoinable_02) {
1319
+ // There are missing instances but the instance we are checking does not
1320
+ // belong to that list.
1321
+
1322
+ // get_instances_gr():
1323
+ //
1324
+ // member_id
1325
+ // ------------------------------------
1326
+ // 851f0e89-5730-11e7-9e4f-b86b230042b9
1327
+ // 8a8ae9ce-5730-11e7-a437-b86b230042b9
1328
+
1329
+ std::vector<tests::Fake_result_data> queries;
1330
+
1331
+ std::vector<std::vector<std::string>> values;
1332
+ values = {{" 8fcb92c9-5730-11e7-aa60-b86b230042b9" },
1333
+ {" 851f0e89-5730-11e7-9e4f-b86b230042b9" }};
1334
+
1335
+ add_ps_gr_group_members_query (&queries, values);
1336
+
1337
+ // get_instances_md():
1338
+ //
1339
+ // member_id
1340
+ // ------------------------------------
1341
+ // 851f0e89-5730-11e7-9e4f-b86b230042b9
1342
+ // 8a8ae9ce-5730-11e7-a437-b86b230042b9
1343
+ // 8fcb92c9-5730-11e7-aa60-b86b230042b9
1344
+
1345
+ values = {{" 851f0e89-5730-11e7-9e4f-b86b230042b9" },
1346
+ {" 8a8ae9ce-5730-11e7-a437-b86b230042b9" },
1347
+ {" 8fcb92c9-5730-11e7-aa60-b86b230042b9" }};
1348
+
1349
+ add_md_group_members_query (&queries, values);
1350
+
1351
+ values = {{" 8a8ae9ce-5730-11e7-a437-b86b230042b9" , " localhost:3320" ,
1352
+ " localhost:3320" }};
1353
+
1354
+ add_md_group_members_full_query (
1355
+ &queries, " 8a8ae9ce-5730-11e7-a437-b86b230042b9" , values);
1356
+
1357
+ START_SERVER_MOCK (_mysql_sandbox_nport1, queries);
1358
+
1359
+ auto md_session = create_dev_session (_mysql_sandbox_nport1);
1360
+
1361
+ std::shared_ptr<mysqlsh::dba::MetadataStorage> metadata;
1362
+ metadata.reset (new mysqlsh::dba::MetadataStorage (md_session));
1363
+
1364
+ std::vector<tests::Fake_result_data> instance_queries;
1365
+ add_get_server_variable_query (&instance_queries, " server_uuid" ,
1366
+ tests::Type::String,
1367
+ " 8a8ae9ce-5730-11e7-a437-b86b230042b1" );
1368
+ START_SERVER_MOCK (_mysql_sandbox_nport2, instance_queries);
1369
+ auto instance_session = create_session (_mysql_sandbox_nport2);
1370
+ try {
1371
+ bool is_rejoinable (
1372
+ validate_instance_rejoinable (instance_session.get (), metadata, 1 ));
1373
+
1374
+ EXPECT_FALSE (is_rejoinable);
1375
+ } catch (const shcore::Exception &e) {
1376
+ SCOPED_TRACE (e.what ());
1377
+ SCOPED_TRACE (" Unexpected failure at validate_instance_rejoinable_02" );
1378
+ ADD_FAILURE ();
1379
+ }
1380
+
1381
+ md_session->close (shcore::Argument_list ());
1382
+ stop_server_mock (_mysql_sandbox_nport1);
1383
+ instance_session->close (shcore::Argument_list ());
1384
+ stop_server_mock (_mysql_sandbox_nport2);
1385
+ }
1386
+
1387
+ TEST_F (Dba_common_test, validate_instance_rejoinable_03) {
1388
+ // There are no missing instances
1389
+
1390
+ // get_instances_gr():
1391
+ //
1392
+ // member_id
1393
+ // ------------------------------------
1394
+ // 851f0e89-5730-11e7-9e4f-b86b230042b9
1395
+ // 8a8ae9ce-5730-11e7-a437-b86b230042b9
1396
+ // 8fcb92c9-5730-11e7-aa60-b86b230042b9
1397
+
1398
+ std::vector<tests::Fake_result_data> queries;
1399
+
1400
+ std::vector<std::vector<std::string>> values;
1401
+ values = {{" 851f0e89-5730-11e7-9e4f-b86b230042b9" },
1402
+ {" 8a8ae9ce-5730-11e7-a437-b86b230042b9" },
1403
+ {" 8fcb92c9-5730-11e7-aa60-b86b230042b9" }};
1404
+
1405
+ add_ps_gr_group_members_query (&queries, values);
1406
+
1407
+ // get_instances_md():
1408
+ //
1409
+ // member_id
1410
+ // ------------------------------------
1411
+ // 851f0e89-5730-11e7-9e4f-b86b230042b9
1412
+ // 8a8ae9ce-5730-11e7-a437-b86b230042b9
1413
+ // 8fcb92c9-5730-11e7-aa60-b86b230042b9
1414
+
1415
+ add_md_group_members_query (&queries, values);
1416
+
1417
+ START_SERVER_MOCK (_mysql_sandbox_nport1, queries);
1418
+
1419
+ auto md_session = create_dev_session (_mysql_sandbox_nport1);
1420
+
1421
+ std::shared_ptr<mysqlsh::dba::MetadataStorage> metadata;
1422
+ metadata.reset (new mysqlsh::dba::MetadataStorage (md_session));
1423
+
1424
+ std::vector<tests::Fake_result_data> instance_queries;
1425
+ add_get_server_variable_query (&instance_queries, " server_uuid" ,
1426
+ tests::Type::String,
1427
+ " 8a8ae9ce-5730-11e7-a437-b86b230042b9" );
1428
+ START_SERVER_MOCK (_mysql_sandbox_nport2, instance_queries);
1429
+ auto instance_session = create_session (_mysql_sandbox_nport2);
1430
+ try {
1431
+ bool is_rejoinable (
1432
+ validate_instance_rejoinable (instance_session.get (), metadata, 1 ));
1433
+
1434
+ EXPECT_FALSE (is_rejoinable);
1435
+ } catch (const shcore::Exception &e) {
1436
+ SCOPED_TRACE (e.what ());
1437
+ SCOPED_TRACE (" Unexpected failure at validate_instance_rejoinable_03" );
1438
+ ADD_FAILURE ();
1439
+ }
1440
+
1441
+ md_session->close (shcore::Argument_list ());
1442
+ stop_server_mock (_mysql_sandbox_nport1);
1443
+ instance_session->close (shcore::Argument_list ());
1444
+ stop_server_mock (_mysql_sandbox_nport2);
1445
+ }
1446
+
1248
1447
} // namespace tests
1249
1448
1250
1449
TEST (mod_dba_common, validate_label) {
0 commit comments