Committed by
Gerrit Code Review
Fixed the null-provider packet rate default value and ability to dynamically adjust the value.
Change-Id: Ifc86ff9a184f2b453038667ed32c944841ed7af6
Showing
2 changed files
with
11 additions
and
6 deletions
... | @@ -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; | ... | ... |
-
Please register or login to post a comment