3 ##############################################################################
4 # Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
6 # All rights reserved. This program and the accompanying materials
7 # are made available under the terms of the Apache License, Version 2.0
8 # which accompanies this distribution, and is available at
9 # http://www.apache.org/licenses/LICENSE-2.0
10 ##############################################################################
12 # Unittest for yardstick.benchmark.contexts.kubernetes
14 from __future__ import absolute_import
18 from yardstick.benchmark.contexts.kubernetes import KubernetesContext
26 'image': 'openretriever/yardstick',
27 'command': '/bin/bash',
28 'args': ['-c', 'chmod 700 ~/.ssh; chmod 600 ~/.ssh/*; \
29 service ssh restart;while true ; do sleep 10000; done']
32 'image': 'openretriever/yardstick',
33 'command': '/bin/bash',
34 'args': ['-c', 'chmod 700 ~/.ssh; chmod 600 ~/.ssh/*; \
35 service ssh restart;while true ; do sleep 10000; done']
40 prefix = 'yardstick.benchmark.contexts.kubernetes'
43 class UndeployTestCase(unittest.TestCase):
45 @mock.patch('{}.KubernetesContext._delete_ssh_key'.format(prefix))
46 @mock.patch('{}.KubernetesContext._delete_rcs'.format(prefix))
47 @mock.patch('{}.KubernetesContext._delete_pods'.format(prefix))
48 def test_undeploy(self,
53 k8s_context = KubernetesContext()
54 k8s_context.init(context_cfg)
55 k8s_context.undeploy()
56 self.assertTrue(mock_delete_ssh.called)
57 self.assertTrue(mock_delete_rcs.called)
58 self.assertTrue(mock_delete_pods.called)
61 class DeployTestCase(unittest.TestCase):
63 @mock.patch('{}.KubernetesContext._wait_until_running'.format(prefix))
64 @mock.patch('{}.KubernetesTemplate.get_rc_pods'.format(prefix))
65 @mock.patch('{}.KubernetesContext._create_rcs'.format(prefix))
66 @mock.patch('{}.KubernetesContext._set_ssh_key'.format(prefix))
71 mock_wait_until_running):
73 k8s_context = KubernetesContext()
74 k8s_context.init(context_cfg)
76 self.assertTrue(mock_set_ssh_key.called)
77 self.assertTrue(mock_create_rcs.called)
78 self.assertTrue(mock_get_rc_pods.called)
79 self.assertTrue(mock_wait_until_running.called)
82 class SSHKeyTestCase(unittest.TestCase):
84 @mock.patch('{}.k8s_utils.delete_config_map'.format(prefix))
85 @mock.patch('{}.k8s_utils.create_config_map'.format(prefix))
86 def test_ssh_key(self, mock_create, mock_delete):
88 k8s_context = KubernetesContext()
89 k8s_context.init(context_cfg)
90 k8s_context._set_ssh_key()
91 k8s_context._delete_ssh_key()
92 self.assertTrue(mock_create.called)
93 self.assertTrue(mock_delete.called)
96 class WaitUntilRunningTestCase(unittest.TestCase):
98 @mock.patch('{}.k8s_utils.read_pod_status'.format(prefix))
99 def test_wait_until_running(self, mock_read_pod_status):
101 k8s_context = KubernetesContext()
102 k8s_context.init(context_cfg)
103 k8s_context.template.pods = ['server']
104 mock_read_pod_status.return_value = 'Running'
105 k8s_context._wait_until_running()
108 class GetServerTestCase(unittest.TestCase):
110 @mock.patch('{}.k8s_utils.get_pod_list'.format(prefix))
111 def test_get_server(self, mock_get_pod_list):
112 k8s_context = KubernetesContext()
113 k8s_context.init(context_cfg)
115 mock_get_pod_list.return_value.items = []
116 server = k8s_context._get_server('server')
117 self.assertIsNone(server)
120 class CreateRcsTestCase(unittest.TestCase):
122 @mock.patch('{}.KubernetesContext._create_rc'.format(prefix))
123 def test_create_rcs(self, mock_create_rc):
124 k8s_context = KubernetesContext()
125 k8s_context.init(context_cfg)
126 k8s_context._create_rcs()
127 self.assertTrue(mock_create_rc.called)
130 class CreateRcTestCase(unittest.TestCase):
132 @mock.patch('{}.k8s_utils.create_replication_controller'.format(prefix))
133 def test_create_rc(self, mock_create_replication_controller):
134 k8s_context = KubernetesContext()
135 k8s_context.init(context_cfg)
136 k8s_context._create_rc({})
137 self.assertTrue(mock_create_replication_controller.called)
140 class DeleteRcsTestCases(unittest.TestCase):
142 @mock.patch('{}.KubernetesContext._delete_rc'.format(prefix))
143 def test_delete_rcs(self, mock_delete_rc):
144 k8s_context = KubernetesContext()
145 k8s_context.init(context_cfg)
146 k8s_context._delete_rcs()
147 self.assertTrue(mock_delete_rc.called)
150 class DeleteRcTestCase(unittest.TestCase):
152 @mock.patch('{}.k8s_utils.delete_replication_controller'.format(prefix))
153 def test_delete_rc(self, mock_delete_replication_controller):
154 k8s_context = KubernetesContext()
155 k8s_context.init(context_cfg)
156 k8s_context._delete_rc({})
157 self.assertTrue(mock_delete_replication_controller.called)
164 if __name__ == '__main__':