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