Thomas Vachuska
Committed by Gerrit Code Review

Fixed the null-provider packet rate default value and ability to dynamically adjust the value.

Change-Id: Ifc86ff9a184f2b453038667ed32c944841ed7af6
...@@ -40,6 +40,7 @@ import java.util.concurrent.TimeUnit; ...@@ -40,6 +40,7 @@ import java.util.concurrent.TimeUnit;
40 import java.util.stream.Collectors; 40 import java.util.stream.Collectors;
41 41
42 import static com.google.common.collect.ImmutableList.copyOf; 42 import static com.google.common.collect.ImmutableList.copyOf;
43 +import static java.util.concurrent.TimeUnit.MILLISECONDS;
43 import static java.util.concurrent.TimeUnit.SECONDS; 44 import static java.util.concurrent.TimeUnit.SECONDS;
44 import static org.onosproject.net.MastershipRole.MASTER; 45 import static org.onosproject.net.MastershipRole.MASTER;
45 import static org.slf4j.LoggerFactory.getLogger; 46 import static org.slf4j.LoggerFactory.getLogger;
...@@ -99,7 +100,11 @@ class NullPacketProvider extends NullProviders.AbstractNullProvider ...@@ -99,7 +100,11 @@ class NullPacketProvider extends NullProviders.AbstractNullProvider
99 * @param packetRate new packet rate 100 * @param packetRate new packet rate
100 */ 101 */
101 void adjustRate(int packetRate) { 102 void adjustRate(int packetRate) {
102 - delay = 1000 / packetRate; 103 + boolean needsRestart = delay == 0 && packetRate > 0;
104 + delay = packetRate > 0 ? 1000 / packetRate : 0;
105 + if (needsRestart) {
106 + timeout = timer.newTimeout(new PacketDriverTask(), 1, MILLISECONDS);
107 + }
103 log.info("Settings: packetRate={}, delay={}", packetRate, delay); 108 log.info("Settings: packetRate={}, delay={}", packetRate, delay);
104 } 109 }
105 110
...@@ -126,7 +131,7 @@ class NullPacketProvider extends NullProviders.AbstractNullProvider ...@@ -126,7 +131,7 @@ class NullPacketProvider extends NullProviders.AbstractNullProvider
126 ICMP icmp; 131 ICMP icmp;
127 Ethernet eth; 132 Ethernet eth;
128 133
129 - public PacketDriverTask() { 134 + PacketDriverTask() {
130 icmp = new ICMP(); 135 icmp = new ICMP();
131 icmp.setIcmpType((byte) 8).setIcmpCode((byte) 0).setChecksum((short) 0); 136 icmp.setIcmpType((byte) 8).setIcmpCode((byte) 0).setChecksum((short) 0);
132 eth = new Ethernet(); 137 eth = new Ethernet();
...@@ -136,7 +141,7 @@ class NullPacketProvider extends NullProviders.AbstractNullProvider ...@@ -136,7 +141,7 @@ class NullPacketProvider extends NullProviders.AbstractNullProvider
136 141
137 @Override 142 @Override
138 public void run(Timeout to) { 143 public void run(Timeout to) {
139 - if (!devices.isEmpty() && !to.isCancelled()) { 144 + if (!devices.isEmpty() && !to.isCancelled() && delay > 0) {
140 sendEvent(devices.get(Math.min(currentDevice, devices.size() - 1))); 145 sendEvent(devices.get(Math.min(currentDevice, devices.size() - 1)));
141 currentDevice = (currentDevice + 1) % devices.size(); 146 currentDevice = (currentDevice + 1) % devices.size();
142 timeout = timer.newTimeout(to.getTask(), delay, TimeUnit.MILLISECONDS); 147 timeout = timer.newTimeout(to.getTask(), delay, TimeUnit.MILLISECONDS);
...@@ -145,8 +150,8 @@ class NullPacketProvider extends NullProviders.AbstractNullProvider ...@@ -145,8 +150,8 @@ class NullPacketProvider extends NullProviders.AbstractNullProvider
145 150
146 private void sendEvent(Device device) { 151 private void sendEvent(Device device) {
147 // Make it look like things came from ports attached to hosts 152 // Make it look like things came from ports attached to hosts
148 - eth.setSourceMACAddress("00:00:10:00:00:0" + SRC_HOST) 153 + eth.setSourceMACAddress("00:00:00:10:00:0" + SRC_HOST)
149 - .setDestinationMACAddress("00:00:10:00:00:0" + DST_HOST); 154 + .setDestinationMACAddress("00:00:00:10:00:0" + DST_HOST);
150 InboundPacket inPkt = new DefaultInboundPacket( 155 InboundPacket inPkt = new DefaultInboundPacket(
151 new ConnectPoint(device.id(), PortNumber.portNumber(SRC_HOST)), 156 new ConnectPoint(device.id(), PortNumber.portNumber(SRC_HOST)),
152 eth, ByteBuffer.wrap(eth.serialize())); 157 eth, ByteBuffer.wrap(eth.serialize()));
......
...@@ -152,7 +152,7 @@ public class NullProviders { ...@@ -152,7 +152,7 @@ public class NullProviders {
152 label = "Number of host to generate per device") 152 label = "Number of host to generate per device")
153 private int hostCount = DEFAULT_HOST_COUNT; 153 private int hostCount = DEFAULT_HOST_COUNT;
154 154
155 - private static final int DEFAULT_PACKET_RATE = 5; 155 + private static final int DEFAULT_PACKET_RATE = 0;
156 @Property(name = "packetRate", intValue = DEFAULT_PACKET_RATE, 156 @Property(name = "packetRate", intValue = DEFAULT_PACKET_RATE,
157 label = "Packet-in/s rate; 0 for no packets") 157 label = "Packet-in/s rate; 0 for no packets")
158 private int packetRate = DEFAULT_PACKET_RATE; 158 private int packetRate = DEFAULT_PACKET_RATE;
......