[ONOS-3856] BGP flow specification component classes.
Change-Id: Ib798fe31c66813644fd7c2844682377fb5644aad
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsDestinationPortNum.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsDestinationPortNum.java
new file mode 100755
index 0000000..b9020c8
--- /dev/null
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsDestinationPortNum.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.bgpio.types;
+
+import java.util.Objects;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.onosproject.bgpio.exceptions.BgpParseException;
+import org.onosproject.bgpio.util.Constants;
+import com.google.common.base.MoreObjects;
+
+/**
+ * Provides implementation of BGP flow specification component.
+ */
+public class BgpFsDestinationPortNum implements BgpValueType {
+
+ public static final byte FLOW_SPEC_TYPE = Constants.BGP_FLOWSPEC_DST_PORT;
+ private List<BgpFsOperatorValue> operatorValue;
+
+ /**
+ * Constructor to initialize the value.
+ *
+ * @param operatorValue list of operator and value
+ */
+ public BgpFsDestinationPortNum(List<BgpFsOperatorValue> operatorValue) {
+ this.operatorValue = operatorValue;
+ }
+
+ @Override
+ public short getType() {
+ return this.FLOW_SPEC_TYPE;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(operatorValue);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof BgpFsDestinationPortNum) {
+ BgpFsDestinationPortNum other = (BgpFsDestinationPortNum) obj;
+ return this.operatorValue.equals(other.operatorValue);
+ }
+ return false;
+ }
+
+ @Override
+ public int write(ChannelBuffer cb) {
+ int iLenStartIndex = cb.writerIndex();
+ cb.writeByte(FLOW_SPEC_TYPE);
+
+ for (BgpFsOperatorValue fsOperVal : operatorValue) {
+ cb.writeByte(fsOperVal.option());
+ cb.writeBytes(fsOperVal.value());
+ }
+
+ return cb.writerIndex() - iLenStartIndex;
+ }
+
+ /**
+ * Reads the channel buffer and returns object.
+ *
+ * @param cb channelBuffer
+ * @param type address type
+ * @return object of flow spec destination port number
+ * @throws BgpParseException while parsing BgpFsDestinationPortNum
+ */
+ public static BgpFsDestinationPortNum read(ChannelBuffer cb, short type) throws BgpParseException {
+ return null;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(getClass())
+ .add("FLOW_SPEC_TYPE", FLOW_SPEC_TYPE)
+ .add("operatorValue", operatorValue).toString();
+ }
+
+ @Override
+ public int compareTo(Object o) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+}
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsDestinationPrefix.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsDestinationPrefix.java
new file mode 100755
index 0000000..63a6898
--- /dev/null
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsDestinationPrefix.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.bgpio.types;
+
+import java.nio.ByteBuffer;
+import java.util.Objects;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.onlab.packet.IpPrefix;
+import org.onosproject.bgpio.exceptions.BgpParseException;
+import org.onosproject.bgpio.util.Constants;
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Preconditions;
+
+/**
+ * Provides implementation of IPv4AddressTlv.
+ */
+public class BgpFsDestinationPrefix implements BgpValueType {
+
+ public static final byte FLOW_SPEC_TYPE = Constants.BGP_FLOWSPEC_DST_PREFIX;
+ private byte length;
+ private IpPrefix ipPrefix;
+
+ /**
+ * Constructor to initialize parameters.
+ *
+ * @param length length of the prefix
+ * @param ipPrefix ip prefix
+ */
+ public BgpFsDestinationPrefix(byte length, IpPrefix ipPrefix) {
+ this.ipPrefix = Preconditions.checkNotNull(ipPrefix);
+ this.length = length;
+ }
+
+ /**
+ * Returns ip prefix.
+ *
+ * @return ipPrefix ip prefix
+ */
+ public IpPrefix ipPrefix() {
+ return ipPrefix;
+ }
+
+ @Override
+ public short getType() {
+ return FLOW_SPEC_TYPE;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(ipPrefix);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof BgpFsDestinationPrefix) {
+ BgpFsDestinationPrefix other = (BgpFsDestinationPrefix) obj;
+ return Objects.equals(this.ipPrefix, other.ipPrefix);
+ }
+ return false;
+ }
+
+ @Override
+ public int write(ChannelBuffer cb) {
+ int iLenStartIndex = cb.writerIndex();
+ cb.writeByte(FLOW_SPEC_TYPE);
+ cb.writeByte(length);
+ cb.writeInt(ipPrefix.getIp4Prefix().address().toInt());
+ return cb.writerIndex() - iLenStartIndex;
+ }
+
+ /**
+ * Reads the channel buffer and returns object of IPv4AddressTlv.
+ *
+ * @param cb channelBuffer
+ * @param type address type
+ * @return object of flow spec destination prefix
+ * @throws BgpParseException while parsing BgpFsDestinationPrefix
+ */
+ public static BgpFsDestinationPrefix read(ChannelBuffer cb, short type) throws BgpParseException {
+ return null;
+ }
+
+ /**
+ * Returns object of this class with specified values.
+ *
+ * @param ipPrefix ip prefix
+ * @param length length of ip prefix
+ * @return object of this class
+ */
+ public static BgpFsDestinationPrefix of(final IpPrefix ipPrefix, final byte length) {
+ return new BgpFsDestinationPrefix(length, ipPrefix);
+ }
+
+ @Override
+ public int compareTo(Object o) {
+ if (this.equals(o)) {
+ return 0;
+ }
+
+ if (o instanceof BgpFsDestinationPrefix) {
+ BgpFsDestinationPrefix that = (BgpFsDestinationPrefix) o;
+
+ if (this.ipPrefix().prefixLength() == that.ipPrefix().prefixLength()) {
+ ByteBuffer value1 = ByteBuffer.wrap(this.ipPrefix.address().toOctets());
+ ByteBuffer value2 = ByteBuffer.wrap(that.ipPrefix.address().toOctets());
+ return value1.compareTo(value2);
+ }
+
+ if (this.ipPrefix().prefixLength() > that.ipPrefix().prefixLength()) {
+ return 1;
+ } else if (this.ipPrefix().prefixLength() < that.ipPrefix().prefixLength()) {
+ return -1;
+ }
+ }
+ return 1;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(getClass())
+ .add("FLOW_SPEC_TYPE", FLOW_SPEC_TYPE)
+ .add("length", length)
+ .add("ipPrefix", ipPrefix).toString();
+ }
+}
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsDscpValue.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsDscpValue.java
new file mode 100755
index 0000000..e383399
--- /dev/null
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsDscpValue.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.bgpio.types;
+
+import java.util.Objects;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.onosproject.bgpio.exceptions.BgpParseException;
+import org.onosproject.bgpio.util.Constants;
+import com.google.common.base.MoreObjects;
+
+/**
+ * Provides implementation of BGP flow specification component.
+ */
+public class BgpFsDscpValue implements BgpValueType {
+
+ public static final byte FLOW_SPEC_TYPE = Constants.BGP_FLOWSPEC_DSCP;
+ private List<BgpFsOperatorValue> operatorValue;
+
+ /**
+ * Constructor to initialize the value.
+ *
+ * @param operatorValue list of operator and value
+ */
+ public BgpFsDscpValue(List<BgpFsOperatorValue> operatorValue) {
+ this.operatorValue = operatorValue;
+ }
+
+ @Override
+ public short getType() {
+ return this.FLOW_SPEC_TYPE;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(operatorValue);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof BgpFsDscpValue) {
+ BgpFsDscpValue other = (BgpFsDscpValue) obj;
+ return this.operatorValue.equals(other.operatorValue);
+ }
+ return false;
+ }
+
+ @Override
+ public int write(ChannelBuffer cb) {
+ int iLenStartIndex = cb.writerIndex();
+
+ cb.writeByte(FLOW_SPEC_TYPE);
+
+ for (BgpFsOperatorValue fsOperVal : operatorValue) {
+ cb.writeByte(fsOperVal.option());
+ cb.writeBytes(fsOperVal.value());
+ }
+
+ return cb.writerIndex() - iLenStartIndex;
+ }
+
+ /**
+ * Reads the channel buffer and returns object.
+ *
+ * @param cb channelBuffer
+ * @param type address type
+ * @return object of flow spec DSCP value
+ * @throws BgpParseException while parsing BgpFsDscpValue
+ */
+ public static BgpFsDscpValue read(ChannelBuffer cb, short type) throws BgpParseException {
+ return null;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(getClass())
+ .add("FLOW_SPEC_TYPE", FLOW_SPEC_TYPE)
+ .add("operatorValue", operatorValue).toString();
+ }
+
+ @Override
+ public int compareTo(Object o) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+}
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsFragment.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsFragment.java
new file mode 100755
index 0000000..4c6bf79
--- /dev/null
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsFragment.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.bgpio.types;
+
+import java.util.Objects;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.onosproject.bgpio.exceptions.BgpParseException;
+import org.onosproject.bgpio.util.Constants;
+
+import com.google.common.base.MoreObjects;
+
+/**
+ * Provides implementation of BGP flow specification component.
+ */
+public class BgpFsFragment implements BgpValueType {
+ public static final byte FLOW_SPEC_TYPE = Constants.BGP_FLOWSPEC_FRAGMENT;
+ private List<BgpFsOperatorValue> operatorValue;
+
+ /**
+ * Constructor to initialize the value.
+ *
+ * @param operatorValue list of operator and value
+ */
+ public BgpFsFragment(List<BgpFsOperatorValue> operatorValue) {
+ this.operatorValue = operatorValue;
+ }
+
+ @Override
+ public short getType() {
+ return this.FLOW_SPEC_TYPE;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(operatorValue);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof BgpFsFragment) {
+ BgpFsFragment other = (BgpFsFragment) obj;
+ return this.operatorValue.equals(other.operatorValue);
+ }
+ return false;
+ }
+
+ @Override
+ public int write(ChannelBuffer cb) {
+ int iLenStartIndex = cb.writerIndex();
+
+ cb.writeByte(FLOW_SPEC_TYPE);
+
+ for (BgpFsOperatorValue fsOperVal : operatorValue) {
+ cb.writeByte(fsOperVal.option());
+ cb.writeBytes(fsOperVal.value());
+ }
+
+ return cb.writerIndex() - iLenStartIndex;
+ }
+
+ /**
+ * Reads the channel buffer and returns object.
+ *
+ * @param cb channelBuffer
+ * @param type address type
+ * @return object of flow spec fragment
+ * @throws BgpParseException while parsing BgpFsFragment
+ */
+ public static BgpFsFragment read(ChannelBuffer cb, short type) throws BgpParseException {
+ return null;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(getClass())
+ .add("FLOW_SPEC_TYPE", FLOW_SPEC_TYPE)
+ .add("operatorValue", operatorValue).toString();
+ }
+
+ @Override
+ public int compareTo(Object o) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+}
diff --git a/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPortNumTest.java b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPortNumTest.java
new file mode 100644
index 0000000..abd5351
--- /dev/null
+++ b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPortNumTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.bgpio.types;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Test for destination port number flow specification component.
+ */
+public class BgpFsDestinationPortNumTest {
+ List<BgpFsOperatorValue> operatorValue1 = new ArrayList<>();
+ List<BgpFsOperatorValue> operatorValue2 = new ArrayList<>();
+
+ @Test
+ public void testEquality() {
+ operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+ operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+ operatorValue2.add(new BgpFsOperatorValue((byte) 2, new byte[100]));
+ operatorValue2.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+
+ BgpFsDestinationPortNum tlv1 = new BgpFsDestinationPortNum(operatorValue1);
+ BgpFsDestinationPortNum sameAsTlv1 = new BgpFsDestinationPortNum(operatorValue1);
+ BgpFsDestinationPortNum tlv2 = new BgpFsDestinationPortNum(operatorValue2);
+
+ new EqualsTester()
+ .addEqualityGroup(tlv1, sameAsTlv1)
+ .addEqualityGroup(tlv2)
+ .testEquals();
+ }
+}
diff --git a/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPrefixTest.java b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPrefixTest.java
new file mode 100644
index 0000000..cf5f95f
--- /dev/null
+++ b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPrefixTest.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.bgpio.types;
+
+import org.junit.Test;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.IpPrefix;
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Test for destination prefix flow specification component.
+ */
+public class BgpFsDestinationPrefixTest {
+ private final byte length = 4;
+
+ private final IpPrefix prefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.1"), 32);
+
+ private final byte length2 = 4;
+ private final IpPrefix prefix2 = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.2"), 32);
+
+ private final BgpFsDestinationPrefix tlv1 = new BgpFsDestinationPrefix(length, prefix);
+ private final BgpFsDestinationPrefix sameAsTlv1 = new BgpFsDestinationPrefix(length, prefix);
+ private final BgpFsDestinationPrefix tlv2 = new BgpFsDestinationPrefix(length2, prefix2);
+
+ @Test
+ public void testEquality() {
+ new EqualsTester()
+ .addEqualityGroup(tlv1, sameAsTlv1)
+ .addEqualityGroup(tlv2)
+ .testEquals();
+ }
+}
diff --git a/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDscpValueTest.java b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDscpValueTest.java
new file mode 100644
index 0000000..03e0bfe
--- /dev/null
+++ b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDscpValueTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.bgpio.types;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Test for DSCP value flow specification component.
+ */
+public class BgpFsDscpValueTest {
+ List<BgpFsOperatorValue> operatorValue1 = new ArrayList<>();
+ List<BgpFsOperatorValue> operatorValue2 = new ArrayList<>();
+
+ @Test
+ public void testEquality() {
+ operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+ operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+ operatorValue2.add(new BgpFsOperatorValue((byte) 2, new byte[100]));
+ operatorValue2.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+
+ BgpFsDscpValue tlv1 = new BgpFsDscpValue(operatorValue1);
+ BgpFsDscpValue sameAsTlv1 = new BgpFsDscpValue(operatorValue1);
+ BgpFsDscpValue tlv2 = new BgpFsDscpValue(operatorValue2);
+
+ new EqualsTester()
+ .addEqualityGroup(tlv1, sameAsTlv1)
+ .addEqualityGroup(tlv2)
+ .testEquals();
+ }
+}
diff --git a/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsFragmentTest.java b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsFragmentTest.java
new file mode 100644
index 0000000..0cd04be
--- /dev/null
+++ b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsFragmentTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.bgpio.types;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Test for fragment flow specification component.
+ */
+public class BgpFsFragmentTest {
+ List<BgpFsOperatorValue> operatorValue1 = new ArrayList<>();
+ List<BgpFsOperatorValue> operatorValue2 = new ArrayList<>();
+
+ @Test
+ public void testEquality() {
+ operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+ operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+ operatorValue2.add(new BgpFsOperatorValue((byte) 2, new byte[100]));
+ operatorValue2.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+
+ BgpFsFragment tlv1 = new BgpFsFragment(operatorValue1);
+ BgpFsFragment sameAsTlv1 = new BgpFsFragment(operatorValue1);
+ BgpFsFragment tlv2 = new BgpFsFragment(operatorValue2);
+
+ new EqualsTester()
+ .addEqualityGroup(tlv1, sameAsTlv1)
+ .addEqualityGroup(tlv2)
+ .testEquals();
+ }
+}