Skip to content

Commit 728db6c

Browse files
committed
Network-refactor: fix bugs in components.xml discovered by unit tests
Provide injection tests for NetworkManager and FirewallManager Signed-off-by: Chiradeep Vittal <[email protected]>
1 parent 1339650 commit 728db6c

5 files changed

Lines changed: 98 additions & 7 deletions

File tree

‎client/tomcatconf/components.xml.in‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,47 +161,55 @@ under the License.
161161
</adapters>
162162
<adapters key="com.cloud.network.element.FirewallServiceProvider">
163163
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
164+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
164165
</adapters>
165166
<adapters key="com.cloud.network.element.DhcpServiceProvider">
166167
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
167168
<adapter name="ExternalDhcpElement" class="com.cloud.network.element.ExternalDhcpElement"/>
169+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
168170
</adapters>
169171
<adapters key="com.cloud.network.element.UserDataServiceProvider">
170172
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
173+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
171174
</adapters>
172175
<adapters key="com.cloud.network.element.SourceNatServiceProvider">
173176
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
177+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
174178
<adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/>
175179
</adapters>
176180
<adapters key="com.cloud.network.element.StaticNatServiceProvider">
177181
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
182+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
178183
<adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/>
179184
</adapters>
180185
<adapters key="com.cloud.network.element.PortForwardingServiceProvider">
181186
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
187+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
182188
<adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/>
183189
</adapters>
184190
<adapters key="com.cloud.network.element.LoadBalancingServiceProvider">
185191
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
192+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
186193
</adapters>
187194
<adapters key="com.cloud.network.element.RemoteAccessVPNServiceProvider">
188195
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
189196
</adapters>
190197
<adapters key="com.cloud.network.element.Site2SiteVpnServiceProvider">
191-
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement" />
198+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
192199
</adapters>
193200
<adapters key="com.cloud.network.element.IpDeployer">
194201
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
202+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
195203
<adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/>
196204
</adapters>
197205
<adapters key="com.cloud.network.element.ConnectivityProvider">
198206
<adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/>
199207
</adapters>
200208
<adapters key="com.cloud.network.element.NetworkACLServiceProvider">
201-
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
209+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
202210
</adapters>
203211
<adapters key="com.cloud.network.element.VpcProvider">
204-
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
212+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
205213
</adapters>
206214

207215
<adapters key="com.cloud.cluster.agentlb.AgentLoadBalancerPlanner">

