public void startSimulation() { Message m; while (!queue.isEmpty() && simTime < simulationEndTime) { m = queue.getNextMessage(); if (m != null) { simTime = m.getMessageArrivalTime(); m.processEvent(); m.handleMessage(); } printLog(); } }
@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. }
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()); }
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 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); }
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()); }
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 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 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()); }