Move get_placement out of test

This doesn't really need to be a class function, due to the limited use
of 'self'

Change-Id: Ib397ef59730786ca970cf5cae2ce1087abcdb8c5
This commit is contained in:
Stephen Finucane 2016-12-09 14:42:20 +00:00
parent b0d2756732
commit a8807613ad
1 changed files with 29 additions and 23 deletions

View File

@ -26,6 +26,34 @@ CONF = config.CONF
LOG = logging.getLogger(__name__)
def get_host_numa_placement(instance, vcpus):
"""Get placement of instance CPUs on host.
:param instance: Instance to get placement for.
:param vcpus: Number of vCPUs on instance.
"""
out, _ = processutils.execute('ps -eo pid,cmd,args | awk \'/%s/ && '
'!/grep/ {print $1}\'' %
instance['id'], shell=True)
if not out:
return
cgroup, _ = processutils.execute('grep cpuset /proc/%s/cgroup'
% out.strip(), shell=True)
cgroup = cgroup.split(":")[-1].strip()
if cgroup.index('emulator'):
cgroup = cgroup + '/..'
placement = []
for i in range(vcpus):
cpus, _ = processutils.execute('cgget -n -v -r cpuset.cpus %s'
% (cgroup.replace('\\', '\\\\') +
'/vcpu' + str(i)), shell=True)
placement.append(cpus.strip())
return placement
class TestServerNumaBase(manager.NetworkScenarioTest):
credentials = ['admin']
@ -107,28 +135,6 @@ class TestServerNumaBase(manager.NetworkScenarioTest):
username='cirros',
private_key=self.keypair['private_key'])
def get_placement(self, vcpu):
out, _ = processutils.execute('ps -eo pid,cmd,args | awk \'/%s/ && '
'!/grep/ {print $1}\'' %
self.instance['id'], shell=True)
if not out:
return
cgroup, _ = processutils.execute('grep cpuset /proc/%s/cgroup'
% out.strip(), shell=True)
cgroup = cgroup.split(":")[-1].strip()
if cgroup.index('emulator'):
cgroup = cgroup + '/..'
placement = []
for i in range(vcpu):
cpus, _ = processutils.execute('cgget -n -v -r cpuset.cpus %s'
% (cgroup.replace('\\', '\\\\') +
'/vcpu' + str(i)), shell=True)
placement.append(cpus.strip())
return placement
class TestServerNumaTopo(TestServerNumaBase):
"""
@ -166,7 +172,7 @@ class TestServerNumaTopo(TestServerNumaBase):
topo = self.get_numa_topology(rmt_client)
self.assertEqual(2, len(topo['nodes']))
self.assertNotEqual(None, rmt_client)
placement = self.get_placement(4)
placement = get_host_numa_placement(self.instance, 4)
self.assertEqual(placement[0], placement[1])
self.assertNotEqual(placement[1], placement[2])
self.assertEqual(placement[2], placement[3])