/*
* Copyright (c) 2013 Big Switch Networks, Inc.
*
* Licensed under the Eclipse Public License, Version 1.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.eclipse.org/legal/epl-v10.html
*
* 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.sdnplatform.netvirt.core;
import static org.junit.Assert.assertEquals;
import static org.easymock.EasyMock.*;
import org.junit.Before;
import org.junit.Test;
import org.sdnplatform.devicegroup.AbstractDeviceGroupContractTEST;
import org.sdnplatform.devicegroup.IDeviceGroup;
import org.sdnplatform.devicemanager.IDevice;
import org.sdnplatform.netvirt.core.VNS;
import org.sdnplatform.netvirt.core.VNS.ARPMode;
import org.sdnplatform.netvirt.core.VNS.BroadcastMode;
import org.sdnplatform.netvirt.core.VNS.DHCPMode;
public class NetVirtTest extends AbstractDeviceGroupContractTEST {
protected VNS netVirt;
// TODO: test getters/setters
@Before
public void setUp() {
netVirt = new VNS("netVirtFoobar");
}
@Override
protected IDeviceGroup allocateDeviceGroup() {
return new VNS("netVirt");
}
@Test
public void testMarked() {
netVirt.setMarked(false);
assertEquals(false, netVirt.isMarked());
netVirt.setMarked(true);
assertEquals(true, netVirt.isMarked());
}
@Test
public void testDefaultValues() {
assertEquals(DHCPMode.FLOOD_IF_UNKNOWN, netVirt.getDhcpManagerMode());
assertEquals(ARPMode.FLOOD_IF_UNKNOWN, netVirt.getArpManagerMode());
assertEquals(BroadcastMode.FORWARD_TO_KNOWN, netVirt.getBroadcastMode());
assertEquals(0, netVirt.getDhcpIp());
assertEquals(0, netVirt.getKnownDevices().size());
}
@Test
public void knownDevices() {
IDevice d1 = createMock(IDevice.class);
IDevice d2 = createMock(IDevice.class);
IDevice d3 = createMock(IDevice.class);
IDevice d1b = createMock(IDevice.class);
expect(d1.getDeviceKey()).andReturn(1L).atLeastOnce();
expect(d2.getDeviceKey()).andReturn(2L).atLeastOnce();
expect(d3.getDeviceKey()).andReturn(3L).atLeastOnce();
expect(d1b.getDeviceKey()).andReturn(1L).atLeastOnce();
replay(d1, d2, d3, d1b);
netVirt.addDevice(d1);
assertEquals(1, netVirt.getKnownDevices().size());
assertEquals(true, netVirt.getKnownDevices().contains(d1.getDeviceKey()));
assertEquals(false, netVirt.getKnownDevices().contains(d2.getDeviceKey()));
netVirt.addDevice(d1); // no-op
assertEquals(1, netVirt.getKnownDevices().size());
netVirt.addDevice(d1b); // no-op
assertEquals(1, netVirt.getKnownDevices().size());
netVirt.addDevice(d2);
assertEquals(2, netVirt.getKnownDevices().size());
assertEquals(true, netVirt.getKnownDevices().contains(d1.getDeviceKey()));
assertEquals(true, netVirt.getKnownDevices().contains(d2.getDeviceKey()));
netVirt.addDevice(d3);
assertEquals(3, netVirt.getKnownDevices().size());
assertEquals(true, netVirt.getKnownDevices().contains(d1.getDeviceKey()));
assertEquals(true, netVirt.getKnownDevices().contains(d2.getDeviceKey()));
assertEquals(true, netVirt.getKnownDevices().contains(d3.getDeviceKey()));
netVirt.removeDevice(d1b.getDeviceKey());
assertEquals(2, netVirt.getKnownDevices().size());
assertEquals(false, netVirt.getKnownDevices().contains(d1.getDeviceKey()));
assertEquals(true, netVirt.getKnownDevices().contains(d2.getDeviceKey()));
assertEquals(true, netVirt.getKnownDevices().contains(d3.getDeviceKey()));
netVirt.removeAllDevices();
assertEquals(0, netVirt.getKnownDevices().size());
verify(d1, d2, d3, d1b);
}
}