blob: abbe5be0dc1a053d7141765e5340d75d3d18638e [file] [log] [blame]
tom132b58a2014-08-28 16:11:28 -07001package org.onlab.onos.net.provider;
2
3import org.junit.Test;
4
5import static org.hamcrest.MatcherAssert.assertThat;
6import static org.junit.Assert.assertEquals;
7
8/**
9 * Test of the base provider registry.
10 */
11public class AbstractProviderRegistryTest {
12
13 private class TestProviderService extends AbstractProviderService<TestProvider> {
14 protected TestProviderService(TestProvider provider) {
15 super(provider);
16 }
17 }
18
19 private class TestProviderRegistry extends AbstractProviderRegistry<TestProvider, TestProviderService> {
20 @Override
21 protected TestProviderService createProviderService(TestProvider provider) {
22 return new TestProviderService(provider);
23 }
24 }
25
26 @Test
27 public void basics() {
28 TestProviderRegistry registry = new TestProviderRegistry();
29 assertEquals("incorrect provider count", 0, registry.getProviders().size());
30
31 ProviderId fooId = new ProviderId("foo");
32 TestProvider pFoo = new TestProvider(fooId);
33 TestProviderService psFoo = registry.register(pFoo);
34 assertEquals("incorrect provider count", 1, registry.getProviders().size());
35 assertThat("provider not found", registry.getProviders().contains(fooId));
36 assertEquals("incorrect provider", psFoo.provider(), pFoo);
37
38 ProviderId barId = new ProviderId("bar");
39 TestProvider pBar = new TestProvider(barId);
40 TestProviderService psBar = registry.register(pBar);
41 assertEquals("incorrect provider count", 2, registry.getProviders().size());
42 assertThat("provider not found", registry.getProviders().contains(barId));
43 assertEquals("incorrect provider", psBar.provider(), pBar);
44
45 psFoo.checkValidity();
46 registry.unregister(pFoo);
47 psBar.checkValidity();
48 assertEquals("incorrect provider count", 1, registry.getProviders().size());
49 assertThat("provider not found", registry.getProviders().contains(barId));
50 }
51
52 @Test(expected = IllegalStateException.class)
53 public void duplicateRegistration() {
54 TestProviderRegistry registry = new TestProviderRegistry();
55 TestProvider pFoo = new TestProvider(new ProviderId("foo"));
56 registry.register(pFoo);
57 registry.register(pFoo);
58 }
59
60 @Test
61 public void voidUnregistration() {
62 TestProviderRegistry registry = new TestProviderRegistry();
63 registry.unregister(new TestProvider(new ProviderId("foo")));
64 }
65
66 @Test(expected = IllegalStateException.class)
67 public void unregistration() {
68 TestProviderRegistry registry = new TestProviderRegistry();
69 TestProvider pFoo = new TestProvider(new ProviderId("foo"));
70 TestProviderService psFoo = registry.register(pFoo);
71 registry.unregister(pFoo);
72 psFoo.checkValidity();
73 }
74}