blob: 97e4a59183c077133489c868e17e778824013651 [file] [log] [blame]
/*
* Copyright 2014-present 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.net.device;
import org.junit.Test;
import org.onlab.packet.ChassisId;
import org.onosproject.net.DefaultAnnotations;
import org.onosproject.net.Device;
import java.net.URI;
import com.google.common.testing.EqualsTester;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutableBaseClass;
import static org.onosproject.net.Device.Type.ROADM;
import static org.onosproject.net.Device.Type.ROUTER;
import static org.onosproject.net.Device.Type.SWITCH;
/**
* Test of the default device description.
*/
public class DefaultDeviceDescriptionTest {
private static final URI DURI = URI.create("of:foo");
private static final String MFR = "whitebox";
private static final String HW = "1.1.x";
private static final String SW = "3.9.1";
private static final String SN = "43311-12345";
private static final ChassisId CID = new ChassisId();
private static final DefaultAnnotations DA =
DefaultAnnotations.builder().set("Key", "Value").build();
private static final URI DURI2 = URI.create("of:foo2");
private static final String MFR2 = "whitebox2";
private static final String HW2 = "1.1.x2";
private static final String SW2 = "3.9.12";
private static final String SN2 = "43311-123452";
private static final ChassisId CID2 = new ChassisId(2);
private static final DefaultAnnotations DA2 =
DefaultAnnotations.builder().set("2ndKey", "2ndValue").build();
private void checkValues(DeviceDescription device,
URI uri,
Device.Type type,
String manufacturer,
String hw,
String sw,
String serial,
String containsUri,
long chassisId,
String annotationsString,
boolean defaultAvailable) {
assertEquals("incorrect uri", uri, device.deviceUri());
assertEquals("incorrect type", type, device.type());
assertEquals("incorrect manufacturer", device.manufacturer(), manufacturer);
assertEquals("incorrect hw", device.hwVersion(), hw);
assertEquals("incorrect sw", device.swVersion(), sw);
assertEquals("incorrect serial", device.serialNumber(), serial);
assertTrue("incorrect toString", device.toString().contains(containsUri));
assertTrue("Incorrect chassis",
device.chassisId() == null ? chassisId == 0 :
chassisId == device.chassisId().value());
assertTrue("incorrect annotations", device.toString().contains(annotationsString));
assertEquals("incorrect default available", defaultAvailable, device.isDefaultAvailable());
}
@Test
public void basics() {
DeviceDescription device =
new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA);
checkValues(device, DURI, SWITCH, MFR, HW, SW, SN, "uri=of:foo",
CID.value(), "Key=Value", true);
}
/**
* Tests equals, hashCode, and toString.
*/
@Test
public void testEquals() {
DeviceDescription device1 =
new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA);
DeviceDescription sameAsDevice1 =
new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA);
DeviceDescription device2 =
new DefaultDeviceDescription(DURI2, SWITCH, MFR, HW, SW, SN, CID, DA);
DeviceDescription device3 =
new DefaultDeviceDescription(DURI, ROUTER, MFR2, HW, SW, SN, CID, DA);
DeviceDescription device4 =
new DefaultDeviceDescription(DURI, SWITCH, MFR, HW2, SW, SN, CID, DA);
DeviceDescription device5 =
new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW2, SN, CID, DA);
DeviceDescription device6 =
new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN2, CID, DA);
DeviceDescription device7 =
new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID2, DA);
DeviceDescription device8 =
new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA2);
new EqualsTester()
.addEqualityGroup(device1, sameAsDevice1)
.addEqualityGroup(device2)
.addEqualityGroup(device3)
.addEqualityGroup(device4)
.addEqualityGroup(device5)
.addEqualityGroup(device6)
.addEqualityGroup(device7)
.addEqualityGroup(device8)
.testEquals();
}
/**
* Tests base + annotations constructor.
*/
@Test
public void testConstructorWithBaseAndAnnotations() {
DeviceDescription base =
new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA);
DeviceDescription device = new DefaultDeviceDescription(base, DA2);
checkValues(device, DURI, SWITCH, MFR, HW, SW, SN, "uri=of:foo",
CID.value(), "2ndKey=2ndValue", true);
}
/**
* Tests base + type + annotations constructor.
*/
@Test
public void testConstructorWithBaseAndType() {
DeviceDescription base =
new DefaultDeviceDescription(DURI, ROADM, MFR, HW, SW, SN, CID, DA);
DeviceDescription device = new DefaultDeviceDescription(base, ROADM, DA);
checkValues(device, DURI, ROADM, MFR, HW, SW, SN, "uri=of:foo",
CID.value(), "Key=Value", true);
}
/**
* Tests base + annotations + isDefaultAvailable constructor.
*/
@Test
public void testConstructorWithBaseAndIsDefault() {
DeviceDescription base =
new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID, DA);
DeviceDescription device = new DefaultDeviceDescription(base, false, DA2);
checkValues(device, DURI, SWITCH, MFR, HW, SW, SN, "uri=of:foo",
CID.value(), "2ndKey=2ndValue", false);
}
/**
* Tests empty constructor.
*/
@Test
public void testBareConstructor() {
DeviceDescription device = new DefaultDeviceDescription();
checkValues(device, null, null, null, null, null, null, "uri=null",
CID.value(), "", true);
assertEquals("incorrect uri", null, device.deviceUri());
assertEquals("incorrect type", null, device.type());
assertEquals("incorrect manufacturer", null, device.manufacturer());
assertEquals("incorrect hw", null, device.hwVersion());
assertEquals("incorrect sw", null, device.swVersion());
assertEquals("incorrect serial", null, device.serialNumber());
assertEquals("Incorrect chassis", null, device.chassisId());
assertEquals("incorrect annotations", null, device.annotations());
assertTrue("incorrect default available", device.isDefaultAvailable());
}
/**
* Tests immutability.
*/
@Test
public void testImmutable() {
assertThatClassIsImmutableBaseClass(DefaultDeviceDescription.class);
}
}