public void testRemoveMessage2(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); Message m2=new DummyMessage(); m2.setMessageArrivalTime(2); mq.putMessage(m1); mq.putMessage(m2); mq.removeMessage(m2); assertEquals(1, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m1); assertEquals(0, mq.getQueueSize()); }
public void startSimulation() { Message m; while (!queue.isEmpty() && simTime < simulationEndTime) { m = queue.getNextMessage(); if (m != null) { simTime = m.getMessageArrivalTime(); m.processEvent(); m.handleMessage(); } printLog(); } }
@Provides @Singleton public JDEQSimEngine provideJDEQSimulation(QSim qsim) { SteppableScheduler scheduler = new SteppableScheduler(new MessageQueue()); return new JDEQSimEngine( ConfigUtils.addOrGetModule(qsim.getScenario().getConfig(), JDEQSimConfigGroup.NAME, JDEQSimConfigGroup.class), qsim.getScenario(), qsim.getEventsManager(), qsim.getAgentCounter(), scheduler); } }
public void schedule(Message m) { queue.putMessage(m); }
public void unschedule(Message m) { queue.removeMessage(m); }
@Override public void run() { events.initProcessing(); Timer t = new Timer(); t.startTimer(); Scheduler scheduler = new Scheduler(new MessageQueue(), config.getSimulationEndTime()); Road.setAllRoads(new HashMap<Id<Link>, Road>()); // initialize network Road road; for (Link link : this.scenario.getNetwork().getLinks().values()) { road = new Road(scheduler, link); Road.getAllRoads().put(link.getId(), road); } for (Person person : this.scenario.getPopulation().getPersons().values()) { new Vehicle(scheduler, person, activityDurationInterpretation); // the vehicle registers itself to the scheduler } scheduler.startSimulation(); t.endTimer(); log.info("Time needed for one iteration (only JDEQSimulation part): " + t.getMeasuredTime() + "[ms]"); events.finishProcessing(); } }
private void addNetworkChangeEventToMessageQ(NetworkChangeEvent changeEvent) { Message m = new Message() { @Override public void processEvent() { } @Override public void handleMessage() { applyTheChangeEvent(changeEvent); } }; m.setMessageArrivalTime(changeEvent.getStartTime()); this.messageQueue.putMessage(m); }
public void testRemoveMessage1(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); Message m2=new DummyMessage(); m2.setMessageArrivalTime(2); mq.putMessage(m1); mq.putMessage(m2); mq.removeMessage(m1); assertEquals(1, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m2); assertEquals(0, mq.getQueueSize()); }
@Test public void testSchedule1(){ Scheduler scheduler=new Scheduler(new MessageQueue()); SimUnit sm1=new DummySimUnit(scheduler); Message m1=new DummyMessage(); sm1.sendMessage(m1, sm1, 9000); scheduler.startSimulation(); Assert.assertEquals(9000.0, scheduler.getSimTime(), 0.0); }
@Override public void doSimStep(double time) { finished = false; // I don't think we can restart once the queue has run dry, but just in case. if (lookahead != null && time < lookahead.getMessageArrivalTime()) { return; } if (lookahead != null) { lookahead.processEvent(); lookahead.handleMessage(); lookahead = null; } while (!queue.isEmpty()) { Message m = queue.getNextMessage(); if (m != null && m.getMessageArrivalTime() <= time) { m.processEvent(); m.handleMessage(); } else { lookahead = m; return; } } finished = true; // queue has run dry. }
@Override public void endActivityAndComputeNextState(double now) { delegate.endActivityAndComputeNextState(now); Message m = new Message() { @Override public void processEvent() { } @Override public void handleMessage() { onTenMinutesAfterDeparting(); } }; m.setMessageArrivalTime(now + 10.0 * 60.0); messageQueue.putMessage(m); }
public void testRemoveMessage3(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); Message m2=new DummyMessage(); m2.setMessageArrivalTime(1); mq.putMessage(m1); mq.putMessage(m2); mq.removeMessage(m1); assertEquals(1, mq.getQueueSize()); assertEquals(false, mq.isEmpty()); assertEquals(true, mq.getNextMessage()==m2); assertEquals(0, mq.getQueueSize()); assertEquals(true, mq.isEmpty()); }
@Test public void testUnschedule(){ Scheduler scheduler=new Scheduler(new MessageQueue()); SimUnit sm1=new DummySimUnit(scheduler); Message m1=new DummyMessage(); sm1.sendMessage(m1, sm1, 1); scheduler.unschedule(m1); scheduler.startSimulation(); Assert.assertEquals(0.0, scheduler.getSimTime(), 0.0); }
public void testPutMessage1(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); Message m2=new DummyMessage(); m2.setMessageArrivalTime(2); mq.putMessage(m1); mq.putMessage(m2); assertEquals(2, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m1); }
@Test public void testUnschedule2(){ Scheduler scheduler=new Scheduler(new MessageQueue()); SimUnit sm1=new DummySimUnit(scheduler); Message m1=new DummyMessage(); sm1.sendMessage(m1, sm1, 10); DummyMessage1 m2=new DummyMessage1(); m2.messageToUnschedule=m1; sm1.sendMessage(m2, sm1, 1); scheduler.startSimulation(); Assert.assertEquals(1.0, scheduler.getSimTime(), 0.0); }
public void testPutMessage2(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(2); Message m2=new DummyMessage(); m2.setMessageArrivalTime(1); mq.putMessage(m1); mq.putMessage(m2); assertEquals(2, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m2); }
public void testMessageFactory6(){ MessageFactory.GC_ALL_MESSAGES(); JDEQSimConfigGroup.setGC_MESSAGES(false); Scheduler scheduler=new Scheduler(new MessageQueue()); Person person= PopulationUtils.getFactory().createPerson(Id.create("abc", Person.class)); Vehicle vehicle=new Vehicle(scheduler, person, PlansConfigGroup.ActivityDurationInterpretation.minOfDurationAndEndTime ); assertEquals(true,MessageFactory.getEndLegMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEnterRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getStartingLegMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getLeaveRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEndRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getDeadlockPreventionMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEndLegMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getEnterRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getStartingLegMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getLeaveRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getEndRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getDeadlockPreventionMessage(scheduler, vehicle).vehicle==vehicle); }
public void testPutMessage3(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(2); Message m2=new DummyMessage(); m2.setMessageArrivalTime(1); Message m3=new DummyMessage(); m3.setMessageArrivalTime(1); mq.putMessage(m1); mq.putMessage(m2); mq.putMessage(m3); assertEquals(3, mq.getQueueSize()); assertEquals(true, mq.getNextMessage().getMessageArrivalTime()==1); }
public void testMessageFactory5(){ MessageFactory.GC_ALL_MESSAGES(); JDEQSimConfigGroup.setGC_MESSAGES(true); Scheduler scheduler=new Scheduler(new MessageQueue()); Person person= PopulationUtils.getFactory().createPerson(Id.create("abc", Person.class)); Vehicle vehicle=new Vehicle(scheduler, person, PlansConfigGroup.ActivityDurationInterpretation.minOfDurationAndEndTime ); assertEquals(true,MessageFactory.getEndLegMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEnterRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getStartingLegMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getLeaveRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEndRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getDeadlockPreventionMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEndLegMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getEnterRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getStartingLegMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getLeaveRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getEndRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getDeadlockPreventionMessage(scheduler, vehicle).vehicle==vehicle); }
public void testMessagePriority(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); m1.setPriority(10); Message m2=new DummyMessage(); m2.setMessageArrivalTime(1); m2.setPriority(5); Message m3=new DummyMessage(); m3.setMessageArrivalTime(1); m3.setPriority(20); mq.putMessage(m1); mq.putMessage(m2); mq.putMessage(m3); assertEquals(true, mq.getNextMessage()==m3); assertEquals(true, mq.getNextMessage()==m1); assertEquals(true, mq.getNextMessage()==m2); assertEquals(0, mq.getQueueSize()); assertEquals(true, mq.isEmpty()); }