Improve HostLocationProviderTest
Use a list to store all host descriptions we received.
This allows us to create more complicated test scenarios
in which multiple hosts are expected.
Change-Id: I889283413dfd525ff168d52fde99c49e771c7573
diff --git a/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java b/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java
index 3a780cf..acf0a13 100644
--- a/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java
+++ b/providers/host/src/test/java/org/onosproject/provider/host/impl/HostLocationProviderTest.java
@@ -16,6 +16,8 @@
package org.onosproject.provider.host.impl;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
import com.google.common.util.concurrent.MoreExecutors;
import org.junit.After;
@@ -73,6 +75,7 @@
import java.util.Collections;
import java.util.Dictionary;
import java.util.Hashtable;
+import java.util.List;
import java.util.Set;
import static org.easymock.EasyMock.*;
@@ -187,33 +190,39 @@
@Test
public void events() {
- // new host
+ // New host. Expect one additional host description.
testProcessor.process(new TestArpPacketContext(DEV1));
- assertNotNull("new host expected", providerService.added);
- assertNull("host motion unexpected", providerService.moved);
+ assertThat("New host expected", providerService.descriptions.size(), is(1));
- // the host moved to new switch
+ // The host moved to new switch. Expect one additional host description.
+ // The second host description should have a different location.
testProcessor.process(new TestArpPacketContext(DEV2));
- assertNotNull("host motion expected", providerService.moved);
+ assertThat("Host motion expected", providerService.descriptions.size(), is(2));
+ HostLocation loc1 = providerService.descriptions.get(0).location();
+ HostLocation loc2 = providerService.descriptions.get(1).location();
+ assertNotEquals("Host location should be different", loc1, loc2);
- // the host was misheard on a spine
+ // The host was misheard on a spine. Expect no additional host description.
testProcessor.process(new TestArpPacketContext(DEV3));
- assertNull("host misheard on spine switch", providerService.spine);
+ assertThat("Host misheard on spine switch", providerService.descriptions.size(), is(2));
providerService.clear();
- // new host
+ // New host. Expect one additional host description.
testProcessor.process(new TestNaPacketContext(DEV4));
- assertNotNull("new host expected", providerService.added);
- assertNull("host motion unexpected", providerService.moved);
+ assertThat("New host expected", providerService.descriptions.size(), is(1));
- // the host moved to new switch
+ // The host moved to new switch. Expect one additional host description.
+ // The second host description should have a different location.
testProcessor.process(new TestNaPacketContext(DEV5));
- assertNotNull("host motion expected", providerService.moved);
+ assertThat("Host motion expected", providerService.descriptions.size(), is(2));
+ loc1 = providerService.descriptions.get(0).location();
+ loc2 = providerService.descriptions.get(1).location();
+ assertNotEquals("Host location should be different", loc1, loc2);
- // the host was misheard on a spine
+ // The host was misheard on a spine. Expect no additional host description.
testProcessor.process(new TestNaPacketContext(DEV6));
- assertNull("host misheard on spine switch", providerService.spine);
+ assertThat("Host misheard on spine switch", providerService.descriptions.size(), is(2));
}
@Test
@@ -275,7 +284,9 @@
@Test
public void testReceiveArp() {
testProcessor.process(new TestArpPacketContext(DEV1));
- HostDescription descr = providerService.added;
+ assertThat("testReceiveArp. One host description expected",
+ providerService.descriptions.size(), is(1));
+ HostDescription descr = providerService.descriptions.get(0);
assertThat(descr.location(), is(LOCATION));
assertThat(descr.hwAddress(), is(MAC));
assertThat(descr.ipAddress().toArray()[0], is(IP_ADDRESS));
@@ -288,7 +299,9 @@
@Test
public void testReceiveIpv4() {
testProcessor.process(new TestIpv4PacketContext(DEV1));
- HostDescription descr = providerService.added;
+ assertThat("testReceiveIpv4. One host description expected",
+ providerService.descriptions.size(), is(1));
+ HostDescription descr = providerService.descriptions.get(0);
assertThat(descr.location(), is(LOCATION));
assertThat(descr.hwAddress(), is(MAC));
assertThat(descr.ipAddress().size(), is(0));
@@ -301,8 +314,9 @@
@Test
public void testReceiveNa() {
testProcessor.process(new TestNaPacketContext(DEV4));
- assertNotNull(providerService.added);
- HostDescription descr = providerService.added;
+ assertThat("testReceiveNa. One host description expected",
+ providerService.descriptions.size(), is(1));
+ HostDescription descr = providerService.descriptions.get(0);
assertThat(descr.location(), is(LOCATION2));
assertThat(descr.hwAddress(), is(MAC2));
assertThat(descr.ipAddress().toArray()[0], is(IP_ADDRESS2));
@@ -315,7 +329,9 @@
@Test
public void testReceiveNs() {
testProcessor.process(new TestNsPacketContext(DEV4));
- HostDescription descr = providerService.added;
+ assertThat("testReceiveNs. One host description expected",
+ providerService.descriptions.size(), is(1));
+ HostDescription descr = providerService.descriptions.get(0);
assertThat(descr.location(), is(LOCATION2));
assertThat(descr.hwAddress(), is(MAC2));
assertThat(descr.ipAddress().toArray()[0], is(IP_ADDRESS2));
@@ -328,7 +344,8 @@
@Test
public void testReceivesRa() {
testProcessor.process(new TestRAPacketContext(DEV4));
- assertNull(providerService.added);
+ assertThat("testReceiveRa. No host description expected",
+ providerService.descriptions.size(), is(0));
}
/**
@@ -337,7 +354,8 @@
@Test
public void testReceiveRs() {
testProcessor.process(new TestRSPacketContext(DEV4));
- assertNull(providerService.added);
+ assertThat("testReceiveRs. No host description expected",
+ providerService.descriptions.size(), is(0));
}
/**
@@ -346,7 +364,8 @@
@Test
public void testReceiveDad() {
testProcessor.process(new TestDadPacketContext(DEV4));
- assertNull(providerService.added);
+ assertThat("testReceiveDad. No host description expected",
+ providerService.descriptions.size(), is(0));
}
/**
@@ -355,7 +374,8 @@
@Test
public void testReceiveIpv6Multicast() {
testProcessor.process(new TestIpv6McastPacketContext(DEV4));
- assertNull(providerService.added);
+ assertThat("testReceiveIpv6Multicast. No host description expected",
+ providerService.descriptions.size(), is(0));
}
/**
@@ -364,8 +384,9 @@
@Test
public void testReceiveIpv6Unicast() {
testProcessor.process(new TestIpv6PacketContext(DEV4));
- assertNotNull(providerService.added);
- HostDescription descr = providerService.added;
+ assertThat("testReceiveIpv6Unicast. One host description expected",
+ providerService.descriptions.size(), is(1));
+ HostDescription descr = providerService.descriptions.get(0);
assertThat(descr.location(), is(LOCATION2));
assertThat(descr.hwAddress(), is(MAC2));
assertThat(descr.ipAddress().size(), is(0));
@@ -402,15 +423,11 @@
extends AbstractProviderService<HostProvider>
implements HostProviderService {
- HostDescription added = null;
- HostDescription moved = null;
- HostDescription spine = null;
- public int removeCount;
+ List<HostDescription> descriptions = Lists.newArrayList();
+ int removeCount;
public void clear() {
- added = null;
- moved = null;
- spine = null;
+ descriptions.clear();
removeCount = 0;
}
@@ -420,13 +437,7 @@
@Override
public void hostDetected(HostId hostId, HostDescription hostDescription, boolean replaceIps) {
- if (added == null) {
- added = hostDescription;
- } else if ((moved == null) && hostDescription != added) {
- moved = hostDescription;
- } else {
- spine = hostDescription;
- }
+ descriptions.add(hostDescription);
}
@Override