Skip to content

Commit 2fa6faa

Browse files
Jenkinsopenstack-gerrit
Jenkins
authored andcommitted
Merge "Add unit tests for agentscheduler related commands"
2 parents 2fd6510 + a774e84 commit 2fa6faa

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed

neutronclient/tests/unit/test_cli20_agentschedulers.py

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,150 @@
1818

1919
import sys
2020

21+
from mox3 import mox
22+
2123
from neutronclient.neutron.v2_0 import agentscheduler
24+
from neutronclient.neutron.v2_0 import network
2225
from neutronclient.tests.unit import test_cli20
2326

2427

28+
AGENT_ID = 'agent_id1'
29+
NETWORK_ID = 'net_id1'
30+
ROUTER_ID = 'router_id1'
31+
32+
33+
class CLITestV20AgentScheduler(test_cli20.CLITestV20Base):
34+
def _test_add_to_agent(self, resource, cmd, cmd_args, destination,
35+
body, result):
36+
path = ((self.client.agent_path + destination) %
37+
cmd_args[0])
38+
39+
self.mox.StubOutWithMock(cmd, "get_client")
40+
self.mox.StubOutWithMock(self.client.httpclient, "request")
41+
cmd.get_client().MultipleTimes().AndReturn(self.client)
42+
result_str = self.client.serialize(result)
43+
return_tup = (test_cli20.MyResp(200), result_str)
44+
45+
self.client.httpclient.request(
46+
test_cli20.end_url(path), 'POST',
47+
body=test_cli20.MyComparator(body, self.client),
48+
headers=mox.ContainsKeyValue(
49+
'X-Auth-Token', test_cli20.TOKEN)).AndReturn(return_tup)
50+
self.mox.ReplayAll()
51+
cmd_parser = cmd.get_parser('test_' + resource)
52+
parsed_args = cmd_parser.parse_args(cmd_args)
53+
cmd.run(parsed_args)
54+
self.mox.VerifyAll()
55+
self.mox.UnsetStubs()
56+
57+
def _test_remove_from_agent(self, resource, cmd, cmd_args, destination):
58+
path = ((self.client.agent_path + destination + '/%s') %
59+
cmd_args)
60+
self.mox.StubOutWithMock(cmd, "get_client")
61+
self.mox.StubOutWithMock(self.client.httpclient, "request")
62+
cmd.get_client().MultipleTimes().AndReturn(self.client)
63+
64+
return_tup = (test_cli20.MyResp(204), None)
65+
self.client.httpclient.request(
66+
test_cli20.end_url(path), 'DELETE',
67+
body=None,
68+
headers=mox.ContainsKeyValue(
69+
'X-Auth-Token', test_cli20.TOKEN)).AndReturn(return_tup)
70+
self.mox.ReplayAll()
71+
cmd_parser = cmd.get_parser('test_' + resource)
72+
parsed_args = cmd_parser.parse_args(cmd_args)
73+
cmd.run(parsed_args)
74+
self.mox.VerifyAll()
75+
self.mox.UnsetStubs()
76+
77+
78+
class CLITestV20DHCPAgentScheduler(CLITestV20AgentScheduler):
79+
80+
def test_add_network_to_agent(self):
81+
resource = 'agent'
82+
cmd = agentscheduler.AddNetworkToDhcpAgent(
83+
test_cli20.MyApp(sys.stdout), None)
84+
args = (AGENT_ID, NETWORK_ID)
85+
body = {'network_id': NETWORK_ID}
86+
result = {'network_id': 'net_id', }
87+
self._test_add_to_agent(resource, cmd, args, self.client.DHCP_NETS,
88+
body, result)
89+
90+
def test_remove_network_from_agent(self):
91+
resource = 'agent'
92+
cmd = agentscheduler.RemoveNetworkFromDhcpAgent(
93+
test_cli20.MyApp(sys.stdout), None)
94+
args = (AGENT_ID, NETWORK_ID)
95+
self._test_remove_from_agent(resource, cmd, args,
96+
self.client.DHCP_NETS)
97+
98+
def test_list_networks_on_agent(self):
99+
resources = 'networks'
100+
cmd = agentscheduler.ListNetworksOnDhcpAgent(
101+
test_cli20.MyApp(sys.stdout), None)
102+
agent_id = 'agent_id1'
103+
path = ((self.client.agent_path + self.client.DHCP_NETS) %
104+
agent_id)
105+
self.mox.StubOutWithMock(network.ListNetwork, "extend_list")
106+
network.ListNetwork.extend_list(mox.IsA(list), mox.IgnoreArg())
107+
self._test_list_resources(resources, cmd, base_args=[agent_id],
108+
path=path)
109+
110+
def test_list_agents_hosting_network(self):
111+
resources = 'agent'
112+
cmd = agentscheduler.ListDhcpAgentsHostingNetwork(
113+
test_cli20.MyApp(sys.stdout), None)
114+
agent_id = 'agent_id1'
115+
path = ((self.client.network_path + self.client.DHCP_AGENTS) %
116+
agent_id)
117+
contents = {self.id_field: 'myid1', 'alive': True}
118+
self._test_list_resources(resources, cmd, base_args=[agent_id],
119+
path=path, response_contents=contents)
120+
121+
122+
class CLITestV20L3AgentScheduler(CLITestV20AgentScheduler):
123+
124+
def test_add_router_to_agent(self):
125+
resource = 'agent'
126+
cmd = agentscheduler.AddRouterToL3Agent(
127+
test_cli20.MyApp(sys.stdout), None)
128+
args = (AGENT_ID, ROUTER_ID)
129+
body = {'router_id': ROUTER_ID}
130+
result = {'network_id': 'net_id', }
131+
self._test_add_to_agent(resource, cmd, args, self.client.L3_ROUTERS,
132+
body, result)
133+
134+
def test_remove_router_from_agent(self):
135+
resource = 'agent'
136+
cmd = agentscheduler.RemoveRouterFromL3Agent(
137+
test_cli20.MyApp(sys.stdout), None)
138+
args = (AGENT_ID, ROUTER_ID)
139+
self._test_remove_from_agent(resource, cmd, args,
140+
self.client.L3_ROUTERS)
141+
142+
def test_list_routers_on_agent(self):
143+
resources = 'router'
144+
cmd = agentscheduler.ListRoutersOnL3Agent(
145+
test_cli20.MyApp(sys.stdout), None)
146+
agent_id = 'agent_id1'
147+
path = ((self.client.agent_path + self.client.L3_ROUTERS) %
148+
agent_id)
149+
contents = {self.id_field: 'myid1', 'name': 'my_name'}
150+
self._test_list_resources(resources, cmd, base_args=[agent_id],
151+
path=path, response_contents=contents)
152+
153+
def test_list_agents_hosting_router(self):
154+
resources = 'agent'
155+
cmd = agentscheduler.ListL3AgentsHostingRouter(
156+
test_cli20.MyApp(sys.stdout), None)
157+
agent_id = 'agent_id1'
158+
path = ((self.client.router_path + self.client.L3_AGENTS) %
159+
agent_id)
160+
contents = {self.id_field: 'myid1', 'alive': True}
161+
self._test_list_resources(resources, cmd, base_args=[agent_id],
162+
path=path, response_contents=contents)
163+
164+
25165
class CLITestV20LBaaSAgentScheduler(test_cli20.CLITestV20Base):
26166

27167
def test_list_pools_on_agent(self):

0 commit comments

Comments
 (0)