comparison env/lib/python3.7/site-packages/bioblend/_tests/TestCloudmanMock.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:26e78fe6e8c4
1 """
2 Tests the functionality of the BioBlend CloudMan API, without actually making
3 calls to a remote CloudMan instance/server. These don't actually ensure
4 that BioBlend is integrated with CloudMan correctly. They only ensure that
5 if you refactor the BioBlend CloudMan API code, that it will maintain its
6 current behaviour.
7 """
8 try:
9 from unittest.mock import MagicMock
10 except ImportError:
11 # Python < 3.3
12 from mock import MagicMock
13
14 from bioblend import cloudman
15 from .test_util import unittest
16
17
18 class TestCloudmanMock(unittest.TestCase):
19
20 def setUp(self):
21 url = "http://127.0.0.1:42284"
22 password = "password"
23 self.cm = cloudman.CloudManInstance(url, password)
24
25 # def test_initialize(self):
26 # self.cm._make_get_request = MagicMock(return_value="{}")
27 #
28 # ## Set cluster type
29 # self.cm.initialize(type="Galaxy")
30 #
31 # params = {'startup_opt': 'Galaxy'}
32 # self.cm._make_get_request.assert_called_with("initialize_cluster", parameters=params)
33
34 def test_get_status(self):
35 # Set return value of call
36 self.cm._make_get_request = MagicMock(return_value={})
37
38 status = self.cm.get_status()
39 self.assertNotEqual(status, None)
40 self.assertEqual(status, {})
41
42 # Check that the correct URL was called
43 self.cm._make_get_request.assert_called_with("instance_state_json")
44
45 def test_get_nodes(self):
46 # Set return value of call
47 self.cm._make_get_request = MagicMock(return_value={'instances': []})
48
49 nodes = self.cm.get_nodes()
50 self.assertIsNotNone(nodes)
51 self.assertEqual(len(nodes), 0)
52
53 # Check that the correct URL was called
54 self.cm._make_get_request.assert_called_with("instance_feed_json")
55
56 def test_add_nodes(self):
57 self.cm._make_get_request = MagicMock(return_value="{}")
58 num_nodes = 10
59 status = self.cm.add_nodes(num_nodes)
60 self.assertIsNotNone(status)
61
62 # Check that the correct URL was called
63 params = {'number_nodes': 10, 'instance_type': '', 'spot_price': ''}
64 self.cm._make_get_request.assert_called_with("add_instances", parameters=params)
65
66 def test_remove_nodes(self):
67 self.cm._make_get_request = MagicMock(return_value="{}")
68 num_nodes = 10
69 status = self.cm.remove_nodes(num_nodes, force=True)
70 self.assertIsNotNone(status)
71
72 # Check that the correct URL was called
73 params = {'number_nodes': 10, 'force_termination': True}
74 self.cm._make_get_request.assert_called_with("remove_instances", parameters=params)
75
76 def test_remove_node(self):
77 self.cm._make_get_request = MagicMock(return_value="{}")
78 instance_id = "abcdef"
79 self.cm.remove_node(instance_id, force=True)
80
81 # Check that the correct URL was called
82 params = {'instance_id': "abcdef"}
83 self.cm._make_get_request.assert_called_with("remove_instance", parameters=params)
84
85 def test_reboot_node(self):
86 self.cm._make_get_request = MagicMock(return_value="{}")
87 instance_id = "abcdef"
88 self.cm.reboot_node(instance_id)
89
90 # Check that the correct URL was called
91 params = {'instance_id': "abcdef"}
92 self.cm._make_get_request.assert_called_with("reboot_instance", parameters=params)
93
94 def test_autoscaling_enabled_true(self):
95 return_json_string = {"autoscaling": {"use_autoscaling": True, "as_max": "3", "as_min": "1"}}
96 self.cm._make_get_request = MagicMock(return_value=return_json_string)
97 self.assertTrue(self.cm.autoscaling_enabled())
98
99 def test_autoscaling_enabled_false(self):
100 return_json_string = {"autoscaling": {"use_autoscaling": False, "as_max": "3", "as_min": "1"}}
101 self.cm._make_get_request = MagicMock(return_value=return_json_string)
102 self.assertFalse(self.cm.autoscaling_enabled())
103
104 def test_enable_autoscaling(self):
105 return_json_string = {"autoscaling": {"use_autoscaling": False, "as_max": "N/A", "as_min": "N/A"}}
106 self.cm._make_get_request = MagicMock(return_value=return_json_string)
107 self.assertFalse(self.cm.autoscaling_enabled())
108 self.cm.enable_autoscaling(minimum_nodes=0, maximum_nodes=19)
109
110 # Check that the correct URL was called
111 params = {'as_min': 0, 'as_max': 19}
112 self.cm._make_get_request.assert_called_with("toggle_autoscaling", parameters=params)
113
114 return_json_string = {"autoscaling": {"use_autoscaling": True, "as_max": "19", "as_min": "0"}}
115 self.cm.enable_autoscaling(minimum_nodes=0, maximum_nodes=19)
116
117 # Check that the correct URL was called
118 params = {'as_min': 0, 'as_max': 19}
119 self.cm._make_get_request.assert_called_with("toggle_autoscaling", parameters=params)
120
121 def test_disable_autoscaling(self):
122 return_json_string = {"autoscaling": {"use_autoscaling": True, "as_max": "3", "as_min": "1"}}
123 self.cm._make_get_request = MagicMock(return_value=return_json_string)
124 self.cm.disable_autoscaling()
125
126 self.cm._make_get_request.assert_called_with("toggle_autoscaling")
127
128 def test_adjust_autoscaling(self):
129 return_json_string = {"autoscaling": {"use_autoscaling": True, "as_max": "3", "as_min": "1"}}
130 self.cm._make_get_request = MagicMock(return_value=return_json_string)
131 self.cm.adjust_autoscaling(minimum_nodes=3, maximum_nodes=4)
132 params = {'as_min_adj': 3, 'as_max_adj': 4}
133 self.cm._make_get_request.assert_called_with("adjust_autoscaling", parameters=params)
134
135 def test_get_galaxy_state_stopped(self):
136 return_json = {"status": "'Galaxy' is not running", "srvc": "Galaxy"}
137 self.cm._make_get_request = MagicMock(return_value=return_json)
138
139 self.assertEqual(self.cm.get_galaxy_state()['status'], "'Galaxy' is not running")
140 params = {'srvc': "Galaxy"}
141 self.cm._make_get_request.assert_called_with("get_srvc_status", parameters=params)