‎server/src/com/cloud/network/element/VpcVirtualRouterElement.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
@Local(value = {NetworkElement.class, FirewallServiceProvider.class,
6464
DhcpServiceProvider.class, UserDataServiceProvider.class,
6565
StaticNatServiceProvider.class, LoadBalancingServiceProvider.class,
66-
PortForwardingServiceProvider.class, IpDeployer.class,
66+
PortForwardingServiceProvider.class, IpDeployer.class, VpcProvider.class,
6767
Site2SiteVpnServiceProvider.class, NetworkACLServiceProvider.class})
6868
public class VpcVirtualRouterElement extends VirtualRouterElement implements VpcProvider, Site2SiteVpnServiceProvider, NetworkACLServiceProvider{
6969
private static final Logger s_logger = Logger.getLogger(VpcVirtualRouterElement.class);

‎server/test/com/cloud/network/NetworkManagerTest.java‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,21 @@
2020

2121
import junit.framework.Assert;
2222

23+
import org.apache.log4j.Logger;
2324
import org.junit.Test;
2425

2526
import com.cloud.network.element.DhcpServiceProvider;
2627
import com.cloud.network.element.IpDeployer;
2728
import com.cloud.network.firewall.FirewallManagerImpl;
29+
import com.cloud.network.firewall.FirewallManagerTest;
2830
import com.cloud.network.rules.FirewallManager;
2931
import com.cloud.utils.component.ComponentLocator;
3032
import com.cloud.utils.testcase.ComponentSetup;
3133
import com.cloud.utils.testcase.ComponentTestCase;
3234

3335
@ComponentSetup(managerName="management-server", setupXml="network-mgr-component.xml")
3436
public class NetworkManagerTest extends ComponentTestCase {
37+
private static final Logger s_logger = Logger.getLogger(NetworkManagerTest.class);
3538

3639
@Test
3740
public void testInjected() {
@@ -42,11 +45,16 @@ public void testInjected() {
4245
Assert.assertNotNull(networkMgr._networkModel);
4346

4447
Assert.assertNotNull(networkMgr._ipDeployers.get("VirtualRouter"));
48+
Assert.assertNotNull(networkMgr._ipDeployers.get("VpcVirtualRouter"));
49+
4550
Assert.assertNotNull(networkMgr._dhcpProviders.get("VirtualRouter"));
51+
Assert.assertNotNull(networkMgr._dhcpProviders.get("VpcVirtualRouter"));
52+
4653

4754
Assert.assertTrue(networkMgr._ipDeployers.get("VirtualRouter") instanceof IpDeployer);
4855
Assert.assertTrue(networkMgr._dhcpProviders.get("VirtualRouter") instanceof DhcpServiceProvider);
4956

57+
s_logger.info("Done testing injection of network manager's network elements");
5058

5159
}
5260

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// Licensed to the Apache Software Foundation (ASF) under one
2+
// or more contributor license agreements. See the NOTICE file
3+
// distributed with this work for additional information
4+
// regarding copyright ownership. The ASF licenses this file
5+
// to you under the Apache License, Version 2.0 (the
6+
// "License"); you may not use this file except in compliance
7+
// with the License. You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing,
12+
// software distributed under the License is distributed on an
13+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
// KIND, either express or implied. See the License for the
15+
// specific language governing permissions and limitations
16+
// under the License.
17+
18+
package com.cloud.network.firewall;
19+
20+
21+
import junit.framework.Assert;
22+
23+
import org.apache.log4j.Logger;
24+
import org.junit.Test;
25+
26+
import com.cloud.network.element.FirewallServiceProvider;
27+
import com.cloud.network.element.NetworkACLServiceProvider;
28+
import com.cloud.network.element.PortForwardingServiceProvider;
29+
import com.cloud.network.element.StaticNatServiceProvider;
30+
import com.cloud.network.rules.FirewallManager;
31+
import com.cloud.utils.component.ComponentLocator;
32+
import com.cloud.utils.testcase.ComponentSetup;
33+
import com.cloud.utils.testcase.ComponentTestCase;
34+
35+
@ComponentSetup(managerName="management-server", setupXml="network-mgr-component.xml")
36+
public class FirewallManagerTest extends ComponentTestCase {
37+
private static final Logger s_logger = Logger.getLogger(FirewallManagerTest.class);
38+
39+
@Test
40+
public void testInjected() {
41+
FirewallManagerImpl firewallMgr = (FirewallManagerImpl)ComponentLocator.getCurrentLocator().getManager(FirewallManager.class);
42+
Assert.assertTrue(firewallMgr._firewallElements.enumeration().hasMoreElements());
43+
Assert.assertTrue(firewallMgr._pfElements.enumeration().hasMoreElements());
44+
Assert.assertTrue(firewallMgr._staticNatElements.enumeration().hasMoreElements());
45+
Assert.assertTrue(firewallMgr._networkAclElements.enumeration().hasMoreElements());
46+
Assert.assertNotNull(firewallMgr._networkModel);
47+
48+
Assert.assertNotNull(firewallMgr._firewallElements.get("VirtualRouter"));
49+
Assert.assertNotNull(firewallMgr._firewallElements.get("VpcVirtualRouter"));
50+
Assert.assertNotNull(firewallMgr._pfElements.get("VirtualRouter"));
51+
Assert.assertNotNull(firewallMgr._pfElements.get("VpcVirtualRouter"));
52+
Assert.assertNotNull(firewallMgr._staticNatElements.get("VirtualRouter"));
53+
Assert.assertNotNull(firewallMgr._staticNatElements.get("VpcVirtualRouter"));
54+
Assert.assertNotNull(firewallMgr._networkAclElements.get("VpcVirtualRouter"));
55+
Assert.assertNull(firewallMgr._networkAclElements.get("VirtualRouter"));
56+
57+
58+
Assert.assertTrue(firewallMgr._firewallElements.get("VirtualRouter") instanceof FirewallServiceProvider);
59+
Assert.assertTrue(firewallMgr._pfElements.get("VirtualRouter") instanceof PortForwardingServiceProvider);
60+
Assert.assertTrue(firewallMgr._staticNatElements.get("VirtualRouter") instanceof StaticNatServiceProvider);
61+
Assert.assertTrue(firewallMgr._networkAclElements.get("VpcVirtualRouter") instanceof NetworkACLServiceProvider);
62+
63+
s_logger.info("Done testing injection of service elements into firewall manager");
64+
65+
}
66+
67+
}

‎server/test/resources/network-mgr-component.xml‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,47 +91,55 @@ under the License.
9191
</adapters>
9292
<adapters key="com.cloud.network.element.FirewallServiceProvider">
9393
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
94+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
9495
</adapters>
9596
<adapters key="com.cloud.network.element.DhcpServiceProvider">
9697
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
98+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
9799
<adapter name="ExternalDhcpElement" class="com.cloud.network.element.ExternalDhcpElement"/>
98100
</adapters>
99101
<adapters key="com.cloud.network.element.UserDataServiceProvider">
100102
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
103+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
101104
</adapters>
102105
<adapters key="com.cloud.network.element.SourceNatServiceProvider">
103106
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
107+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
104108
<!--<adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/> -->
105109
</adapters>
106110
<adapters key="com.cloud.network.element.StaticNatServiceProvider">
111+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
107112
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
108113
<!-- <adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/> -->
109114
</adapters>
110115
<adapters key="com.cloud.network.element.PortForwardingServiceProvider">
111116
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
117+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
112118
<!-- <adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/> -->
113119
</adapters>
114120
<adapters key="com.cloud.network.element.LoadBalancingServiceProvider">
115121
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
122+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
116123
</adapters>
117124
<adapters key="com.cloud.network.element.RemoteAccessVPNServiceProvider">
118125
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
119126
</adapters>
120127
<adapters key="com.cloud.network.element.Site2SiteVpnServiceProvider">
121-
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement" />
128+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
122129
</adapters>
123130
<adapters key="com.cloud.network.element.IpDeployer">
124131
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
132+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
125133
<!-- <adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/> -->
126134
</adapters>
127135
<adapters key="com.cloud.network.element.ConnectivityProvider">
128136
<!-- <adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/> -->
129137
</adapters>
130138
<adapters key="com.cloud.network.element.NetworkACLServiceProvider">
131-
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
139+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
132140
</adapters>
133141
<adapters key="com.cloud.network.element.VpcProvider">
134-
<adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
142+
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
135143
</adapters>
136144

137145
<!--<manager name="OvsTunnelManager" key="com.cloud.network.ovs.OvsTunnelManager" class="com.cloud.network.ovs.OvsTunnelManagerImpl"/>-->

0 commit comments

Comments
 (0)