Stop keepalived after the tests

Once the tests are done keepalived must be stopped. This is done to
prevent it from affecting other tests.
This commit is contained in:
Markus Mäkelä
2018-11-13 16:35:28 +02:00
parent 07231747bf
commit 54370618bc
4 changed files with 35 additions and 8 deletions

View File

@ -33,6 +33,11 @@ int main(int argc, char* argv[])
exit(0); exit(0);
} }
Test->on_destroy([&](){
Test->maxscales->ssh_node_f(0, true, "service keepalived stop");
Test->maxscales->ssh_node_f(1, true, "service keepalived stop");
});
Test->check_maxscale_alive(0); Test->check_maxscale_alive(0);
Test->check_maxscale_alive(1); Test->check_maxscale_alive(1);

View File

@ -23,19 +23,23 @@ int main(int argc, char* argv[])
TestConnections::multiple_maxscales(true); TestConnections::multiple_maxscales(true);
Mariadb_nodes::require_gtid(true); Mariadb_nodes::require_gtid(true);
TestConnections test(argc, argv); TestConnections test(argc, argv);
if (test.maxscales->N < 2)
{
test.tprintf("At least 2 Maxscales are needed for this test. Exiting");
exit(0);
}
test.on_destroy([&](){
test.maxscales->ssh_node_f(0, true, "service keepalived stop");
test.maxscales->ssh_node_f(1, true, "service keepalived stop");
});
test.repl->connect(); test.repl->connect();
delete_slave_binlogs(test); delete_slave_binlogs(test);
basic_test(test); basic_test(test);
print_gtids(test); print_gtids(test);
test.tprintf("Number of MaxScales: %d\n", test.maxscales->N);
test.expect(test.maxscales->N == 2,
"Two Maxscales are needed for this test, %i nodes was/were detected.", test.maxscales->N);
if (test.global_result != 0)
{
return test.global_result;
}
test.tprintf("Configuring 'keepalived'\n"); test.tprintf("Configuring 'keepalived'\n");
// Get test client IP, replace last number in it with 253 and use it as Virtual IP // Get test client IP, replace last number in it with 253 and use it as Virtual IP
configure_keepalived(&test, (char*) "masterdown"); configure_keepalived(&test, (char*) "masterdown");

View File

@ -366,6 +366,11 @@ TestConnections::TestConnections(int argc, char* argv[])
TestConnections::~TestConnections() TestConnections::~TestConnections()
{ {
for (auto& a : m_on_destroy)
{
a();
}
if (backend_ssl) if (backend_ssl)
{ {
repl->disable_ssl(); repl->disable_ssl();

View File

@ -11,6 +11,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include <thread> #include <thread>
#include <functional>
#include <maxbase/ccdefs.hh> #include <maxbase/ccdefs.hh>
@ -597,9 +598,21 @@ public:
*/ */
int get_master_server_id(int m = 0); int get_master_server_id(int m = 0);
/**
* Add a callback that is called when the test ends
*
* @param func Function to call
*/
void on_destroy(std::function<void (void)> func)
{
m_on_destroy.push_back(func);
}
private: private:
void report_result(const char* format, va_list argp); void report_result(const char* format, va_list argp);
void copy_one_mariadb_log(int i, std::string filename); void copy_one_mariadb_log(int i, std::string filename);
std::vector<std::function<void (void)>> m_on_destroy;
}; };
/** /**