blob: 84244542fa3fecb4ec29a347f13907e631185322 [file] [log] [blame]
Jian Li77d6e752017-01-29 23:24:18 +09001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2017-present Open Networking Foundation
Jian Li77d6e752017-01-29 23:24:18 +09003 *
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 */
16package org.onosproject.provider.lisp.mapping.impl;
17
18import com.google.common.collect.Sets;
19import org.junit.Before;
20import org.junit.Test;
21import org.onosproject.lisp.ctl.LispController;
22import org.onosproject.lisp.ctl.LispControllerAdapter;
23import org.onosproject.lisp.ctl.LispRouter;
24import org.onosproject.lisp.ctl.LispRouterListener;
25import org.onosproject.mapping.MappingProvider;
26import org.onosproject.mapping.MappingProviderRegistry;
27import org.onosproject.mapping.MappingProviderRegistryAdapter;
28import org.onosproject.mapping.MappingProviderService;
29import org.onosproject.mapping.MappingProviderServiceAdapter;
30import org.onosproject.net.provider.ProviderId;
31
32import java.util.Set;
33
34import static junit.framework.TestCase.assertFalse;
35import static org.junit.Assert.assertEquals;
36import static org.junit.Assert.assertNull;
37import static org.junit.Assert.assertTrue;
38
39/**
40 * LISP mapping provider unit test.
41 */
42public class LispMappingProviderTest {
43
44
45 private final LispMappingProvider provider = new LispMappingProvider();
46 private final LispController controller = new MockLispController();
47
48 // provider mocks
49 private final MappingProviderRegistry providerRegistry =
50 new MockMappingProviderRegistry();
51 private final MappingProviderService providerService =
52 new MockMappingProviderService();
53
54 private final Set<LispRouterListener> routerListeners = Sets.newCopyOnWriteArraySet();
55
56
57 @Before
58 public void setUp() {
59 provider.providerRegistry = providerRegistry;
60 provider.controller = controller;
61 provider.activate();
62 }
63
64 @Test
65 public void activate() throws Exception {
66 assertEquals("Provider should be registered", 1,
67 providerRegistry.getProviders().size());
68 assertTrue("LISP device provider should be registered",
69 providerRegistry.getProviders().contains(provider.id()));
70 assertEquals("Incorrect provider service",
71 providerService, provider.providerService);
72 assertEquals("LISP router listener should be registered", 1,
73 routerListeners.size());
74 }
75
76 @Test
77 public void deactivate() throws Exception {
78 provider.deactivate();
79
80 assertFalse("Provider should not be registered",
Yuta HIGUCHI1edc36b2018-01-24 23:39:06 -080081 providerRegistry.getProviders().contains(provider.id()));
Jian Li77d6e752017-01-29 23:24:18 +090082 assertNull("Provider service should be null",
83 provider.providerService);
84 assertEquals("Controller listener should be removed", 0,
85 routerListeners.size());
86 }
87
88 /**
89 * Mock class for LispController.
90 */
91 private class MockLispController extends LispControllerAdapter {
92
93 Iterable<LispRouter> routers = Sets.newHashSet();
94
95 @Override
96 public Iterable<LispRouter> getRouters() {
97 return routers;
98 }
99
100 @Override
101 public void addRouterListener(LispRouterListener listener) {
102 if (!routerListeners.contains(listener)) {
103 routerListeners.add(listener);
104 }
105 }
106
107 @Override
108 public void removeRouterListener(LispRouterListener listener) {
109 routerListeners.remove(listener);
110 }
111
112 }
113
114 /**
115 * Mock class for MappingProviderRegistry.
116 */
117 private class MockMappingProviderRegistry extends MappingProviderRegistryAdapter {
118 Set<ProviderId> providers = Sets.newHashSet();
119
120 @Override
121 public MappingProviderService register(MappingProvider provider) {
122 providers.add(provider.id());
123 return providerService;
124 }
125
126 @Override
127 public void unregister(MappingProvider provider) {
128 providers.remove(provider.id());
129 }
130
131 @Override
132 public Set<ProviderId> getProviders() {
133 return providers;
134 }
135 }
136
137 /**
138 * Mock class for MappingService.
139 */
140 private class MockMappingProviderService extends MappingProviderServiceAdapter {
141
142 }
143}