void ServerTest::InitRunResetRunTerminateLeaderFollowerTest() {
	StartTrace(ServerTest.InitRunResetRunTerminateLeaderFollowerTest);
	TestCaseType::DoUnloadConfig();
	for (long i = 0; i < 3; i++) {
		TestCaseType::DoLoadConfig("ServerTest", "InitRunResetRunTerminateLeaderFollowerTest");
		Server *server = Server::FindServer("LeaderFollowerServer");
		if (t_assertm(server != NULL, "expected LeaderFollowerServer to be there")) {
			server = (Server *) server->ConfiguredClone("Server", "LeaderFollowerServerMaster", true);
			if (t_assertm(server != NULL, "expected server-clone to succeed")) {
				ServerThread mt(server);
				if (t_assert(mt.Start()) && t_assert(mt.CheckState(Thread::eRunning, 5))) {
					if (t_assertm(mt.serverIsInitialized(), "expected initialization to succeed")) {
						mt.SetWorking();
						if (t_assertm(mt.IsReady(true, 5), "expected server to become ready within 5 seconds")) {
							// --- run various request
							//     sequences
							RunTestSequence();
							if (t_assertm(server->GlobalReinit() == 0, "expected server to reinit ok")) {
								RunTestSequence();
							}
							mt.PrepareShutdown(0);
						}
					}
					if (t_assertm(mt.IsReady(false, 5), "expected server to become terminated within 5 seconds")) {
						mt.Terminate(10);
					}
				}
				mt.CheckState(Thread::eTerminated, 5);
				server->Finalize();
				delete server;
			}
		}
		TestCaseType::DoUnloadConfig();
	}
}
//=====================================================================================
void Frame::KillServer( void )
{
	Server* server = wxGetApp().GetServer();
	if( server )
	{
		server->Finalize();
		delete server;
		wxGetApp().SetServer(0);
	}
}