Add cli component tests on role

- Add test on deleting role
- Add test on create role with primary=true
- Add test on update role with incorrect values

Change-Id: I2ce20b8fe096039cc85ce35496d0c56bd81a41a6
Closes-Bug: #1528903
This commit is contained in:
asledzinskiy 2016-01-05 20:11:14 +02:00
parent 58d6ff81ac
commit 7318310db0
2 changed files with 195 additions and 1 deletions

View File

@ -0,0 +1,11 @@
meta:
conflicts:
- controller
- compute
description: New role
has_primary: true
name: Test primary role
name: test-primary-role
volumes_roles_mapping:
- allocate_size: min
id: os

View File

@ -14,7 +14,7 @@
import os
from proboscis import test
from proboscis.asserts import assert_equal
from proboscis.asserts import assert_equal, assert_true
from fuelweb_test.helpers.decorators import log_snapshot_after_test
from fuelweb_test.helpers.utils import run_on_remote
@ -155,3 +155,186 @@ class CommandLineRoleTests(test_cli_base.CommandLine):
"We shouldn't be able to assign controller and"
" compute node to node id {}".format(node_ids[1]))
self.env.make_snapshot("cli_create_role")
@test(depends_on=[SetupEnvironment.prepare_slaves_3],
groups=["cli_create_role_with_has_primary"])
@log_snapshot_after_test
def cli_create_role_with_has_primary(self):
"""Create new role using Fuel CLI
Scenario:
1. Revert snapshot "ready_with_3_slaves"
2. Upload new role yaml to master
3. Upload yaml to nailgun using Fuel CLI
4. Create new cluster
5. Try to create node with new role
Duration 20m
"""
self.show_step(1, initialize=True)
self.env.revert_snapshot("ready_with_3_slaves")
node_ids = [self.fuel_web.get_nailgun_node_by_devops_node(
self.env.d_env.nodes().slaves[slave_id])['id']
for slave_id in range(3)]
release_id = self.fuel_web.get_releases_list_for_os(
release_name=OPENSTACK_RELEASE)[0]
templates_path = os.path.join(
'{0}/fuelweb_test/config_templates/'.format(os.environ.get(
"WORKSPACE", "./")), 'create_primary_role.yaml')
self.show_step(2)
if os.path.exists(templates_path):
self.ssh_manager.upload_to_remote(self.ssh_manager.admin_ip,
templates_path, '/tmp')
self.show_step(3)
self.ssh_manager.execute_on_remote(
ip=self.ssh_manager.admin_ip,
cmd='fuel role --rel {} --create --file'
' /tmp/create_primary_role.yaml'.format(release_id))
with self.env.d_env.get_admin_remote() as remote:
if NEUTRON_SEGMENT_TYPE:
nst = '--nst={0}'.format(NEUTRON_SEGMENT_TYPE)
else:
nst = ''
self.show_step(4)
cmd = ('fuel env create --name={0} --release={1} '
'{2} --json'.format(self.__class__.__name__,
release_id, nst))
env_result = run_on_remote(remote, cmd, jsonify=True)
cluster_id = env_result['id']
self.show_step(5)
cmd = ('fuel --env-id={0} node set --node {1}'
' --role=test-primary-role'.format(cluster_id,
node_ids[0]))
result = remote.execute(cmd)
assert_equal(result['exit_code'], 0,
"Can't assign new role"
" to node id {}".format(node_ids[0]))
self.env.make_snapshot("cli_create_role_with_has_primary")
@test(depends_on=[SetupEnvironment.prepare_slaves_3],
groups=["cli_delete_role"])
@log_snapshot_after_test
def cli_delete_role(self):
"""Delete role using Fuel CLI
Scenario:
1. Revert snapshot "ready_with_3_slaves"
2. Upload new role yaml to master
3. Upload yaml to nailgun using Fuel CLI
4. Check new role exists
5. Create new cluster
6. Create node with controller, compute
7. Delete new role
8. Try to delete controller role and check it's impossible
Duration 20m
"""
self.show_step(1, initialize=True)
self.env.revert_snapshot("ready_with_3_slaves")
node_ids = [self.fuel_web.get_nailgun_node_by_devops_node(
self.env.d_env.nodes().slaves[slave_id])['id']
for slave_id in range(3)]
release_id = self.fuel_web.get_releases_list_for_os(
release_name=OPENSTACK_RELEASE)[0]
templates_path = os.path.join(
'{0}/fuelweb_test/config_templates/'.format(os.environ.get(
"WORKSPACE", "./")), 'create_role.yaml')
self.show_step(2)
if os.path.exists(templates_path):
self.ssh_manager.upload_to_remote(self.ssh_manager.admin_ip,
templates_path, '/tmp')
self.show_step(3)
self.ssh_manager.execute_on_remote(
ip=self.ssh_manager.admin_ip,
cmd='fuel role --rel {} --create --file'
' /tmp/create_role.yaml'.format(release_id))
result = self.ssh_manager.execute_on_remote(
ip=self.ssh_manager.admin_ip,
cmd='fuel role --rel {}'.format(release_id))['stdout']
self.show_step(4)
roles = [i.strip() for i in result]
assert_true('test-role' in roles,
"role is not in the list {}".format(roles))
with self.env.d_env.get_admin_remote() as remote:
if NEUTRON_SEGMENT_TYPE:
nst = '--nst={0}'.format(NEUTRON_SEGMENT_TYPE)
else:
nst = ''
self.show_step(5)
cmd = ('fuel env create --name={0} --release={1} '
'{2} --json'.format(self.__class__.__name__,
release_id, nst))
env_result = run_on_remote(remote, cmd, jsonify=True)
cluster_id = env_result['id']
self.show_step(6)
cmd = ('fuel --env-id={0} node set --node {1}'
' --role=controller'.format(cluster_id, node_ids[0]))
result = remote.execute(cmd)
assert_equal(result['exit_code'], 0,
"Can't assign controller and"
" compute node to node id {}".format(node_ids[0]))
self.show_step(7)
cmd = ('fuel role --rel {} --delete'
' --role test-role'.format(release_id))
result = remote.execute(cmd)
assert_equal(result['exit_code'], 0,
"Can't delete role, result is {}".format(result))
result = self.ssh_manager.execute_on_remote(
ip=self.ssh_manager.admin_ip,
cmd='fuel role --rel {}'.format(release_id))['stdout']
roles = [i.strip() for i in result]
assert_true('test-role' not in roles,
"role is not in the list {}".format(roles))
cmd = ('fuel role --rel {} --delete'
' --role controller'.format(release_id))
result = remote.execute(cmd)
self.show_step(8)
assert_equal(result['exit_code'], 1,
"Controller role shouldn't be able to be deleted")
self.env.make_snapshot("cli_delete_role")
@test(depends_on=[SetupEnvironment.prepare_slaves_3],
groups=["cli_incorrect_update_role"])
@log_snapshot_after_test
def cli_incorrect_update_role(self):
"""Update controller role using Fuel CLI
Scenario:
1. Revert snapshot "ready_with_3_slaves"
2. Download controller role yaml to master
3. Modify "id" section to incorrect value
4. Upload changes using Fuel CLI
5. Check that error message was got
Duration 20m
"""
self.show_step(1, initialize=True)
self.env.revert_snapshot("ready_with_3_slaves")
release_id = self.fuel_web.get_releases_list_for_os(
release_name=OPENSTACK_RELEASE)[0]
self.show_step(2)
self.ssh_manager.execute_on_remote(
ip=self.ssh_manager.admin_ip,
cmd='fuel role --rel {} --role controller --file'
' /tmp/controller.yaml'.format(release_id))
self.show_step(3)
self.ssh_manager.execute_on_remote(
ip=self.ssh_manager.admin_ip,
cmd="sed -i -r 's/id: os/id: blabla/' /tmp/controller.yaml")
self.show_step(4)
self.show_step(5)
self.ssh_manager.execute_on_remote(
ip=self.ssh_manager.admin_ip,
cmd='fuel role --rel {} --role controller --update --file'
' /tmp/controller.yaml'.format(release_id),
assert_ec_equal=[1])
self.env.make_snapshot("cli_incorrect_update_role")