Revert "unit tests for "Implemention manual scaling""
It prints stacktraces with errors to the logs during the unit tests
This reverts commit fabec23298
This commit is contained in:
parent
fabec23298
commit
1fb92de13c
1
AUTHORS
1
AUTHORS
@ -1,7 +1,6 @@
|
|||||||
Alexander Ignatov <aignatov@mirantis.com>
|
Alexander Ignatov <aignatov@mirantis.com>
|
||||||
Alexander Kuznetsov <akuznetsov@mirantis.com>
|
Alexander Kuznetsov <akuznetsov@mirantis.com>
|
||||||
Dmitry Mescheryakov <dmescheryakov@mirantis.com>
|
Dmitry Mescheryakov <dmescheryakov@mirantis.com>
|
||||||
Ilya Tyaptin <ityaptin@mirantis.com>
|
|
||||||
Jeremy Stanley <fungi@yuggoth.org>
|
Jeremy Stanley <fungi@yuggoth.org>
|
||||||
Matthew Farrellee <matt@redhat.com>
|
Matthew Farrellee <matt@redhat.com>
|
||||||
Nadya Privalova <nprivalova@mirantis.com>
|
Nadya Privalova <nprivalova@mirantis.com>
|
||||||
|
@ -1,43 +0,0 @@
|
|||||||
# Copyright (c) 2013 Mirantis Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
# implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
import unittest2
|
|
||||||
|
|
||||||
from savanna.db import models as m
|
|
||||||
from savanna.plugins.vanilla import exceptions as ex
|
|
||||||
from savanna.plugins.vanilla import plugin as p
|
|
||||||
|
|
||||||
|
|
||||||
class VanillaPluginScalingTest(unittest2.TestCase):
|
|
||||||
def setUp(self):
|
|
||||||
self.pl = p.VanillaProvider()
|
|
||||||
self.cl = m.Cluster("cluster1", "tenant1", "vanilla", "1.1.2")
|
|
||||||
self.ng1 = m.NodeGroup("nn", "f1", ["namenode"], 1)
|
|
||||||
self.ng2 = m.NodeGroup("jt", "f1", ["jobtracker"], 1)
|
|
||||||
self.ng3 = m.NodeGroup("tt", "f1", ["tasktracker"], 10)
|
|
||||||
self.cl_configs = self.pl.get_configs("1.1.2")
|
|
||||||
|
|
||||||
def test_validate_scaling(self):
|
|
||||||
ng_names = {self.ng1.name: 1, self.ng2.name: 1, self.ng3.name: 10}
|
|
||||||
self.cl.node_groups.append(self.ng1)
|
|
||||||
self.cl.node_groups.append(self.ng2)
|
|
||||||
self.cl.node_groups.append(self.ng3)
|
|
||||||
with self.assertRaises(ex.NodeGroupCannotBeScaled):
|
|
||||||
self.pl.validate_scaling(self.cl, ng_names, [self.ng1])
|
|
||||||
del ng_names['jt']
|
|
||||||
del ng_names['nn']
|
|
||||||
ng_names['dn'] = 3
|
|
||||||
with self.assertRaises(ex.NodeGroupsDoNotExist):
|
|
||||||
self.pl.validate_scaling(self.cl, ng_names, [self.ng3])
|
|
@ -1,109 +0,0 @@
|
|||||||
# Copyright (c) 2013 Mirantis Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
# implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
import mock
|
|
||||||
|
|
||||||
import savanna.db.models as m
|
|
||||||
from savanna.plugins import base
|
|
||||||
from savanna.plugins.vanilla import exceptions as ex
|
|
||||||
from savanna.plugins.vanilla import plugin
|
|
||||||
from savanna.service import api
|
|
||||||
from savanna.tests.unit import base as models_test_base
|
|
||||||
|
|
||||||
|
|
||||||
def patch_get_ng(test_ng):
|
|
||||||
temp_mock = mock.Mock()
|
|
||||||
temp_mock.to_object.return_value = test_ng
|
|
||||||
mock.patch("savanna.service.api.get_node_group_template",
|
|
||||||
return_value=temp_mock).start()
|
|
||||||
|
|
||||||
|
|
||||||
def patch(cluster, test_ng):
|
|
||||||
patch_get_ng(test_ng)
|
|
||||||
mock.patch("savanna.service.api.get_cluster",
|
|
||||||
return_value=cluster).start()
|
|
||||||
mock.patch("savanna.plugins.base.PluginManager.get_plugin",
|
|
||||||
return_value=plugin.VanillaProvider()).start()
|
|
||||||
|
|
||||||
|
|
||||||
class ClusterScalingApiTest(models_test_base.DbTestCase):
|
|
||||||
def init_cluster(self):
|
|
||||||
ng_master = m.NodeGroup('ng1', 'test_flavor',
|
|
||||||
['namenode', 'jobtracker'], 1)
|
|
||||||
ng_master.instances = [m.Instance("ng1", "i1", "i1")]
|
|
||||||
ng_datanode = m.NodeGroup('ng2', 'test_flavor',
|
|
||||||
['datanode'], 3)
|
|
||||||
ng_test_nodes = m.NodeGroup('ng3', 'test_flavor',
|
|
||||||
['datanode'], 3)
|
|
||||||
|
|
||||||
cluster = m.Cluster("cluster3", "test_tenant",
|
|
||||||
"vanilla", "1.1.2")
|
|
||||||
cluster.node_groups = [ng_master, ng_datanode]
|
|
||||||
base.setup_plugins()
|
|
||||||
return cluster, ng_test_nodes
|
|
||||||
|
|
||||||
def test_scale_cluster_with_adding_node_group(self):
|
|
||||||
cluster, ng_tasktracker = self.init_cluster()
|
|
||||||
patch(cluster, ng_tasktracker)
|
|
||||||
data = {'resize_node_groups': [],
|
|
||||||
'add_node_groups': [{'name': 'ng3', 'count': 4,
|
|
||||||
'node_group_template_id': '1'}]}
|
|
||||||
cluster = api.scale_cluster("1", data)
|
|
||||||
self.assertEqual(len(cluster.node_groups), 3)
|
|
||||||
|
|
||||||
def test_scale_cluster_with_adding_node_group_with_none_template_id(self):
|
|
||||||
cluster, ng_tasktracker = self.init_cluster()
|
|
||||||
patch(cluster, ng_tasktracker)
|
|
||||||
data = {'resize_node_groups': [],
|
|
||||||
'add_node_groups': [{'name': 'ng3', 'count': 4,
|
|
||||||
'node_group_template_id': None,
|
|
||||||
'flavor_id': '3',
|
|
||||||
'node_processes': ['tasktracker']}]}
|
|
||||||
cluster = api.scale_cluster("1", data)
|
|
||||||
self.assertEqual(len(cluster.node_groups), 3)
|
|
||||||
|
|
||||||
def test_scale_cluster_with_adding_invalid_node_group(self):
|
|
||||||
cluster, ng_tasktracker = self.init_cluster()
|
|
||||||
patch(cluster, ng_tasktracker)
|
|
||||||
data = {'resize_node_groups': [],
|
|
||||||
'add_node_groups': [{'name': 'ng3', 'count': 4,
|
|
||||||
'node_group_template_id': None,
|
|
||||||
'flavor_id': '3',
|
|
||||||
'node_processes': ['namenode']}]}
|
|
||||||
with self.assertRaises(ex.NodeGroupCannotBeScaled):
|
|
||||||
api.scale_cluster("1", data)
|
|
||||||
|
|
||||||
|
|
||||||
class ConstructNgsForScalingApiTest(models_test_base.DbTestCase):
|
|
||||||
def test_create_ngs_with_none_template_id(self):
|
|
||||||
additional_ng = [{'name': 'ng3', 'count': 4,
|
|
||||||
'node_group_template_id': None,
|
|
||||||
"flavor_id": "1",
|
|
||||||
"node_processes": ["namenode"]}]
|
|
||||||
result = api.construct_ngs_for_scaling(additional_ng)
|
|
||||||
self.assertEqual(len(result), 1)
|
|
||||||
ng = result.keys()[0]
|
|
||||||
self.assertEqual(ng.node_processes, ["namenode"])
|
|
||||||
self.assertEqual(result[ng], 4)
|
|
||||||
|
|
||||||
def test_create_ngs_with_template_id(self):
|
|
||||||
additional_ng = [{'name': 'ng3', 'count': 4,
|
|
||||||
'node_group_template_id': '1'}]
|
|
||||||
test_ng = m.NodeGroup("ng3", "f1", ["tasktracker"], 3)
|
|
||||||
patch_get_ng(test_ng)
|
|
||||||
result = api.construct_ngs_for_scaling(additional_ng)
|
|
||||||
self.assertEqual(len(result), 1)
|
|
||||||
ng = result.keys()[0]
|
|
||||||
self.assertEqual(result[ng], 4)
|
|
@ -1,87 +0,0 @@
|
|||||||
# Copyright (c) 2013 Mirantis Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
# implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
import mock
|
|
||||||
|
|
||||||
import savanna.db.models as m
|
|
||||||
from savanna.service import instances
|
|
||||||
from savanna.tests.unit import base as models_test_base
|
|
||||||
import savanna.utils.crypto as c
|
|
||||||
|
|
||||||
|
|
||||||
def run_instance_side_effect(*args):
|
|
||||||
return _mock_instance(args[2])
|
|
||||||
|
|
||||||
|
|
||||||
class ClusterScalingTest(models_test_base.DbTestCase):
|
|
||||||
|
|
||||||
def test_cluster_scaling_add_new_nodes(self):
|
|
||||||
node_groups = [m.NodeGroup("ng1", "fid1", ["namenode"], 2),
|
|
||||||
m.NodeGroup("ng2", "fid1", ["namenode"], 3)]
|
|
||||||
node_groups[0]._username = 'root'
|
|
||||||
node_groups[1]._username = 'root'
|
|
||||||
cluster = m.Cluster("cluster1", "tenant1",
|
|
||||||
"vanilla", "1.2.2", "image1")
|
|
||||||
cluster.node_groups = node_groups
|
|
||||||
cluster.private_key = c.generate_private_key(1024)
|
|
||||||
cluster._user_kp = mock.Mock()
|
|
||||||
cluster._user_kp.public_key = "123"
|
|
||||||
cluster.status = 'Active'
|
|
||||||
with mock.patch("savanna.service.instances._run_instance") as m_m:
|
|
||||||
m_m._run_instance.side_effect = run_instance_side_effect
|
|
||||||
res = instances.scale_cluster(cluster, {"ng1": 4, 'ng2': 5})
|
|
||||||
self.assertEqual(len(res), 4)
|
|
||||||
self.assertEqual(cluster.status, "Active")
|
|
||||||
|
|
||||||
def test_cluster_scaling_not_add_new_nodes(self):
|
|
||||||
node_groups = [m.NodeGroup("ng1", "fid1", ["namenode"], 2)]
|
|
||||||
node_groups[0]._username = 'root'
|
|
||||||
cluster = m.Cluster("cluster1", "tenant1",
|
|
||||||
"vanilla", "1.2.2", "image1")
|
|
||||||
cluster.node_groups = node_groups
|
|
||||||
cluster.private_key = c.generate_private_key(1024)
|
|
||||||
cluster._user_kp = mock.Mock()
|
|
||||||
cluster._user_kp.public_key = "123"
|
|
||||||
with mock.patch("savanna.service.instances._run_instance") as m_m:
|
|
||||||
m_m._run_instance.side_effect = run_instance_side_effect
|
|
||||||
new_instances = instances.scale_cluster(cluster, {"ng1": 2})
|
|
||||||
self.assertEqual(len(new_instances), 0)
|
|
||||||
|
|
||||||
def test_cluster_scaling_with_not_exists_node_group(self):
|
|
||||||
node_groups = [m.NodeGroup("ng1", "fid1", ["namenode"], 2), ]
|
|
||||||
node_groups[0]._username = 'root'
|
|
||||||
cluster = m.Cluster("cluster1", "tenant1",
|
|
||||||
"vanilla", "1.2.2", "image1")
|
|
||||||
cluster.node_groups = node_groups
|
|
||||||
cluster.private_key = c.generate_private_key(1024)
|
|
||||||
cluster._user_kp = mock.Mock()
|
|
||||||
cluster._user_kp.public_key = "123"
|
|
||||||
cluster.status = 'Active'
|
|
||||||
with mock.patch("savanna.service.instances._run_instance") as m_m:
|
|
||||||
m_m._run_instance.side_effect = run_instance_side_effect
|
|
||||||
new_instances = instances.scale_cluster(cluster,
|
|
||||||
{"not_exists_ng": 2})
|
|
||||||
self.assertEqual(len(new_instances), 0)
|
|
||||||
self.assertEqual(cluster.status, 'Active')
|
|
||||||
|
|
||||||
|
|
||||||
def _mock_instance(instance_id):
|
|
||||||
instance1 = mock.Mock()
|
|
||||||
instance1.id = instance_id
|
|
||||||
return instance1
|
|
||||||
|
|
||||||
|
|
||||||
def _mock_instances(count):
|
|
||||||
return [_mock_instance(str(i)) for i in range(1, count + 1)]
|
|
Loading…
Reference in New Issue
Block a user