/** * */ package org.squidy.basex; import static org.basex.core.Text.ADMIN; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.io.IOException; import java.util.UUID; import org.basex.BaseXServer; import org.basex.core.BaseXException; import org.basex.server.ClientSession; import org.basex.server.EventNotifier; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.squidy.manager.Manager; import org.squidy.manager.data.IData; import org.squidy.manager.data.IDataContainer; import org.squidy.manager.model.Processable; /** * <code>BaseXTriggerTest</code>. * * <pre> * Date: Dec 3, 2010 * Time: 12:15:34 PM * </pre> * * * @author Roman R�dle <a * href="mailto:Roman.Raedle@uni-konstanz.de">Roman.Raedle * @uni-konstanz.de</a> Human-Computer Interaction Group University of Konstanz * * @version $Id: BaseXTriggerTest.java 772 2011-09-16 15:39:44Z raedle $ * @since 1.5.0 * */ public final class BaseXTriggerTest { /** BaseX server. */ private static BaseXServer server; /** Client session. */ private ClientSession mc; /** Control client sessions. */ private ClientSession[] ccs = new ClientSession[4]; /** Starts the server. * @throws IOException */ @BeforeClass public static void start() throws IOException { server = new BaseXServer("-z"); } /** Starts all sessions. */ @Before public void startSession() { try { mc = new ClientSession(server.context, ADMIN, ADMIN); for (int i = 0; i < ccs.length; i++) { ccs[i] = new ClientSession(server.context, ADMIN, ADMIN); } } catch (final IOException ex) { fail(ex.toString()); } } /** Stops all sessions. */ @After public void stopSession() { try { mc.close(); for (ClientSession s : ccs) s.close(); } catch (final IOException ex) { fail(ex.toString()); } } /** Stops the server. * @throws IOException */ // @AfterClass public static void stop() throws IOException { server.stop(); } /** * Runs a query command and retrieves the result as string. * * @throws BaseXException * command exception */ @Test public void command() throws IOException { final Processable p = new Processable() { public void publish(IDataContainer dataContainer) { } public void publish(IData... data) { } public IDataContainer process(IDataContainer dataContainer) { return null; } }; // Create a trigger. mc.execute("create event " + Manager.TRIGGER_PROPERTY); // Attach half of the clients to the trigger. for (int i = ccs.length / 2; i < ccs.length; i++) { ccs[i].watch(Manager.TRIGGER_PROPERTY, new EventNotifier() { @Override public void notify(final String value) { assertEquals("processable=" + p.getId() + ",myProperty=myValue", new String(value)); } }); } // Release a trigger. Manager.get().propertyChanged(p, "myProperty", "myValue"); // Detach all clients attached to trigger beforehand. for (int i = ccs.length / 2; i < ccs.length; i++) { ccs[i].unwatch(Manager.TRIGGER_PROPERTY); } // Drop a trigger. mc.execute("drop event " + Manager.TRIGGER_PROPERTY); } }