@Test public void testClientNoServer() throws Exception { System.setProperty(StandbyClientSync.CLIENT_ID_PROPERTY_NAME, "Foo"); MBeanServer jmxServer = ManagementFactory.getPlatformMBeanServer(); ObjectName status; try (StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), clientFileStore.fileStore(), false, getClientTimeout(), false, folder.newFolder())) { clientSync.start(); clientSync.run(); status = new ObjectName(clientSync.getMBeanName()); assertTrue(jmxServer.isRegistered(status)); assertEquals("client: Foo", jmxServer.getAttribute(status, "Mode")); assertEquals("1", jmxServer.getAttribute(status, "FailedRequests").toString()); assertEquals("-1", jmxServer.getAttribute(status, "SecondsSinceLastSuccess").toString()); assertEquals("1", jmxServer.invoke(status, "calcFailedRequests", null, null).toString()); assertEquals("-1", jmxServer.invoke(status, "calcSecondsSinceLastSuccess", null, null).toString()); } assertTrue(!jmxServer.isRegistered(status)); }
@Test public void testServerEmptyConfig() throws Exception { MBeanServer jmxServer = ManagementFactory.getPlatformMBeanServer(); ObjectName status = new ObjectName(StandbyStatusMBean.JMX_NAME + ",id=*"); try (StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), serverFileStore.fileStore(), 1 * MB)) { serverSync.start(); Set<ObjectName> instances = jmxServer.queryNames(status, null); assertEquals(1, instances.size()); status = instances.toArray(new ObjectName[0])[0]; assertEquals(new ObjectName(serverSync.getMBeanName()), status); assertTrue(jmxServer.isRegistered(status)); assertEquals("primary", jmxServer.getAttribute(status, "Mode")); String m = jmxServer.getAttribute(status, "Status").toString(); if (!m.equals(StandbyStatusMBean.STATUS_RUNNING) && !m.equals("channel unregistered")) { fail("unexpected Status " + m); } assertEquals(StandbyStatusMBean.STATUS_RUNNING, jmxServer.getAttribute(status, "Status")); assertEquals(true, jmxServer.getAttribute(status, "Running")); jmxServer.invoke(status, "stop", null, null); assertEquals(false, jmxServer.getAttribute(status, "Running")); assertEquals(StandbyStatusMBean.STATUS_STOPPED, jmxServer.getAttribute(status, "Status")); jmxServer.invoke(status, "start", null, null); assertEquals(true, jmxServer.getAttribute(status, "Running")); assertEquals(StandbyStatusMBean.STATUS_RUNNING, jmxServer.getAttribute(status, "Status")); } assertTrue(!jmxServer.isRegistered(status)); }
@Test public void testClientEmptyConfigNoServer() throws Exception { MBeanServer jmxServer = ManagementFactory.getPlatformMBeanServer(); ObjectName status = new ObjectName(StandbyStatusMBean.JMX_NAME + ",id=*"); try (StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), clientFileStore.fileStore(), false, getClientTimeout(), false, folder.newFolder())) { clientSync.start(); clientSync.run(); Set<ObjectName> instances = jmxServer.queryNames(status, null); assertEquals(1, instances.size()); status = instances.toArray(new ObjectName[0])[0]; assertEquals(new ObjectName(clientSync.getMBeanName()), status); assertTrue(jmxServer.isRegistered(status)); String m = jmxServer.getAttribute(status, "Mode").toString(); if (!m.startsWith("client: ")) { fail("unexpected mode " + m); } assertEquals("1", jmxServer.getAttribute(status, "FailedRequests").toString()); assertEquals("-1", jmxServer.getAttribute(status, "SecondsSinceLastSuccess").toString()); assertEquals(StandbyStatusMBean.STATUS_RUNNING, jmxServer.getAttribute(status, "Status")); assertEquals(true, jmxServer.getAttribute(status, "Running")); jmxServer.invoke(status, "stop", null, null); assertEquals(false, jmxServer.getAttribute(status, "Running")); assertEquals(StandbyStatusMBean.STATUS_STOPPED, jmxServer.getAttribute(status, "Status")); jmxServer.invoke(status, "start", null, null); assertEquals(true, jmxServer.getAttribute(status, "Running")); assertEquals(StandbyStatusMBean.STATUS_RUNNING, jmxServer.getAttribute(status, "Status")); } assertTrue(!jmxServer.isRegistered(status)); }
@Test public void testFailoverSecureServerPlainClient() throws Exception { FileStore storeS = serverFileStore.fileStore(); FileStore storeC = clientFileStore.fileStore(); try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), storeS, MB, true); StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), storeC, false, getClientTimeout(), false, folder.newFolder()); ) { assertFalse(synchronizeAndCompareHead(serverSync, clientSync)); } }
@Test public void testFailoverPlainServerSecureClient() throws Exception { FileStore storeS = serverFileStore.fileStore(); FileStore storeC = clientFileStore.fileStore(); try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), storeS, MB); StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), storeC, true, getClientTimeout(), false, folder.newFolder()); ) { assertFalse(synchronizeAndCompareHead(serverSync, clientSync)); } }
@Test public void testFailoverSecure() throws Exception { FileStore storeS = serverFileStore.fileStore(); FileStore storeC = clientFileStore.fileStore(); try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), storeS, MB, true); StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), storeC, true, getClientTimeout(), false, folder.newFolder()); ) { assertTrue(synchronizeAndCompareHead(serverSync, clientSync)); } }
ObjectName clientStatus, serverStatus; try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), serverFileStore.fileStore(), MB); StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), clientFileStore.fileStore(), false, getClientTimeout(), false, folder.newFolder()) ) { serverSync.start();
private void useProxy(boolean ssl, int skipPosition, int skipBytes, int flipPosition, boolean intermediateChange) throws Exception { FileStore serverStore = serverFileStore.fileStore(); FileStore clientStore = clientFileStore1.fileStore(); NodeStore store = SegmentNodeStoreBuilders.builder(serverStore).build(); addTestContent(store, "server"); serverStore.flush(); try (StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), serverStore, MB, ssl)) { serverSync.start(); File spoolFolder = folder.newFolder(); try ( NetworkErrorProxy ignored = new NetworkErrorProxy(proxyPort.getPort(), getServerHost(), serverPort.getPort(), flipPosition, skipPosition, skipBytes); StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), proxyPort.getPort(), clientStore, ssl, getClientTimeout(), false, spoolFolder) ) { clientSync.run(); } assertFalse("stores are equal", serverStore.getHead().equals(clientStore.getHead())); if (intermediateChange) { addTestContent(store, "server2"); serverStore.flush(); } try (StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), clientStore, ssl, getClientTimeout(), false, spoolFolder)) { clientSync.run(); } } assertEquals("stores are not equal", serverStore.getHead(), clientStore.getHead()); }
@Test public void testProxy() throws Exception { FileStore serverStore = serverFileStore.fileStore(); FileStore clientStore = clientFileStore1.fileStore(); NodeStore store = SegmentNodeStoreBuilders.builder(serverStore).build(); addTestContent(store, "server"); serverStore.flush(); try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), serverStore, MB, false); StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), clientStore, false, getClientTimeout(), false, folder.newFolder()); ) { serverSync.start(); clientSync.run(); } assertEquals(serverStore.getHead(), clientStore.getHead()); }
@Test public void testProxySSL() throws Exception { FileStore storeS = serverFileStore.fileStore(); FileStore storeC = clientFileStore1.fileStore(); NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build(); addTestContent(store, "server"); storeS.flush(); try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), storeS, MB, true); StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), storeC, true, getClientTimeout(), false, folder.newFolder()); ) { serverSync.start(); clientSync.run(); } assertEquals(storeS.getHead(), storeC.getHead()); }
private void createTestWithConfig(String host, String[] ipRanges, boolean expectedToWork) throws Exception { FileStore storeS = serverFileStore.fileStore(); FileStore storeC = clientFileStore.fileStore(); NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build(); try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), storeS, MB, ipRanges); StandbyClientSync clientSync = new StandbyClientSync(host, serverPort.getPort(), storeC, false, getClientTimeout(), false, folder.newFolder()) ) { serverSync.start(); addTestContent(store, "server"); storeS.flush(); // this speeds up the test a little bit... clientSync.run(); if (expectedToWork) { assertEquals(storeS.getHead(), storeC.getHead()); } else { assertFalse("stores are equal but shouldn't!", storeS.getHead().equals(storeC.getHead())); } } }
@Test public void testLocalChanges() throws Exception { FileStore storeS = serverFileStore.fileStore(); FileStore storeC = clientFileStore.fileStore(); NodeStore store = SegmentNodeStoreBuilders.builder(storeC).build(); addTestContent(store, "client"); try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), storeS, MB); StandbyClientSync cl = new StandbyClientSync(getServerHost(), serverPort.getPort(), storeC, false, getClientTimeout(), false, folder.newFolder()) ) { serverSync.start(); store = SegmentNodeStoreBuilders.builder(storeS).build(); addTestContent(store, "server"); storeS.flush(); assertFalse("stores are not expected to be equal", storeS.getHead().equals(storeC.getHead())); cl.run(); assertEquals(storeS.getHead(), storeC.getHead()); } }
@Test public void testSyncUpdatedBinaryProperty() throws Exception { final int blobSize = 5 * MB; FileStore primary = getPrimary(); FileStore secondary = getSecondary(); NodeStore store = SegmentNodeStoreBuilders.builder(primary).build(); try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), primary, MB); StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), secondary, false, getClientTimeout(), false, folder.newFolder()) ) { serverSync.start(); addTestContent(store, "server", blobSize); primary.flush(); clientSync.run(); assertEquals(primary.getHead(), secondary.getHead()); addTestContent(store, "server", blobSize); primary.flush(); clientSync.run(); assertEquals(primary.getHead(), secondary.getHead()); } }
primary.flush(); try (StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), primary, MB)) { serverSync.start(); NetworkErrorProxy ignored = new NetworkErrorProxy(proxyPort.getPort(), getServerHost(), serverPort.getPort(), flipPosition, skipPosition, skipBytes); StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), proxyPort.getPort(), secondary, false, getClientTimeout(), false, spoolFolder) ) { clientSync.run(); try (StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), secondary, false, getClientTimeout(), false, spoolFolder)) { clientSync.run();
@Test @Ignore("OAK-7027") // FIXME OAK-7027 public void testSyncFailingDueToTooShortTimeout() throws Exception { final int blobSize = 5 * MB; FileStore primary = getPrimary(); FileStore secondary = getSecondary(); NodeStore store = SegmentNodeStoreBuilders.builder(primary).build(); addTestContent(store, "server", blobSize); try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), primary, MB); StandbyClientSync cl = new StandbyClientSync(getServerHost(), 60, secondary, false, getClientTimeout(), false, folder.newFolder()) ) { serverSync.start(); primary.flush(); cl.run(); assertNotEquals(primary.getHead(), secondary.getHead()); assertEquals(1, cl.getFailedRequests()); } } }
@Test public void testSync() throws Exception { int blobSize = 5 * MB; FileStore primary = serverFileStore.fileStore(); FileStore secondary = clientFileStore.fileStore(); NodeStore store = SegmentNodeStoreBuilders.builder(primary).build(); try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), primary, MB); StandbyClientSync clientSync = new StandbyClientSync(getServerHost(), serverPort.getPort(), secondary, false, getClientTimeout(), false, folder.newFolder()) ) { serverSync.start(); byte[] data = addTestContent(store, "server", blobSize, 150); primary.flush(); clientSync.run(); assertEquals(primary.getHead(), secondary.getHead()); assertTrue(primary.getStats().getApproximateSize() > blobSize); assertTrue(secondary.getStats().getApproximateSize() > blobSize); PropertyState ps = secondary.getHead().getChildNode("root") .getChildNode("server").getProperty("testBlob"); assertNotNull(ps); assertEquals(Type.BINARY.tag(), ps.getType().tag()); Blob b = ps.getValue(Type.BINARY); assertEquals(blobSize, b.length()); byte[] testData = new byte[blobSize]; ByteStreams.readFully(b.getNewStream(), testData); assertArrayEquals(data, testData); } }
StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), storeS, MB); StandbyClientSync cl1 = new StandbyClientSync(getServerHost(), serverPort.getPort(), storeC, false, getClientTimeout(), false, folder.newFolder()); StandbyClientSync cl2 = new StandbyClientSync(getServerHost(), serverPort.getPort(), storeC2, false, getClientTimeout(), false, folder.newFolder()) ) { serverSync.start();
byte[] data = addTestContent(store, "server", blobSize); try ( StandbyServerSync serverSync = new StandbyServerSync(serverPort.getPort(), primary, MB); StandbyClientSync cl = new StandbyClientSync(getServerHost(), serverPort.getPort(), secondary, false, getClientTimeout(), false, folder.newFolder()) ) { serverSync.start();