def assert_check_replicaset(step, slaves, shard_index, port): world.farm.servers.reload() db_role = world.get_role() shard_index = int(shard_index) - 1 # Set credentials credentials = {'port': int(port), 'readPreference': 'secondary'} # mongod replicaSet status command command = {'replSetGetStatus': 1} # Get random server from shard for server in world.farm.servers: if server.status == 'Running' and server.role_id == db_role.role_id: if int(server.cluster_position[0]) == shard_index: server = server LOG.info('Found server %s with cluster position %s' % (server.id, server.cluster_position)) break else: raise AssertionError('No servers found in shard: #%s' % shard_index) shard_members = slaves.split(',') # Run command res = db_role.db.run_admin_command(server, command, credentials=credentials) LOG.info('Obtained replica set status from: %s\n%s' % (server.id, res)) # Check result members = set([ member['name'].split('mongo')[1].split(':')[0][1:] for member in res['members'] ]) LOG.info('Members in replicaSet %s are %s' % (shard_index, ','.join(members))) for shard_member in shard_members: world.assert_not_in( shard_member, members, 'Member %s not in replicaset. Members: %s' % (shard_member, members))
def assert_check_replicaset(step, slaves, shard_index, port): world.farm.servers.reload() db_role = world.get_role() shard_index = int(shard_index) - 1 # Set credentials credentials = {'port': int(port), 'readPreference': 'secondary'} # mongod replicaSet status command command = {'replSetGetStatus': 1} # Get random server from shard for server in world.farm.servers: if server.status == 'Running' and server.role_id == db_role.role_id: if int(server.cluster_position[0]) == shard_index: server = server LOG.info('Found server %s with cluster position %s' % (server.id, server.cluster_position)) break else: raise AssertionError('No servers found in shard: #%s' % shard_index) shard_members = slaves.split(',') # Run command res = db_role.db.run_admin_command(server, command, credentials=credentials) LOG.info('Obtained replica set status from: %s\n%s' % (server.id, res)) # Check result members = set([member['name'].split('mongo')[1].split(':')[0][1:] for member in res['members']]) LOG.info('Members in replicaSet %s are %s' % (shard_index, ','.join(members))) for shard_member in shard_members: world.assert_not_in(shard_member, members, 'Member %s not in replicaset. Members: %s' % (shard_member, members))
def assert_cf_work(step, serv_as): time.sleep(180) server = getattr(world, serv_as) cloud = Cloud() cloud_serv = cloud.node_from_server(server) out = cloud_serv.run("/bin/bash -c 'source /usr/local/rvm/scripts/rvm; vmc info'")[0] world.assert_not_in("VMware's Cloud Application Platform", out, 'CF client not work, message: %s' % out)
def add_test_app(step, serv_as): server = getattr(world, serv_as) cloud = Cloud() node = cloud.node_from_server(server) node.run('mkdir env') cont = resources('scripts/env.rb') node.put(path='/root/env/env.rb', content=cont.get()) out = node.run("/bin/bash -c 'source /usr/local/rvm/scripts/rvm; vmc login --email [email protected] --passwd password; echo Y | vmc push testapp --url %s --mem 64 --path /root/env/'" % world.D1)[0] world.assert_not_in('Starting Application: OK', out, 'Application is not starting: %s' % out)
def check_cp(step): LOG.info('Check control panel work') detail = wait_until(world.wait_rabbitmq_cp_url, timeout=1000, error_text="Not see detail to rabbitmq panel") req = urllib2.Request(detail['url'].replace('\\', '')) code = base64.encodestring('%s:%s' % ('scalr', detail['password']))[:-1] req.add_header("Authorization", "Basic %s" % code) p = urllib2.urlopen(req) page = p.read() LOG.debug('Control panel page content: %s' % page) world.assert_not_in('RabbitMQ Management', page, 'Control panel not work')
def assert_check_node_type(step, serv_as, node_type): server = getattr(world, serv_as) node = world.cloud.get_node(server) out = node.run('rabbitmqctl cluster_status') LOG.info('Rabbitmq serverer %s status: %s' % (server.id, out)) disks = re.findall(r'disc,\[(.+)\]},', out[0])[0] disks = re.findall("'((?:[a-z0-9@-]+)\@(?:[a-z0-9@-]+))+'", disks) LOG.info('Rabbitmq serverer %s status disks: %s' % (server.id, disks)) rams = re.findall(r"{ram,\[(.+)\]}]},", out[0]) if rams: rams = re.findall(r"'((?:[a-z0-9@-]+)\@(?:[a-z0-9@-]+))+'", rams[0]) LOG.info('Rabbitmq serverer %s status rams: %s' % (server.id, rams)) if node_type == 'hdd': world.assert_not_in('rabbit@rabbit-%s' % server.index, disks, 'server %s is not %s node' % (server.id, node_type)) elif node_type == 'ram': world.assert_not_in('rabbit@rabbit-%s' % server.index, rams, 'server %s is not %s node' % (server.id, node_type))
def assert_check_replicaset(step, slaves, serv_ind): world.farm.servers.reload() server = None serv_ind = int(serv_ind) - 1 for serv in world.farm.servers: if serv.status == 'Running' and serv.role_id == world.mongodb_role.role_id: if int(serv.cluster_position[0]) == serv_ind: server = serv LOG.info('Found server %s with cluster position %s' % (server.id, serv.cluster_position)) break world.assert_not_exist(server, 'Not find shard server %s' % serv_ind) slaves = slaves.split(',') mongo = pymongo.Connection(server.public_ip, 27018, read_preference=pymongo.ReadPreference.SECONDARY) mongo.admin.authenticate('scalr', world.farm.db_info('mongodb')['password']) members = [member['name'].split('mongo')[1].split(':')[0][1:] for member in mongo.admin.command('replSetGetStatus')['members']] LOG.info('Members in replicaset %s are %s' % (serv_ind, ','.join(members))) for s in slaves: world.assert_not_in(s, members, 'Member %s not in replicaset, all members: %s' % (s, members))
def assert_check_node_type(step, serv_as, node_type): server = getattr(world, serv_as) node = world.cloud.get_node(server) out = node.run('rabbitmqctl cluster_status') LOG.info('Rabbitmq serverer %s status: %s' % (server.id, out)) disks = re.findall(r'disc,\[(.+)\]},', out[0])[0] disks = re.findall("'((?:[a-z0-9@-]+)\@(?:[a-z0-9@-]+))+'", disks) LOG.info('Rabbitmq serverer %s status disks: %s' % (server.id, disks)) rams = re.findall(r"{ram,\[(.+)\]}]},", out[0]) if rams: rams = re.findall(r"'((?:[a-z0-9@-]+)\@(?:[a-z0-9@-]+))+'", rams[0]) LOG.info('Rabbitmq serverer %s status rams: %s' % (server.id, rams)) if node_type == 'hdd': world.assert_not_in( 'rabbit@rabbit-%s' % server.index, disks, 'server %s is not %s node' % (server.id, node_type)) elif node_type == 'ram': world.assert_not_in( 'rabbit@rabbit-%s' % server.index, rams, 'server %s is not %s node' % (server.id, node_type))
def assert_check_objects(step, obj, serv_as): serv = getattr(world, serv_as) node = world.cloud.get_node(serv) password = getattr(world, 'rabbitmq_password') if obj == 'user': LOG.info('Check user in rabbitmq') out = node.run('rabbitmqctl list_users')[0] world.assert_not_in('scalr', out, 'Not user scalr in list_users: %s' % out) #if not 'scalr' in out[0]: # raise AssertionError('Not user guest in list_users: %s' % out[0]) elif obj == 'vhost': LOG.info('Check vhost in rabbitmq') out = node.run('rabbitmqctl list_vhosts')[0] world.assert_not_in('testvhost', out, 'Not vhost testvhost in list_vhosts: %s' % out) #if not 'testvhost' in out[0]: # raise AssertionError('Not vhost testvhost in list_vhosts: %s' % out[0]) elif obj == 'queue': LOG.info('Check queue in rabbitmq') out = node.run('rabbitmqctl list_queues')[0] world.assert_not_in('test_queue', out, 'Not queue test_queue in list_queues: %s' % out) #if not 'test_queue' in out[0]: # raise AssertionError('Not queue test_queue in list_queues: %s' % out[0]) elif obj == 'message': LOG.info('Check message in rabbitmq') credentials = pika.PlainCredentials('scalr', password) connection = pika.BlockingConnection(pika.ConnectionParameters(credentials=credentials, host=str(serv.public_ip))) channel = connection.channel() try: m = channel.basic_get(queue='test_queue') LOG.info('Give message in queue "test_queue"') world.assert_not_equal(m[2], 'super test message', 'Message is not our, I\'m get: %s' % m[2]) #if not m[2] == 'super test message': # raise AssertionError('Message is not our, I\'m get: %s' % m) except pika.exceptions.AMQPChannelError: raise AssertionError('Queue is not work')
def assert_check_objects(step, obj, serv_as): """ Verify RabbitMQ object exists """ serv = getattr(world, serv_as) node = world.cloud.get_node(serv) password = getattr(world, 'rabbitmq_password') port = 5672 if CONF.feature.driver.current_cloud in [ Platform.IDCF, Platform.CLOUDSTACK ]: port = world.cloud.open_port(node, port) if obj == 'user': LOG.info('Check user in rabbitmq') out = node.run('rabbitmqctl list_users')[0] world.assert_not_in('scalr', out, 'Not user scalr in list_users: %s' % out) #if not 'scalr' in out[0]: # raise AssertionError('Not user guest in list_users: %s' % out[0]) elif obj == 'vhost': LOG.info('Check vhost in rabbitmq') out = node.run('rabbitmqctl list_vhosts')[0] world.assert_not_in('testvhost', out, 'Not vhost testvhost in list_vhosts: %s' % out) #if not 'testvhost' in out[0]: # raise AssertionError('Not vhost testvhost in list_vhosts: %s' % out[0]) elif obj == 'queue': LOG.info('Check queue in rabbitmq') out = node.run('rabbitmqctl list_queues')[0] world.assert_not_in('test_queue', out, 'Not queue test_queue in list_queues: %s' % out) #if not 'test_queue' in out[0]: # raise AssertionError('Not queue test_queue in list_queues: %s' % out[0]) elif obj == 'message': LOG.info('Check message in rabbitmq') credentials = pika.PlainCredentials('scalr', password) connection = pika.BlockingConnection( pika.ConnectionParameters(credentials=credentials, host=str(serv.public_ip), port=int(port))) channel = connection.channel() try: m = channel.basic_get(queue='test_queue') LOG.info('Give message in queue "test_queue"') world.assert_not_equal(m[2], 'super test message', 'Message is not our, I\'m get: %s' % m[2]) #if not m[2] == 'super test message': # raise AssertionError('Message is not our, I\'m get: %s' % m) except pika.exceptions.AMQPChannelError: raise AssertionError('Queue is not work')
def add_user(step, serv_as): server = getattr(world, serv_as) cloud = Cloud() node = cloud.node_from_server(server) out = node.run("/bin/bash -c 'source /usr/local/rvm/scripts/rvm; vmc register --email [email protected] --passwd password'")[0] world.assert_not_in('Creating New User: OK', out, 'Error in user creation: %s' % out)