@Test public void testStartBackupFirst() throws Exception { for (TestableServer backupServer : backupServers) { backupServer.start(); } for (TestableServer liveServer : liveServers) { liveServer.start(); } waitForTopology(liveServers.get(0).getServer(), liveServers.size(), liveServers.size()); sendCrashReceive(); }
protected final void adaptLiveConfigForReplicatedFailBack(TestableServer server) { Configuration configuration = server.getServer().getConfiguration(); final TransportConfiguration backupConnector = getConnectorTransportConfiguration(false); if (server.getServer().getHAPolicy().isSharedStore()) { ClusterConnectionConfiguration cc = configuration.getClusterConfigurations().get(0); Assert.assertNotNull("cluster connection configuration", cc); Assert.assertNotNull("static connectors", cc.getStaticConnectors()); cc.getStaticConnectors().add(backupConnector.getName()); // backupConnector is only necessary for fail-back tests configuration.getConnectorConfigurations().put(backupConnector.getName(), backupConnector); return; } ReplicatedPolicy haPolicy = (ReplicatedPolicy) server.getServer().getHAPolicy(); haPolicy.setCheckForLiveServer(true); }
public void run() { try { server.start(); } catch (Exception e) { e.printStackTrace(); } }
@Override @Before public void setUp() throws Exception { super.setUp(); createConfigs(); setLiveIdentity(); liveServer.start(); waitForServerToStart(liveServer.getServer()); if (backupServer != null) { setBackupIdentity(); if (startBackupServer) { backupServer.start(); waitForBackup(); } } }
/** * Waits for backup to be in the "started" state and to finish synchronization with its live. * * @param sessionFactory * @param seconds * @throws Exception */ protected void waitForBackup(ClientSessionFactoryInternal sessionFactory, int seconds) throws Exception { final ActiveMQServerImpl actualServer = (ActiveMQServerImpl) backupServer.getServer(); if (actualServer.getHAPolicy().isSharedStore()) { waitForServerToStart(actualServer); } else { waitForRemoteBackup(sessionFactory, seconds, true, actualServer); } }
protected void sendCrashReceive() throws Exception { ServerLocator[] locators = new ServerLocator[liveServers.size()]; try { for (int i = 0; i < locators.length; i++) { locators[i] = getServerLocator(i); } ClientSessionFactory[] factories = new ClientSessionFactory[liveServers.size()]; for (int i = 0; i < factories.length; i++) { factories[i] = createSessionFactory(locators[i]); } ClientSession[] sessions = new ClientSession[liveServers.size()]; for (int i = 0; i < factories.length; i++) { sessions[i] = createSession(factories[i], true, true); sessions[i].createQueue(ADDRESS, ADDRESS, null, true); } // make sure bindings are ready before sending messages for (int i = 0; i < liveServers.size(); i++) { this.waitForBindings(liveServers.get(i).getServer(), ADDRESS.toString(), true, 1, 0, 2000); this.waitForBindings(liveServers.get(i).getServer(), ADDRESS.toString(), false, 1, 0, 2000); } ClientProducer producer = sessions[0].createProducer(ADDRESS); for (int i = 0; i < liveServers.size() * 100; i++) { ClientMessage message = sessions[0].createMessage(true); setBody(i, message); message.putIntProperty("counter", i); producer.send(message); } producer.close(); for (TestableServer liveServer : liveServers) { waitForDistribution(ADDRESS, liveServer.getServer(), 100); } for (TestableServer liveServer : liveServers) { liveServer.crash(); } ClientConsumer[] consumers = new ClientConsumer[liveServers.size()]; for (int i = 0; i < factories.length; i++) { consumers[i] = sessions[i].createConsumer(ADDRESS); sessions[i].start(); } for (int i = 0; i < 100; i++) { for (ClientConsumer consumer : consumers) { ClientMessage message = consumer.receive(1000); assertNotNull("expecting durable msg " + i, message); message.acknowledge(); } } } finally { for (ServerLocator locator : locators) { if (locator != null) { try { locator.close(); } catch (Exception e) { // ignore } } } } }
protected void crash(final boolean waitFailure, final ClientSession... sessions) throws Exception { liveServer.crash(waitFailure, sessions); }
protected void crash(final ClientSession... sessions) throws Exception { liveServer.crash(sessions); }
protected void setLiveIdentity() { liveServer.setIdentity(this.getClass().getSimpleName() + "/liveServer"); }
protected void setBackupIdentity() { backupServer.setIdentity(this.getClass().getSimpleName() + "/backupServers"); }
protected void waitForBackup() { waitForRemoteBackupSynchronization(backupServer.getServer()); }