package org.hivedb.persistence; import org.hivedb.Hive; import org.hivedb.HiveException; import org.hivedb.HiveSyncDaemon; import org.hivedb.meta.Node; import org.hivedb.meta.persistence.CachingDataSourceProvider; import org.hivedb.util.database.test.HiveTest; import org.hivedb.util.database.test.HiveTest.Config; import org.junit.Assert; import org.junit.Test; import java.util.ArrayList; import java.util.Observer; @Config("hive_default") public class TestSyncHive extends HiveTest { /** * Load two Hive instances, use one to update the hive, and have the other listen for updates * from the HiveSyncDaeon. */ @Test public void testDaemonSync() throws Exception { Hive hive = loadHive(); Hive passiveSync = loadHive(); ArrayList<Observer> observers = new ArrayList<Observer>(); observers.add(passiveSync); HiveSyncDaemon daemon = new HiveSyncDaemon(getConnectString(getHiveDatabaseName()), observers); daemon.detectChanges(); hive.addNode(createNode(getHiveDatabaseName())); daemon.detectChanges(); // nodeReport(passiveSync, hive); Assert.assertNotNull(passiveSync.getNode(createNode(getHiveDatabaseName()).getName())); } @SuppressWarnings("unused") private void nodeReport(Hive passiveSync, Hive hive) { System.out.println("Passively synced Hive:" + passiveSync.getRevision()); for (Node node : passiveSync.getNodes()) System.out.println(node.getName()); System.out.println("In-memory Hive " + hive.getRevision()); for (Node node : hive.getNodes()) System.out.println(node.getName()); } private Hive loadHive() throws HiveException { return Hive.load(getConnectString(getHiveDatabaseName()), CachingDataSourceProvider.getInstance()); } }