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:
parent
b0d2756732
commit
a8807613ad
|
@ -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])
|
||||
|
|
Loading…
Reference in New Issue