blob: 710cb08d2e916f75622c71a969214c74868db0d6 [file] [log] [blame]
tom0d395262014-09-07 16:53:40 -07001package org.onlab.onos.net.trivial.impl;
2
3import org.junit.After;
4import org.junit.Before;
5import org.junit.Test;
6import org.onlab.onos.event.Event;
7import org.onlab.onos.net.Device;
8import org.onlab.onos.net.DeviceId;
9import org.onlab.onos.net.MastershipRole;
10import org.onlab.onos.net.Port;
11import org.onlab.onos.net.PortNumber;
12import org.onlab.onos.net.device.DefaultDeviceDescription;
13import org.onlab.onos.net.device.DefaultPortDescription;
14import org.onlab.onos.net.device.DeviceAdminService;
15import org.onlab.onos.net.device.DeviceDescription;
16import org.onlab.onos.net.device.DeviceEvent;
17import org.onlab.onos.net.device.DeviceListener;
18import org.onlab.onos.net.device.DeviceProvider;
19import org.onlab.onos.net.device.DeviceProviderRegistry;
20import org.onlab.onos.net.device.DeviceProviderService;
21import org.onlab.onos.net.device.DeviceService;
22import org.onlab.onos.net.device.PortDescription;
23import org.onlab.onos.net.link.LinkAdminService;
24import org.onlab.onos.net.link.LinkEvent;
25import org.onlab.onos.net.link.LinkListener;
26import org.onlab.onos.net.link.LinkProvider;
27import org.onlab.onos.net.link.LinkProviderRegistry;
28import org.onlab.onos.net.link.LinkProviderService;
29import org.onlab.onos.net.link.LinkService;
30import org.onlab.onos.net.provider.AbstractProvider;
31import org.onlab.onos.net.provider.ProviderId;
32
33import java.util.ArrayList;
34import java.util.Iterator;
35import java.util.List;
36
37import static org.junit.Assert.*;
38import static org.onlab.onos.net.Device.Type.SWITCH;
39import static org.onlab.onos.net.DeviceId.deviceId;
40import static org.onlab.onos.net.device.DeviceEvent.Type.*;
41
42/**
43 * Test codifying the link service & link provider service contracts.
44 */
45public class SimpleLinkManagerTest {
46
47 private static final ProviderId PID = new ProviderId("foo");
48 private static final DeviceId DID1 = deviceId("of:foo");
49 private static final DeviceId DID2 = deviceId("of:bar");
50 private static final String MFR = "whitebox";
51 private static final String HW = "1.1.x";
52 private static final String SW1 = "3.8.1";
53 private static final String SW2 = "3.9.5";
54 private static final String SN = "43311-12345";
55
56 private static final PortNumber P1 = PortNumber.portNumber(1);
57 private static final PortNumber P2 = PortNumber.portNumber(2);
58 private static final PortNumber P3 = PortNumber.portNumber(3);
59
60
61 private SimpleLinkManager mgr;
62
63 protected LinkService service;
64 protected LinkAdminService admin;
65 protected LinkProviderRegistry registry;
66 protected LinkProviderService providerService;
67 protected TestProvider provider;
68 protected TestListener listener = new TestListener();
69
70 @Before
71 public void setUp() {
72 mgr = new SimpleLinkManager();
73 service = mgr;
74 admin = mgr;
75 registry = mgr;
76 mgr.eventDispatcher = new TestEventDispatcher();
77 mgr.activate();
78
79 service.addListener(listener);
80
81 provider = new TestProvider();
82 providerService = registry.register(provider);
83 assertTrue("provider should be registered",
84 registry.getProviders().contains(provider.id()));
85 }
86
87 @After
88 public void tearDown() {
89 registry.unregister(provider);
90 assertFalse("provider should not be registered",
91 registry.getProviders().contains(provider.id()));
92 service.removeListener(listener);
93 mgr.deactivate();
94 }
95
96
97 protected void validateEvents(Enum... types) {
98 int i = 0;
99 assertEquals("wrong events received", types.length, listener.events.size());
100 for (Event event : listener.events) {
101 assertEquals("incorrect event type", types[i], event.type());
102 i++;
103 }
104 listener.events.clear();
105 }
106
107
108 private class TestProvider extends AbstractProvider implements LinkProvider {
109 private Device deviceReceived;
110 private MastershipRole roleReceived;
111
112 public TestProvider() {
113 super(PID);
114 }
115 }
116
117 private static class TestListener implements LinkListener {
118 final List<LinkEvent> events = new ArrayList<>();
119
120 @Override
121 public void event(LinkEvent event) {
122 events.add(event);
123 }
124 }
125
126}