diff options
Diffstat (limited to 'roles')
| -rwxr-xr-x | roles/lib_openshift/src/test/unit/test_oc_scale.py | 337 | 
1 files changed, 337 insertions, 0 deletions
diff --git a/roles/lib_openshift/src/test/unit/test_oc_scale.py b/roles/lib_openshift/src/test/unit/test_oc_scale.py index 48ab16db8..9d10c84f3 100755 --- a/roles/lib_openshift/src/test/unit/test_oc_scale.py +++ b/roles/lib_openshift/src/test/unit/test_oc_scale.py @@ -71,6 +71,294 @@ class OCScaleTest(unittest.TestCase):      @mock.patch('oc_scale.Utils.create_tmpfile_copy')      @mock.patch('oc_scale.OCScale.openshift_cmd') +    def test_state_present(self, mock_openshift_cmd, mock_tmpfile_copy): +        ''' Testing a state present ''' +        params = {'name': 'router', +                  'namespace': 'default', +                  'replicas': 2, +                  'state': 'present', +                  'kind': 'dc', +                  'kubeconfig': '/etc/origin/master/admin.kubeconfig', +                  'debug': False} + +        dc = '''{"kind": "DeploymentConfig", +               "apiVersion": "v1", +               "metadata": { +                   "name": "router", +                   "namespace": "default", +                   "selfLink": "/oapi/v1/namespaces/default/deploymentconfigs/router", +                   "uid": "a441eedc-e1ae-11e6-a2d5-0e6967f34d42", +                   "resourceVersion": "6558", +                   "generation": 8, +                   "creationTimestamp": "2017-01-23T20:58:07Z", +                   "labels": { +                       "router": "router" +                   } +               }, +               "spec": { +                   "replicas": 2, +               } +           }''' + +        mock_openshift_cmd.side_effect = [ +            {"cmd": '/usr/bin/oc get dc router -n default', +             'results': dc, +             'returncode': 0}] + +        mock_tmpfile_copy.side_effect = [ +            '/tmp/mocked_kubeconfig', +        ] + +        results = OCScale.run_ansible(params, False) + +        self.assertFalse(results['changed']) +        self.assertEqual(results['state'], 'present') +        self.assertEqual(results['result'][0], 2) + +    @mock.patch('oc_scale.Utils.create_tmpfile_copy') +    @mock.patch('oc_scale.OCScale.openshift_cmd') +    def test_scale_up(self, mock_openshift_cmd, mock_tmpfile_copy): +        ''' Testing a scale up ''' +        params = {'name': 'router', +                  'namespace': 'default', +                  'replicas': 3, +                  'state': 'present', +                  'kind': 'dc', +                  'kubeconfig': '/etc/origin/master/admin.kubeconfig', +                  'debug': False} + +        dc = '''{"kind": "DeploymentConfig", +               "apiVersion": "v1", +               "metadata": { +                   "name": "router", +                   "namespace": "default", +                   "selfLink": "/oapi/v1/namespaces/default/deploymentconfigs/router", +                   "uid": "a441eedc-e1ae-11e6-a2d5-0e6967f34d42", +                   "resourceVersion": "6558", +                   "generation": 8, +                   "creationTimestamp": "2017-01-23T20:58:07Z", +                   "labels": { +                       "router": "router" +                   } +               }, +               "spec": { +                   "replicas": 2, +               } +           }''' +        dc_updated = '''{"kind": "DeploymentConfig", +               "apiVersion": "v1", +               "metadata": { +                   "name": "router", +                   "namespace": "default", +                   "selfLink": "/oapi/v1/namespaces/default/deploymentconfigs/router", +                   "uid": "a441eedc-e1ae-11e6-a2d5-0e6967f34d42", +                   "resourceVersion": "6559", +                   "generation": 9, +                   "creationTimestamp": "2017-01-24T20:58:07Z", +                   "labels": { +                       "router": "router" +                   } +               }, +               "spec": { +                   "replicas": 3, +               } +           }''' + +        mock_openshift_cmd.side_effect = [ +            {"cmd": '/usr/bin/oc get dc router -n default', +             'results': dc, +             'returncode': 0}, +            {"cmd": '/usr/bin/oc get dc router -n default', +             'results': dc, +             'returncode': 0}, +            {"cmd": '/usr/bin/oc replace', +             'results': dc, +             'returncode': 0}, +            {"cmd": '/usr/bin/oc get dc router -n default', +             'results': dc_updated, +             'returncode': 0}] + +        mock_tmpfile_copy.side_effect = [ +            '/tmp/mocked_kubeconfig', +        ] + +        results = OCScale.run_ansible(params, False) + +        self.assertTrue(results['changed']) +        self.assertEqual(results['state'], 'present') +        self.assertEqual(results['result'][0], 3) + +    @mock.patch('oc_scale.Utils.create_tmpfile_copy') +    @mock.patch('oc_scale.OCScale.openshift_cmd') +    def test_scale_down(self, mock_openshift_cmd, mock_tmpfile_copy): +        ''' Testing a scale down ''' +        params = {'name': 'router', +                  'namespace': 'default', +                  'replicas': 1, +                  'state': 'present', +                  'kind': 'dc', +                  'kubeconfig': '/etc/origin/master/admin.kubeconfig', +                  'debug': False} + +        dc = '''{"kind": "DeploymentConfig", +               "apiVersion": "v1", +               "metadata": { +                   "name": "router", +                   "namespace": "default", +                   "selfLink": "/oapi/v1/namespaces/default/deploymentconfigs/router", +                   "uid": "a441eedc-e1ae-11e6-a2d5-0e6967f34d42", +                   "resourceVersion": "6558", +                   "generation": 8, +                   "creationTimestamp": "2017-01-23T20:58:07Z", +                   "labels": { +                       "router": "router" +                   } +               }, +               "spec": { +                   "replicas": 2, +               } +           }''' +        dc_updated = '''{"kind": "DeploymentConfig", +               "apiVersion": "v1", +               "metadata": { +                   "name": "router", +                   "namespace": "default", +                   "selfLink": "/oapi/v1/namespaces/default/deploymentconfigs/router", +                   "uid": "a441eedc-e1ae-11e6-a2d5-0e6967f34d42", +                   "resourceVersion": "6560", +                   "generation": 9, +                   "creationTimestamp": "2017-01-24T20:58:07Z", +                   "labels": { +                       "router": "router" +                   } +               }, +               "spec": { +                   "replicas": 1, +               } +           }''' + +        mock_openshift_cmd.side_effect = [ +            {"cmd": '/usr/bin/oc get dc router -n default', +             'results': dc, +             'returncode': 0}, +            {"cmd": '/usr/bin/oc get dc router -n default', +             'results': dc, +             'returncode': 0}, +            {"cmd": '/usr/bin/oc replace', +             'results': dc, +             'returncode': 0}, +            {"cmd": '/usr/bin/oc get dc router -n default', +             'results': dc_updated, +             'returncode': 0}] + +        mock_tmpfile_copy.side_effect = [ +            '/tmp/mocked_kubeconfig', +        ] + +        results = OCScale.run_ansible(params, False) + +        self.assertTrue(results['changed']) +        self.assertEqual(results['state'], 'present') +        self.assertEqual(results['result'][0], 1) + +    @mock.patch('oc_scale.Utils.create_tmpfile_copy') +    @mock.patch('oc_scale.OCScale.openshift_cmd') +    def test_scale_failed(self, mock_openshift_cmd, mock_tmpfile_copy): +        ''' Testing a scale failure ''' +        params = {'name': 'router', +                  'namespace': 'default', +                  'replicas': 1, +                  'state': 'present', +                  'kind': 'dc', +                  'kubeconfig': '/etc/origin/master/admin.kubeconfig', +                  'debug': False} + +        dc = '''{"kind": "DeploymentConfig", +               "apiVersion": "v1", +               "metadata": { +                   "name": "router", +                   "namespace": "default", +                   "selfLink": "/oapi/v1/namespaces/default/deploymentconfigs/router", +                   "uid": "a441eedc-e1ae-11e6-a2d5-0e6967f34d42", +                   "resourceVersion": "6558", +                   "generation": 8, +                   "creationTimestamp": "2017-01-23T20:58:07Z", +                   "labels": { +                       "router": "router" +                   } +               }, +               "spec": { +                   "replicas": 2, +               } +           }''' +        error_message = "foo" + +        mock_openshift_cmd.side_effect = [ +            {"cmd": '/usr/bin/oc get dc router -n default', +             'results': dc, +             'returncode': 0}, +            {"cmd": '/usr/bin/oc get dc router -n default', +             'results': dc, +             'returncode': 0}, +            {"cmd": '/usr/bin/oc replace', +             'results': error_message, +             'returncode': 1}] + +        mock_tmpfile_copy.side_effect = [ +            '/tmp/mocked_kubeconfig', +        ] + +        results = OCScale.run_ansible(params, False) + +        self.assertTrue(results['failed']) + +    @mock.patch('oc_scale.Utils.create_tmpfile_copy') +    @mock.patch('oc_scale.OCScale.openshift_cmd') +    def test_state_unknown(self, mock_openshift_cmd, mock_tmpfile_copy): +        ''' Testing an unknown state ''' +        params = {'name': 'router', +                  'namespace': 'default', +                  'replicas': 2, +                  'state': 'unknown-state', +                  'kind': 'dc', +                  'kubeconfig': '/etc/origin/master/admin.kubeconfig', +                  'debug': False} + +        dc = '''{"kind": "DeploymentConfig", +               "apiVersion": "v1", +               "metadata": { +                   "name": "router", +                   "namespace": "default", +                   "selfLink": "/oapi/v1/namespaces/default/deploymentconfigs/router", +                   "uid": "a441eedc-e1ae-11e6-a2d5-0e6967f34d42", +                   "resourceVersion": "6558", +                   "generation": 8, +                   "creationTimestamp": "2017-01-23T20:58:07Z", +                   "labels": { +                       "router": "router" +                   } +               }, +               "spec": { +                   "replicas": 2, +               } +           }''' + +        mock_openshift_cmd.side_effect = [ +            {"cmd": '/usr/bin/oc get dc router -n default', +             'results': dc, +             'returncode': 0}] + +        mock_tmpfile_copy.side_effect = [ +            '/tmp/mocked_kubeconfig', +        ] + +        results = OCScale.run_ansible(params, False) + +        self.assertFalse('changed' in results) +        self.assertEqual(results['failed'], True) + +    @mock.patch('oc_scale.Utils.create_tmpfile_copy') +    @mock.patch('oc_scale.OCScale.openshift_cmd')      def test_scale(self, mock_openshift_cmd, mock_tmpfile_copy):          ''' Testing scale '''          params = {'name': 'router', @@ -120,6 +408,55 @@ class OCScaleTest(unittest.TestCase):      @mock.patch('oc_scale.Utils.create_tmpfile_copy')      @mock.patch('oc_scale.OCScale.openshift_cmd') +    def test_scale_rc(self, mock_openshift_cmd, mock_tmpfile_copy): +        ''' Testing scale for replication controllers ''' +        params = {'name': 'router', +                  'namespace': 'default', +                  'replicas': 3, +                  'state': 'list', +                  'kind': 'rc', +                  'kubeconfig': '/etc/origin/master/admin.kubeconfig', +                  'debug': False} + +        rc = '''{"kind": "ReplicationController", +               "apiVersion": "v1", +               "metadata": { +                   "name": "router", +                   "namespace": "default", +                   "selfLink": "/oapi/v1/namespaces/default/deploymentconfigs/router", +                   "uid": "a441eedc-e1ae-11e6-a2d5-0e6967f34d42", +                   "resourceVersion": "6558", +                   "generation": 8, +                   "creationTimestamp": "2017-01-23T20:58:07Z", +                   "labels": { +                       "router": "router" +                   } +               }, +               "spec": { +                   "replicas": 3, +               } +           }''' + +        mock_openshift_cmd.side_effect = [ +            {"cmd": '/usr/bin/oc get rc router -n default', +             'results': rc, +             'returncode': 0}, +            {"cmd": '/usr/bin/oc create -f /tmp/router -n default', +             'results': '', +             'returncode': 0} +        ] + +        mock_tmpfile_copy.side_effect = [ +            '/tmp/mocked_kubeconfig', +        ] + +        results = OCScale.run_ansible(params, False) + +        self.assertFalse(results['changed']) +        self.assertEqual(results['result'][0], 3) + +    @mock.patch('oc_scale.Utils.create_tmpfile_copy') +    @mock.patch('oc_scale.OCScale.openshift_cmd')      def test_no_dc_scale(self, mock_openshift_cmd, mock_tmpfile_copy):          ''' Testing scale for inexisting dc '''          params = {'name': 'not_there',  | 
