/** * Ivy java library API tester. * * @author Yannick Jestin * * (c) CENA * * usage: java TestApi * */ import fr.dgac.ivy.*; class TestApi implements IvyMessageListener, IvyApplicationListener { public static final String TestApiReadyMsg = "TestAPI ready"; public static final String TestMsg = "Test Message"; private Ivy bus; private int test=0; private String domain; public TestApi(String domain) throws IvyException { System.out.println("TestApi joining the bus"); bus = new Ivy("TestAPI",TestApiReadyMsg, null); bus.addApplicationListener(this); bus.bindMsg("^"+TestMsg+"$",this); bus.start(this.domain=domain); new Sender(domain) ; } public void receive(IvyClient ic,String[] args) { System.out.println("[X] received message"); test++; } public void connect(IvyClient ic) { if (ic.getApplicationName().compareTo("Sender")!=0) return; System.out.println("[X] Sender connected"); test++; } public void disconnect(IvyClient ic) { if (ic.getApplicationName().compareTo("Sender")!=0) return; System.out.println("[X] Sender disconnected"); test++; } public void directMessage(IvyClient ic,int id,String arg) { if (id!=1) return; System.out.println("[X] Direct message received, ID=1"); test++; } public void die(IvyClient ic,int reason) { System.out.println("[X] Die received"); test++; System.out.println(test+ "/5 tests successful, good bye"); System.out.println("TestApi leaving the bus"); bus.stop(); System.out.println("TestApi has left"); } class Sender implements IvyMessageListener { private Ivy sbus; private String domain; public Sender(String domain) { try { System.out.println("Sender joining the bus"); sbus = new Ivy("Sender","Sender ready", null); sbus.bindMsg("^"+TestApiReadyMsg+"$",this); sbus.start(this.domain=domain); } catch (IvyException ie) { ie.printStackTrace(); } } public void receive(IvyClient c,String[] args) { sbus.sendMsg(TestMsg); c.sendDirectMsg(1,"bye bye"); System.out.println("Sender leaving the bus"); sbus.stop(); System.out.println("Sender has left the bus"); new Killer(domain); } } class Killer implements IvyMessageListener { private Ivy kbus; public Killer(String domain) { try { System.out.println("Killer joining the bus"); kbus = new Ivy("Killer","Killer ready", null); kbus.bindMsg("^"+TestApiReadyMsg+"$",this); kbus.start(domain); } catch (IvyException ie) { ie.printStackTrace(); } } public void receive(IvyClient c,String[] args) { c.sendDie("bye bye"); System.out.println("Killer leaving the bus"); kbus.stop(); System.out.println("Killer has left the bus"); } } public static void main(String[] args) throws IvyException { new TestApi(null); } }