blob: adfbdc7f56e8025aa05a81e0ebac34d404d6e46e [file] [log] [blame]
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07001/*
2 * Copyright 2014 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
tom132b58a2014-08-28 16:11:28 -070016package org.onlab.onos.net.provider;
17
18import org.junit.Test;
19
20import static org.hamcrest.MatcherAssert.assertThat;
21import static org.junit.Assert.assertEquals;
22
23/**
24 * Test of the base provider registry.
25 */
26public class AbstractProviderRegistryTest {
27
28 private class TestProviderService extends AbstractProviderService<TestProvider> {
29 protected TestProviderService(TestProvider provider) {
30 super(provider);
31 }
32 }
33
34 private class TestProviderRegistry extends AbstractProviderRegistry<TestProvider, TestProviderService> {
35 @Override
36 protected TestProviderService createProviderService(TestProvider provider) {
37 return new TestProviderService(provider);
38 }
39 }
40
41 @Test
42 public void basics() {
43 TestProviderRegistry registry = new TestProviderRegistry();
44 assertEquals("incorrect provider count", 0, registry.getProviders().size());
45
tom7e02cda2014-09-18 12:05:46 -070046 ProviderId fooId = new ProviderId("of", "foo");
tom132b58a2014-08-28 16:11:28 -070047 TestProvider pFoo = new TestProvider(fooId);
48 TestProviderService psFoo = registry.register(pFoo);
49 assertEquals("incorrect provider count", 1, registry.getProviders().size());
50 assertThat("provider not found", registry.getProviders().contains(fooId));
51 assertEquals("incorrect provider", psFoo.provider(), pFoo);
52
toma5368862014-10-01 12:35:48 -070053 ProviderId barId = new ProviderId("snmp", "bar");
tom132b58a2014-08-28 16:11:28 -070054 TestProvider pBar = new TestProvider(barId);
55 TestProviderService psBar = registry.register(pBar);
56 assertEquals("incorrect provider count", 2, registry.getProviders().size());
57 assertThat("provider not found", registry.getProviders().contains(barId));
58 assertEquals("incorrect provider", psBar.provider(), pBar);
59
60 psFoo.checkValidity();
61 registry.unregister(pFoo);
62 psBar.checkValidity();
63 assertEquals("incorrect provider count", 1, registry.getProviders().size());
64 assertThat("provider not found", registry.getProviders().contains(barId));
65 }
66
toma5368862014-10-01 12:35:48 -070067 @Test
68 public void ancillaryProviders() {
69 TestProviderRegistry registry = new TestProviderRegistry();
70 TestProvider pFoo = new TestProvider(new ProviderId("of", "foo"));
71 TestProvider pBar = new TestProvider(new ProviderId("of", "bar", true));
72 registry.register(pFoo);
73 registry.register(pBar);
74 assertEquals("incorrect provider count", 2, registry.getProviders().size());
75 }
76
tom132b58a2014-08-28 16:11:28 -070077 @Test(expected = IllegalStateException.class)
78 public void duplicateRegistration() {
79 TestProviderRegistry registry = new TestProviderRegistry();
tom7e02cda2014-09-18 12:05:46 -070080 TestProvider pFoo = new TestProvider(new ProviderId("of", "foo"));
tom132b58a2014-08-28 16:11:28 -070081 registry.register(pFoo);
82 registry.register(pFoo);
83 }
84
toma5368862014-10-01 12:35:48 -070085 @Test(expected = IllegalStateException.class)
86 public void duplicateSchemeRegistration() {
87 TestProviderRegistry registry = new TestProviderRegistry();
88 TestProvider pFoo = new TestProvider(new ProviderId("of", "foo"));
89 TestProvider pBar = new TestProvider(new ProviderId("of", "bar"));
90 registry.register(pFoo);
91 registry.register(pBar);
92 }
93
tom132b58a2014-08-28 16:11:28 -070094 @Test
95 public void voidUnregistration() {
96 TestProviderRegistry registry = new TestProviderRegistry();
tom7e02cda2014-09-18 12:05:46 -070097 registry.unregister(new TestProvider(new ProviderId("of", "foo")));
tom132b58a2014-08-28 16:11:28 -070098 }
99
100 @Test(expected = IllegalStateException.class)
101 public void unregistration() {
102 TestProviderRegistry registry = new TestProviderRegistry();
tom7e02cda2014-09-18 12:05:46 -0700103 TestProvider pFoo = new TestProvider(new ProviderId("of", "foo"));
tom132b58a2014-08-28 16:11:28 -0700104 TestProviderService psFoo = registry.register(pFoo);
105 registry.unregister(pFoo);
106 psFoo.checkValidity();
107 }
108}