public void xtestAging() { ProphetRouter r4 = (ProphetRouter) h4.getRouter(); ProphetRouter r5 = (ProphetRouter) h5.getRouter(); h4.connect(h5); assertEquals(ProphetRouter.P_INIT, r4.getPredFor(h5)); assertEquals(ProphetRouter.P_INIT, r5.getPredFor(h4)); disconnect(h5); clock.advance(SECONDS_IN_TIME_UNIT * 2); double newPred = ProphetRouter.P_INIT * Math.pow(ProphetRouter.GAMMA, 2); assertEquals(newPred, r4.getPredFor(h5)); assertEquals(newPred, r5.getPredFor(h4)); clock.advance(SECONDS_IN_TIME_UNIT / 10); newPred = newPred * Math.pow(ProphetRouter.GAMMA, 1.0 / 10); assertEquals(newPred, r4.getPredFor(h5)); assertEquals(newPred, r5.getPredFor(h4)); }
/** Tests normal routing */ public void xtestRouting() { Message m1 = new Message(h1, h2, msgId2, 1); h1.createNewMessage(m1); Message m2 = new Message(h1, h3, msgId3, 1); h1.createNewMessage(m2); Message m3 = new Message(h1, h4, msgId4, 1); h1.createNewMessage(m3); Message m4 = new Message(h1, h6, "dummy", 1); // this message should not be fwded h1.createNewMessage(m4); Message m5 = new Message(h1, h5, msgId5, 1); h1.createNewMessage(m5); Message m6 = new Message(h4, h1, "d1", 1); h4.createNewMessage(m6); ProphetRouter r4 = (ProphetRouter) h4.getRouter(); ProphetRouter r5 = (ProphetRouter) h5.getRouter(); checkCreates(6); h4.connect(h5); assertEquals(ProphetRouter.P_INIT, r4.getPredFor(h5)); assertEquals(ProphetRouter.P_INIT, r5.getPredFor(h4)); updateAllNodes(); // h4 has message for h1 but it shouldn't forward it to h5 since // h5 has not heard about h1 assertFalse(mc.next()); disconnect(h5); h5.connect(h3); // now h3 knows h5 has met h4 h1.connect(h3); // now h1-h3-h5 connected and h5 knows h4 // first h1 should transfer msgId2 to h3 (final recipient) updateAllNodes(); assertTrue(mc.next()); assertEquals(mc.TYPE_START, mc.getLastType()); assertEquals(msgId3, mc.getLastMsg().getId()); assertEquals(h1, mc.getLastFrom()); assertFalse(mc.next()); clock.advance(10); updateAllNodes(); assertTrue(mc.next()); assertEquals(mc.TYPE_RELAY, mc.getLastType()); // finished transfer assertEquals(msgId3, mc.getLastMsg().getId()); assertTrue(mc.getLastFirstDelivery()); // h1 should next transfer msgId5 to h3 because h3 is connected to h5 assertTrue(mc.next()); assertEquals(mc.TYPE_START, mc.getLastType()); assertEquals(msgId5, mc.getLastMsg().getId()); assertEquals(h1, mc.getLastFrom()); assertFalse(mc.next()); clock.advance(10); updateAllNodes(); assertTrue(mc.next()); assertEquals(mc.TYPE_RELAY, mc.getLastType()); // finished transfer assertEquals(msgId5, mc.getLastMsg().getId()); assertTrue(mc.next()); // next h1 should transfer msgId4 since h3 knows h4 trough h5 assertEquals(mc.TYPE_START, mc.getLastType()); assertEquals(msgId4, mc.getLastMsg().getId()); assertEquals(h1, mc.getLastFrom()); assertFalse(mc.next()); doRelay(); // relaying should be tested by now.. assertTrue(mc.next()); // now h3 should transfer msgId5 to h5 assertEquals(mc.TYPE_START, mc.getLastType()); assertEquals(msgId5, mc.getLastMsg().getId()); assertEquals(h3, mc.getLastFrom()); doRelay(); // id5 delivered to h5 assertTrue(mc.getLastFirstDelivery()); assertTrue(mc.next()); // next h3 should transfer id4 to h5 assertEquals(mc.TYPE_START, mc.getLastType()); assertEquals(msgId4, mc.getLastMsg().getId()); assertEquals(h3, mc.getLastFrom()); doRelay(); // now no new transfers should be started assertFalse(mc.next()); }