Skip to content
This repository has been archived by the owner on Jan 14, 2020. It is now read-only.

Commit

Permalink
Better coverage for ambari tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ZacBlanco committed Jun 21, 2016
1 parent a55126a commit 843f49d
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 7 deletions.
12 changes: 5 additions & 7 deletions scripts/ambari.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,11 @@ def load_output(output):
elif not len(output[1]) == 0:
# StdErr output
json_str = '{ "message": "" }'
try:
res = json.loads(json_str)
res['message'] = output[1]
return res
except ValueError as e:
raise ValueError(e)

res = json.loads(json_str) # Built from json_str no chance for error
res['message'] = output[1]
return res


else:
json_str = '{ "message" : "No output was returned." }'

Expand Down
45 changes: 45 additions & 0 deletions tests/test_ambari.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@

no_cluster_res = '{"status":404,"message":"The requested resource doesn\'t exist: Cluster not found, clusterName=d"}'

err_res = 'error message here'
empty_res = ''
bad_res = '{}]}}}'
bad_err_res = '{}{}{}{}{}{}{}{}STRY()'

def mocked_request(*args, **kwargs):

if '/api/v1/clusters?' in args[0]:
Expand All @@ -18,6 +23,14 @@ def mocked_request(*args, **kwargs):
return [sample_services_res, '']
elif ('/api/v1/clusters/demo_cluster/services?' in args[0]):
return [sample_services_res, '']
elif ('bad/request' in args[0]):
return ['', err_res]
elif ('empty/res' in args[0]):
return ['', empty_res]
elif ('bad/json/res' in args[0]):
return [bad_res, '']
elif ('err/json/res' in args[0]):
return ['', bad_err_res]
else:
return [no_cluster_res, '']

Expand Down Expand Up @@ -61,6 +74,38 @@ def test_missing_cluster(self, mock):
assert data['status'] == 404
assert 'resource doesn\'t exist' in data['message']

@mock.patch('scripts.shell.Shell.run', side_effect=mocked_request)
def test_err_str(self, mock):
client = Ambari(self.un, self.pw, self.proto, self.server, self.port)
data = client.getClusterInfo('bad/request');
assert not len(data['message']) == 0
assert data['message'] == err_res

@mock.patch('scripts.shell.Shell.run', side_effect=mocked_request)
def test_empty_str(self, mock):
client = Ambari(self.un, self.pw, self.proto, self.server, self.port)
data = client.getClusterInfo('empty/res');
assert not len(data['message']) == 0
assert data['message'] == 'No output was returned.'

@mock.patch('scripts.shell.Shell.run', side_effect=mocked_request)
def test_bad_json_res(self, mock):
client = Ambari(self.un, self.pw, self.proto, self.server, self.port)
try:
data = client.getClusterInfo('bad/json/res');
self.fail('Should have thrown an exception: ValueError')
except ValueError as e:
assert ('Extra data:' in str(e.message))
assert not len(str(e.message)) == 0
pass

@mock.patch('scripts.shell.Shell.run', side_effect=mocked_request)
def test_err_json_res(self, mock):
client = Ambari(self.un, self.pw, self.proto, self.server, self.port)
data = client.getClusterInfo('err/json/res');
assert not len(str(data['message'])) == 0
assert data['message'] == bad_err_res




Expand Down

0 comments on commit 843f49d

Please sign in to comment.