Add unit test for LISP address to check obj equality & construction
This commit adds various unit tests of LISP addresses in a way to
check object equality and construction.
This commit also makes minor changes to existing LISP address
classes to allow the test cases to pass all unit tests.
Change-Id: Ice9f9634bdd243baaf1eed1539ea8d5808dda01d
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispIpv4Address.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispIpv4Address.java
index 3a47063..31d607b 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispIpv4Address.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispIpv4Address.java
@@ -17,6 +17,8 @@
import org.onlab.packet.IpAddress;
+import java.util.Objects;
+
import static com.google.common.base.Preconditions.checkArgument;
/**
@@ -33,4 +35,23 @@
super(address, AddressFamilyIdentifierEnum.IP);
checkArgument(address.isIp4());
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj instanceof LispIpv4Address) {
+ final LispIpv4Address other = (LispIpv4Address) obj;
+ return Objects.equals(this.address, other.address) &&
+ Objects.equals(this.getAfi(), other.getAfi());
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(address, getAfi());
+ }
}
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispIpv6Address.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispIpv6Address.java
index 7c2a60e..f486d28 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispIpv6Address.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispIpv6Address.java
@@ -17,6 +17,8 @@
import org.onlab.packet.IpAddress;
+import java.util.Objects;
+
import static com.google.common.base.Preconditions.checkArgument;
/**
@@ -33,4 +35,23 @@
super(address, AddressFamilyIdentifierEnum.IP);
checkArgument(address.isIp6());
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj instanceof LispIpv6Address) {
+ final LispIpv6Address other = (LispIpv6Address) obj;
+ return Objects.equals(this.address, other.address) &&
+ Objects.equals(this.getAfi(), other.getAfi());
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(address, getAfi());
+ }
}
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java
index 09f681a..85e5a86 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java
@@ -15,6 +15,8 @@
*/
package org.onosproject.lisp.msg.types;
+import com.google.common.collect.ImmutableList;
+
import java.util.List;
import java.util.Objects;
@@ -61,6 +63,7 @@
*/
public LispListLcafAddress(List<LispAfiAddress> addresses) {
super(LispCanonicalAddressFormatEnum.LIST, LENGTH);
+ this.addresses = addresses;
}
/**
@@ -69,7 +72,7 @@
* @return a set of AFI addresses
*/
public List<LispAfiAddress> getAddresses() {
- return addresses;
+ return ImmutableList.copyOf(addresses);
}
@Override
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispMacAddress.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispMacAddress.java
index 4c0e539..3a36255 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispMacAddress.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispMacAddress.java
@@ -17,6 +17,8 @@
import org.onlab.packet.MacAddress;
+import java.util.Objects;
+
/**
* MAC address that is used by LISP Locator.
*/
@@ -50,7 +52,16 @@
@Override
public boolean equals(Object obj) {
- return address.equals(obj);
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj instanceof LispMacAddress) {
+ final LispMacAddress other = (LispMacAddress) obj;
+ return Objects.equals(this.address, other.address) &&
+ Objects.equals(this.getAfi(), other.getAfi());
+ }
+ return false;
}
@Override