You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by hu...@apache.org on 2012/12/06 14:46:48 UTC

[5/6] git commit: More unittests for NiciraNvpResource

More unittests for NiciraNvpResource

Add some basic unittest for NatRule


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/700050a7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/700050a7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/700050a7

Branch: refs/heads/master
Commit: 700050a713575e59c72bdcecae2f341f85180c60
Parents: b0955e4
Author: Hugo Trippaers <tr...@gmail.com>
Authored: Sun Dec 2 12:02:19 2012 -0800
Committer: Hugo Trippaers <tr...@gmail.com>
Committed: Thu Dec 6 14:45:09 2012 +0100

----------------------------------------------------------------------
 .../test/com/cloud/network/nicira/NatRuleTest.java |   47 ++
 .../network/resource/NiciraNvpResourceTest.java    |  355 ++++++++++++++-
 2 files changed, 392 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/700050a7/plugins/network-elements/nicira-nvp/test/com/cloud/network/nicira/NatRuleTest.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/test/com/cloud/network/nicira/NatRuleTest.java b/plugins/network-elements/nicira-nvp/test/com/cloud/network/nicira/NatRuleTest.java
new file mode 100644
index 0000000..88c5402
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/test/com/cloud/network/nicira/NatRuleTest.java
@@ -0,0 +1,47 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.network.nicira;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import com.google.gson.Gson;
+
+public class NatRuleTest {
+	
+	Gson gson = new Gson();
+	
+	@Test
+	public void testNatRuleEncoding() {
+		NatRule rn1 = new NatRule();
+		rn1.setToDestinationIpAddressMax("10.10.10.10");
+		rn1.setToDestinationIpAddressMin("10.10.10.10");
+		rn1.setToDestinationPort(80);
+		Match mr1 = new Match();
+		mr1.setSourceIpAddresses("11.11.11.11/24");
+		mr1.setEthertype("IPv4");
+		mr1.setProtocol(6);
+		rn1.setMatch(mr1);
+		
+		
+		String jsonString = gson.toJson(rn1);
+		NatRule dnr = gson.fromJson(jsonString, NatRule.class);
+		
+		assertTrue(rn1.equals(dnr));
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/700050a7/plugins/network-elements/nicira-nvp/test/com/cloud/network/resource/NiciraNvpResourceTest.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/test/com/cloud/network/resource/NiciraNvpResourceTest.java b/plugins/network-elements/nicira-nvp/test/com/cloud/network/resource/NiciraNvpResourceTest.java
index 7632703..3fdd3e3 100644
--- a/plugins/network-elements/nicira-nvp/test/com/cloud/network/resource/NiciraNvpResourceTest.java
+++ b/plugins/network-elements/nicira-nvp/test/com/cloud/network/resource/NiciraNvpResourceTest.java
@@ -27,21 +27,58 @@ import javax.naming.ConfigurationException;
 
 import org.junit.Before;
 import org.junit.Test;
-
+import com.cloud.agent.api.ConfigurePublicIpsOnLogicalRouterAnswer;
+import com.cloud.agent.api.ConfigurePublicIpsOnLogicalRouterCommand;
+import com.cloud.agent.api.CreateLogicalRouterAnswer;
+import com.cloud.agent.api.CreateLogicalRouterCommand;
+import com.cloud.agent.api.CreateLogicalSwitchAnswer;
+import com.cloud.agent.api.CreateLogicalSwitchCommand;
+import com.cloud.agent.api.CreateLogicalSwitchPortAnswer;
+import com.cloud.agent.api.CreateLogicalSwitchPortCommand;
+import com.cloud.agent.api.DeleteLogicalRouterAnswer;
+import com.cloud.agent.api.DeleteLogicalRouterCommand;
+import com.cloud.agent.api.DeleteLogicalSwitchAnswer;
+import com.cloud.agent.api.DeleteLogicalSwitchCommand;
+import com.cloud.agent.api.DeleteLogicalSwitchPortAnswer;
+import com.cloud.agent.api.DeleteLogicalSwitchPortCommand;
+import com.cloud.agent.api.FindLogicalSwitchPortAnswer;
+import com.cloud.agent.api.FindLogicalSwitchPortCommand;
+import com.cloud.agent.api.PingCommand;
+import com.cloud.agent.api.StartupCommand;
+import com.cloud.agent.api.UpdateLogicalSwitchPortAnswer;
+import com.cloud.agent.api.UpdateLogicalSwitchPortCommand;
 import com.cloud.host.Host;
+import com.cloud.network.nicira.Attachment;
+import com.cloud.network.nicira.ControlClusterStatus;
+import com.cloud.network.nicira.LogicalRouterConfig;
+import com.cloud.network.nicira.LogicalRouterPort;
+import com.cloud.network.nicira.LogicalSwitch;
+import com.cloud.network.nicira.LogicalSwitchPort;
+import com.cloud.network.nicira.NatRule;
 import com.cloud.network.nicira.NiciraNvpApi;
+import com.cloud.network.nicira.NiciraNvpApiException;
+import com.cloud.network.nicira.NiciraNvpList;
 
 public class NiciraNvpResourceTest {
 	NiciraNvpApi _nvpApi = mock(NiciraNvpApi.class);
 	NiciraNvpResource _resource;
+	Map<String,Object> _parameters;
 	
 	@Before
-	public void setUp() {
+	public void setUp() throws ConfigurationException {
 		_resource = new NiciraNvpResource() {
 			protected NiciraNvpApi createNiciraNvpApi() {
 				return _nvpApi;
 			}
 		};
+
+		_parameters = new HashMap<String,Object>();
+		_parameters.put("name","nvptestdevice");
+		_parameters.put("ip","127.0.0.1");
+		_parameters.put("adminuser","adminuser");
+		_parameters.put("guid", "aaaaa-bbbbb-ccccc");
+		_parameters.put("zoneId", "blublub");
+		_parameters.put("adminpass","adminpass");
 	}
 	
 	@Test (expected=ConfigurationException.class)
@@ -51,14 +88,7 @@ public class NiciraNvpResourceTest {
 	
 	@Test 
 	public void resourceConfigure() throws ConfigurationException {
-		Map<String,Object> parameters = new HashMap<String,Object>();
-		parameters.put("name","nvptestdevice");
-		parameters.put("ip","127.0.0.1");
-		parameters.put("adminuser","adminuser");
-		parameters.put("guid", "aaaaa-bbbbb-ccccc");
-		parameters.put("zoneId", "blublub");
-		parameters.put("adminpass","adminpass");
-		_resource.configure("NiciraNvpResource", parameters);
+		_resource.configure("NiciraNvpResource", _parameters);
 		
 		verify(_nvpApi).setAdminCredentials("adminuser", "adminpass");
 		verify(_nvpApi).setControllerAddress("127.0.0.1");
@@ -71,4 +101,309 @@ public class NiciraNvpResourceTest {
 		assertTrue(_resource.getType() == Host.Type.L2Networking);
 	}
 	
+	@Test
+	public void testInitialization() throws ConfigurationException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		StartupCommand[] sc = _resource.initialize();
+		assertTrue(sc.length ==1);
+		assertTrue("aaaaa-bbbbb-ccccc".equals(sc[0].getGuid()));
+		assertTrue("nvptestdevice".equals(sc[0].getName()));
+		assertTrue("blublub".equals(sc[0].getDataCenter()));
+	}
+	
+	@Test
+	public void testPingCommandStatusOk() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		ControlClusterStatus ccs = mock(ControlClusterStatus.class);
+		when(ccs.getClusterStatus()).thenReturn("stable");
+		when(_nvpApi.getControlClusterStatus()).thenReturn(ccs);
+		
+		PingCommand ping = _resource.getCurrentStatus(42);
+		assertTrue(ping != null);
+		assertTrue(ping.getHostId() == 42);
+		assertTrue(ping.getHostType() == Host.Type.L2Networking);		
+	}
+
+	@Test
+	public void testPingCommandStatusFail() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		ControlClusterStatus ccs = mock(ControlClusterStatus.class);
+		when(ccs.getClusterStatus()).thenReturn("unstable");
+		when(_nvpApi.getControlClusterStatus()).thenReturn(ccs);
+		
+		PingCommand ping = _resource.getCurrentStatus(42);
+		assertTrue(ping == null);
+	}
+
+	@Test
+	public void testPingCommandStatusApiException() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		ControlClusterStatus ccs = mock(ControlClusterStatus.class);
+		when(ccs.getClusterStatus()).thenReturn("unstable");
+		when(_nvpApi.getControlClusterStatus()).thenThrow(new NiciraNvpApiException());
+		
+		PingCommand ping = _resource.getCurrentStatus(42);
+		assertTrue(ping == null);
+	}
+	
+	@Test
+	public void testRetries() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		LogicalSwitch ls = mock(LogicalSwitch.class);
+		when(ls.getUuid()).thenReturn("cccc").thenReturn("cccc");
+		when(_nvpApi.createLogicalSwitch((LogicalSwitch) any())).thenThrow(new NiciraNvpApiException()).thenThrow(new NiciraNvpApiException()).thenReturn(ls);
+		
+		CreateLogicalSwitchCommand clsc = new CreateLogicalSwitchCommand((String)_parameters.get("guid"), "stt", "loigicalswitch","owner");
+		CreateLogicalSwitchAnswer clsa = (CreateLogicalSwitchAnswer) _resource.executeRequest(clsc);
+		assertTrue(clsa.getResult());
+	}
+	
+	@Test
+	public void testCreateLogicalSwitch() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		LogicalSwitch ls = mock(LogicalSwitch.class);
+		when(ls.getUuid()).thenReturn("cccc").thenReturn("cccc");
+		when(_nvpApi.createLogicalSwitch((LogicalSwitch) any())).thenReturn(ls);
+		
+		CreateLogicalSwitchCommand clsc = new CreateLogicalSwitchCommand((String)_parameters.get("guid"), "stt", "loigicalswitch","owner");
+		CreateLogicalSwitchAnswer clsa = (CreateLogicalSwitchAnswer) _resource.executeRequest(clsc);
+		assertTrue(clsa.getResult());
+		assertTrue("cccc".equals(clsa.getLogicalSwitchUuid()));
+	}
+
+	@Test
+	public void testCreateLogicalSwitchApiException() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		LogicalSwitch ls = mock(LogicalSwitch.class);
+		when(ls.getUuid()).thenReturn("cccc").thenReturn("cccc");
+		when(_nvpApi.createLogicalSwitch((LogicalSwitch) any())).thenThrow(new NiciraNvpApiException());
+		
+		CreateLogicalSwitchCommand clsc = new CreateLogicalSwitchCommand((String)_parameters.get("guid"), "stt", "loigicalswitch","owner");
+		CreateLogicalSwitchAnswer clsa = (CreateLogicalSwitchAnswer) _resource.executeRequest(clsc);
+		assertFalse(clsa.getResult());
+	}
+
+	@Test
+	public void testDeleteLogicalSwitch() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		DeleteLogicalSwitchCommand dlsc = new DeleteLogicalSwitchCommand("cccc");
+		DeleteLogicalSwitchAnswer dlsa = (DeleteLogicalSwitchAnswer) _resource.executeRequest(dlsc);
+		assertTrue(dlsa.getResult());
+	}
+
+	@Test
+	public void testDeleteLogicalSwitchApiException() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		doThrow(new NiciraNvpApiException()).when(_nvpApi).deleteLogicalSwitch((String)any());
+		
+		DeleteLogicalSwitchCommand dlsc = new DeleteLogicalSwitchCommand("cccc");
+		DeleteLogicalSwitchAnswer dlsa = (DeleteLogicalSwitchAnswer) _resource.executeRequest(dlsc);
+		assertFalse(dlsa.getResult());
+	}
+
+	@Test
+	public void testCreateLogicalSwitchPort() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		LogicalSwitchPort lsp = mock(LogicalSwitchPort.class);
+		when(lsp.getUuid()).thenReturn("eeee");
+		when(_nvpApi.createLogicalSwitchPort(eq("cccc"), (LogicalSwitchPort) any())).thenReturn(lsp);
+		
+		CreateLogicalSwitchPortCommand clspc = new CreateLogicalSwitchPortCommand("cccc", "dddd", "owner", "nicname");
+		CreateLogicalSwitchPortAnswer clspa = (CreateLogicalSwitchPortAnswer) _resource.executeRequest(clspc);
+		assertTrue(clspa.getResult());
+		assertTrue("eeee".equals(clspa.getLogicalSwitchPortUuid()));
+		
+	}
+
+	@Test
+	public void testCreateLogicalSwitchPortApiExceptionInCreate() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		LogicalSwitchPort lsp = mock(LogicalSwitchPort.class);
+		when(lsp.getUuid()).thenReturn("eeee");
+		when(_nvpApi.createLogicalSwitchPort(eq("cccc"), (LogicalSwitchPort) any())).thenThrow(new NiciraNvpApiException());
+		
+		CreateLogicalSwitchPortCommand clspc = new CreateLogicalSwitchPortCommand("cccc", "dddd", "owner", "nicname");
+		CreateLogicalSwitchPortAnswer clspa = (CreateLogicalSwitchPortAnswer) _resource.executeRequest(clspc);
+		assertFalse(clspa.getResult());		
+	}
+
+	@Test
+	public void testCreateLogicalSwitchPortApiExceptionInModify() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		LogicalSwitchPort lsp = mock(LogicalSwitchPort.class);
+		when(lsp.getUuid()).thenReturn("eeee");
+		when(_nvpApi.createLogicalSwitchPort(eq("cccc"), (LogicalSwitchPort) any())).thenReturn(lsp);
+		doThrow(new NiciraNvpApiException()).when(_nvpApi).modifyLogicalSwitchPortAttachment((String)any(), (String)any(), (Attachment)any());
+		
+		
+		CreateLogicalSwitchPortCommand clspc = new CreateLogicalSwitchPortCommand("cccc", "dddd", "owner", "nicname");
+		CreateLogicalSwitchPortAnswer clspa = (CreateLogicalSwitchPortAnswer) _resource.executeRequest(clspc);
+		assertFalse(clspa.getResult());		
+		verify(_nvpApi, atLeastOnce()).deleteLogicalSwitchPort((String) any(),  (String) any());
+	}
+
+	@Test
+	public void testDeleteLogicalSwitchPortException() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		doThrow(new NiciraNvpApiException()).when(_nvpApi).deleteLogicalSwitchPort((String) any(), (String) any());
+		DeleteLogicalSwitchPortAnswer dlspa = (DeleteLogicalSwitchPortAnswer) _resource.executeRequest(new DeleteLogicalSwitchPortCommand("aaaa","bbbb"));
+		assertFalse(dlspa.getResult());
+	}
+	
+	@Test
+	public void testUpdateLogicalSwitchPortException() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		doThrow(new NiciraNvpApiException()).when(_nvpApi).modifyLogicalSwitchPortAttachment((String) any(), (String) any(), (Attachment) any());
+		UpdateLogicalSwitchPortAnswer dlspa = (UpdateLogicalSwitchPortAnswer) _resource.executeRequest(
+				new UpdateLogicalSwitchPortCommand("aaaa","bbbb","cccc","owner","nicname"));
+		assertFalse(dlspa.getResult());
+	}
+	
+	@Test
+	public void testFindLogicalSwitchPort() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		@SuppressWarnings("unchecked")
+		NiciraNvpList<LogicalSwitchPort> lspl = (NiciraNvpList<LogicalSwitchPort>)mock(NiciraNvpList.class);
+		when(lspl.getResultCount()).thenReturn(1); 
+		when(_nvpApi.findLogicalSwitchPortsByUuid("aaaa", "bbbb")).thenReturn(lspl);
+		
+		FindLogicalSwitchPortAnswer flspa = (FindLogicalSwitchPortAnswer) _resource.executeRequest(new FindLogicalSwitchPortCommand("aaaa", "bbbb"));
+		assertTrue(flspa.getResult());
+	}
+
+	@Test
+	public void testFindLogicalSwitchPortNotFound() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		@SuppressWarnings("unchecked")
+		NiciraNvpList<LogicalSwitchPort> lspl = (NiciraNvpList<LogicalSwitchPort>)mock(NiciraNvpList.class);
+		when(lspl.getResultCount()).thenReturn(0); 
+		when(_nvpApi.findLogicalSwitchPortsByUuid("aaaa", "bbbb")).thenReturn(lspl);
+		
+		FindLogicalSwitchPortAnswer flspa = (FindLogicalSwitchPortAnswer) _resource.executeRequest(new FindLogicalSwitchPortCommand("aaaa", "bbbb"));
+		assertFalse(flspa.getResult());
+	}
+
+	@Test
+	public void testFindLogicalSwitchPortApiException() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		when(_nvpApi.findLogicalSwitchPortsByUuid("aaaa", "bbbb")).thenThrow(new NiciraNvpApiException());
+		
+		FindLogicalSwitchPortAnswer flspa = (FindLogicalSwitchPortAnswer) _resource.executeRequest(new FindLogicalSwitchPortCommand("aaaa", "bbbb"));
+		assertFalse(flspa.getResult());
+	}
+	
+	@Test
+	public void testCreateLogicalRouter() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		LogicalRouterConfig lrc = mock(LogicalRouterConfig.class);
+		LogicalRouterPort lrp = mock(LogicalRouterPort.class);
+		LogicalSwitchPort lsp = mock(LogicalSwitchPort.class);
+		when(lrc.getUuid()).thenReturn("ccccc");
+		when(lrp.getUuid()).thenReturn("ddddd").thenReturn("eeeee");
+		when(lsp.getUuid()).thenReturn("fffff");
+		when(_nvpApi.createLogicalRouter((LogicalRouterConfig)any())).thenReturn(lrc);
+		when(_nvpApi.createLogicalRouterPort(eq("ccccc"), (LogicalRouterPort)any())).thenReturn(lrp);
+		when(_nvpApi.createLogicalSwitchPort(eq("bbbbb"), (LogicalSwitchPort)any())).thenReturn(lsp);
+		CreateLogicalRouterCommand clrc = new CreateLogicalRouterCommand("aaaaa", 50, "bbbbb", "lrouter", "publiccidr", "nexthop", "internalcidr", "owner");
+		CreateLogicalRouterAnswer clra = (CreateLogicalRouterAnswer) _resource.executeRequest(clrc);
+		
+		assertTrue(clra.getResult());
+		assertTrue("ccccc".equals(clra.getLogicalRouterUuid()));
+		verify(_nvpApi, atLeast(1)).createLogicalRouterNatRule((String) any(), (NatRule) any());
+	}
+
+	@Test
+	public void testCreateLogicalRouterApiException() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		when(_nvpApi.createLogicalRouter((LogicalRouterConfig)any())).thenThrow(new NiciraNvpApiException());
+		CreateLogicalRouterCommand clrc = new CreateLogicalRouterCommand("aaaaa", 50, "bbbbb", "lrouter", "publiccidr", "nexthop", "internalcidr", "owner");
+		CreateLogicalRouterAnswer clra = (CreateLogicalRouterAnswer) _resource.executeRequest(clrc);
+		
+		assertFalse(clra.getResult());
+	}
+
+	@Test
+	public void testCreateLogicalRouterApiExceptionRollbackRouter() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		LogicalRouterConfig lrc = mock(LogicalRouterConfig.class);
+		when(lrc.getUuid()).thenReturn("ccccc");
+		when(_nvpApi.createLogicalRouter((LogicalRouterConfig)any())).thenReturn(lrc);
+		when(_nvpApi.createLogicalRouterPort(eq("ccccc"), (LogicalRouterPort)any())).thenThrow(new NiciraNvpApiException());
+		CreateLogicalRouterCommand clrc = new CreateLogicalRouterCommand("aaaaa", 50, "bbbbb", "lrouter", "publiccidr", "nexthop", "internalcidr", "owner");
+		CreateLogicalRouterAnswer clra = (CreateLogicalRouterAnswer) _resource.executeRequest(clrc);
+		
+		assertFalse(clra.getResult());
+		verify(_nvpApi, atLeast(1)).deleteLogicalRouter(eq("ccccc"));
+	}
+
+	@Test
+	public void testCreateLogicalRouterApiExceptionRollbackRouterAndSwitchPort() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		LogicalRouterConfig lrc = mock(LogicalRouterConfig.class);
+		LogicalRouterPort lrp = mock(LogicalRouterPort.class);
+		LogicalSwitchPort lsp = mock(LogicalSwitchPort.class);
+		when(lrc.getUuid()).thenReturn("ccccc");
+		when(lrp.getUuid()).thenReturn("ddddd").thenReturn("eeeee");
+		when(lsp.getUuid()).thenReturn("fffff");
+		when(_nvpApi.createLogicalRouter((LogicalRouterConfig)any())).thenReturn(lrc);
+		when(_nvpApi.createLogicalRouterPort(eq("ccccc"), (LogicalRouterPort)any())).thenReturn(lrp);
+		when(_nvpApi.createLogicalSwitchPort(eq("bbbbb"), (LogicalSwitchPort)any())).thenReturn(lsp);
+		when(_nvpApi.createLogicalRouterNatRule((String) any(), (NatRule)any())).thenThrow(new NiciraNvpApiException());
+		CreateLogicalRouterCommand clrc = new CreateLogicalRouterCommand("aaaaa", 50, "bbbbb", "lrouter", "publiccidr", "nexthop", "internalcidr", "owner");
+		CreateLogicalRouterAnswer clra = (CreateLogicalRouterAnswer) _resource.executeRequest(clrc);
+		
+		assertFalse(clra.getResult());
+		verify(_nvpApi, atLeast(1)).deleteLogicalRouter(eq("ccccc"));
+		verify(_nvpApi, atLeast(1)).deleteLogicalSwitchPort(eq("bbbbb"), eq("fffff"));
+	}
+	
+	@Test
+	public void testDeleteLogicalRouterApiException() throws ConfigurationException,NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		doThrow(new NiciraNvpApiException()).when(_nvpApi).deleteLogicalRouter(eq("aaaaa"));
+		DeleteLogicalRouterAnswer dlspa = (DeleteLogicalRouterAnswer) _resource.executeRequest(new DeleteLogicalRouterCommand("aaaaa"));
+		assertFalse(dlspa.getResult());		
+	}
+	
+	@Test
+	public void testConfigurePublicIpsOnLogicalRouterApiException() throws ConfigurationException, NiciraNvpApiException {
+		_resource.configure("NiciraNvpResource", _parameters);
+		
+		ConfigurePublicIpsOnLogicalRouterCommand cmd = mock(ConfigurePublicIpsOnLogicalRouterCommand.class);
+		@SuppressWarnings("unchecked")
+		NiciraNvpList<LogicalRouterPort> list = mock(NiciraNvpList.class);
+		
+		when(cmd.getLogicalRouterUuid()).thenReturn("aaaaa");
+		when(cmd.getL3GatewayServiceUuid()).thenReturn("bbbbb");
+		doThrow(new NiciraNvpApiException()).when(_nvpApi).modifyLogicalRouterPort((String) any(), (LogicalRouterPort) any());
+		when(_nvpApi.findLogicalRouterPortByGatewayServiceUuid("aaaaa","bbbbb")).thenReturn(list);
+		
+		ConfigurePublicIpsOnLogicalRouterAnswer answer = 
+				(ConfigurePublicIpsOnLogicalRouterAnswer) _resource.executeRequest(cmd);
+		assertFalse(answer.getResult());
+		
+	}
 }
+