- It is now possible to exclude cpu range by !1-3 - Also edited test for cpulist_unpack method to test this new feature - Resolves rhbz#1533908
248 lines
8.6 KiB
Python
248 lines
8.6 KiB
Python
import unittest2
|
|
import tempfile
|
|
import flexmock
|
|
import shutil
|
|
import re
|
|
import os
|
|
|
|
from tuned.utils.commands import commands
|
|
import tuned.consts as consts
|
|
from tuned.exceptions import TunedException
|
|
import tuned.utils.commands
|
|
|
|
tuned.utils.commands.log = flexmock.flexmock(info = lambda *args: None,\
|
|
error = lambda *args: None,debug = lambda *args: None,\
|
|
warn = lambda *args: None)
|
|
|
|
class CommandsTestCase(unittest2.TestCase):
|
|
def setUp(self):
|
|
self._commands = commands()
|
|
self._test_dir = tempfile.mkdtemp()
|
|
self._test_file = tempfile.NamedTemporaryFile(mode='r',dir = self._test_dir)
|
|
|
|
def test_get_bool(self):
|
|
positive_values = ['y','yes','t','true']
|
|
negative_values = ['n','no','f','false']
|
|
|
|
for val in positive_values:
|
|
self.assertEqual(self._commands.get_bool(val),"1")
|
|
|
|
for val in negative_values:
|
|
self.assertEqual(self._commands.get_bool(val),"0")
|
|
|
|
self.assertEqual(self._commands.get_bool('bad_value'),'bad_value')
|
|
|
|
def test_remove_ws(self):
|
|
self.assertEqual(self._commands.remove_ws(' a bc '),'a bc')
|
|
|
|
def test_unquote(self):
|
|
self.assertEqual(self._commands.unquote('"whatever"'),'whatever')
|
|
|
|
def test_escape(self):
|
|
self.assertEqual(self._commands.escape('\\'),'\\\\')
|
|
|
|
def test_unescape(self):
|
|
self.assertEqual(self._commands.unescape('\\'),'')
|
|
|
|
def test_align_str(self):
|
|
self.assertEqual(self._commands.align_str('abc',5,'def'),'abc def')
|
|
|
|
def test_dict2list(self):
|
|
dictionary = {'key1':1,'key2':2,'key3':3}
|
|
self.assertEqual(self._commands.dict2list(dictionary)\
|
|
,['key1',1,'key2',2,'key3',3])
|
|
|
|
def test_re_lookup_compile(self):
|
|
pattern = re.compile(r'([1-9])')
|
|
dictionary = {'[1-9]':''}
|
|
self.assertEqual(self._commands.re_lookup_compile(dictionary).pattern\
|
|
,pattern.pattern)
|
|
self.assertIsNone(self._commands.re_lookup_compile(None))
|
|
|
|
def test_multiple_re_replace(self):
|
|
text = 'abcd1234'
|
|
dictionary = {'abc':'gfh'}
|
|
pattern = self._commands.re_lookup_compile(dictionary)
|
|
self.assertEqual(self._commands.multiple_re_replace(dictionary,text)\
|
|
,'gfhd1234')
|
|
self.assertEqual(self._commands.multiple_re_replace(\
|
|
dictionary,text,pattern),'gfhd1234')
|
|
|
|
def test_re_lookup(self):
|
|
dictionary = {'abc':'abc','mno':'mno'}
|
|
text1 = 'abc def'
|
|
text2 = 'jkl mno'
|
|
text12 = 'abc mno'
|
|
text3 = 'whatever'
|
|
self.assertEqual(self._commands.re_lookup(dictionary,text1),'abc')
|
|
self.assertEqual(self._commands.re_lookup(dictionary,text2),'mno')
|
|
self.assertEqual(self._commands.re_lookup(dictionary,text12),'abc')
|
|
self.assertIsNone(self._commands.re_lookup(dictionary,text3),None)
|
|
|
|
def test_write_to_file(self):
|
|
self.assertTrue(self._commands.write_to_file(self._test_file.name,\
|
|
'hello world'))
|
|
with open(self._test_file.name,'r') as f:
|
|
self.assertEqual(f.read(),'hello world')
|
|
|
|
self.assertTrue(self._commands.write_to_file(self._test_file.name,\
|
|
'world hello'))
|
|
with open(self._test_file.name,'r') as f:
|
|
self.assertEqual(f.read(),'world hello')
|
|
|
|
local_test_file = self._test_dir + '/dir' +'/self._test_file'
|
|
self.assertTrue(self._commands.write_to_file(local_test_file,\
|
|
'hello world',True))
|
|
with open(local_test_file,'r') as f:
|
|
self.assertEqual(f.read(),'hello world')
|
|
|
|
shutil.rmtree(os.path.dirname(local_test_file))
|
|
|
|
self.assertFalse(self._commands.write_to_file(local_test_file,\
|
|
'hello world'))
|
|
|
|
def test_read_file(self):
|
|
with open(self._test_file.name,'w') as f:
|
|
f.write('hello world')
|
|
self.assertEqual(self._commands.read_file(self._test_file.name),\
|
|
'hello world')
|
|
self.assertEqual(self._commands.read_file('/bad_name','error'),\
|
|
'error')
|
|
|
|
def test_rmtree(self):
|
|
test_tree = self._test_dir + '/one/two'
|
|
os.makedirs(test_tree)
|
|
test_tree = self._test_dir + '/one'
|
|
self.assertTrue(self._commands.rmtree(test_tree))
|
|
self.assertFalse(os.path.isdir(test_tree))
|
|
self.assertTrue(self._commands.rmtree(test_tree))
|
|
|
|
def test_unlink(self):
|
|
local_test_file = self._test_dir + 'file_to_delete'
|
|
open(local_test_file,'w').close()
|
|
self.assertTrue(os.path.exists(local_test_file))
|
|
self.assertTrue(self._commands.unlink(local_test_file))
|
|
self.assertFalse(os.path.exists(local_test_file))
|
|
self.assertTrue(self._commands.unlink(local_test_file))
|
|
|
|
def test_rename(self):
|
|
rename_test_file = self._test_dir + '/bad_name'
|
|
open(rename_test_file,'w').close()
|
|
self.assertTrue(self._commands.rename(rename_test_file,\
|
|
self._test_dir + '/right_name'))
|
|
self.assertTrue(os.path.exists(self._test_dir + '/right_name'))
|
|
os.remove(self._test_dir + '/right_name')
|
|
|
|
def test_copy(self):
|
|
copy_test_file = self._test_dir + '/origo'
|
|
with open(copy_test_file,'w') as f:
|
|
f.write('hello world')
|
|
self.assertTrue(self._commands.copy(copy_test_file,\
|
|
self._test_dir + '/copy'))
|
|
self.assertTrue(os.path.exists(self._test_dir + '/copy'))
|
|
self.assertTrue(os.path.exists(self._test_dir + '/origo'))
|
|
with open(self._test_dir + '/copy','r') as f:
|
|
self.assertEqual(f.read(),'hello world')
|
|
os.remove(self._test_dir + '/origo')
|
|
os.remove(self._test_dir + '/copy')
|
|
|
|
def test_replace_in_file(self):
|
|
with open(self._test_file.name,'w') as f:
|
|
f.write('hello world')
|
|
|
|
self.assertTrue(self._commands.replace_in_file(self._test_file.name,\
|
|
'hello','bye'))
|
|
with open(self._test_file.name,'r') as f:
|
|
self.assertEqual(f.read(),'bye world')
|
|
|
|
def test_multiple_replace_in_file(self):
|
|
dictionary = {'abc':'123','ghi':'456'}
|
|
|
|
with open(self._test_file.name,'w') as f:
|
|
f.write('abc def ghi')
|
|
|
|
self.assertTrue(self._commands.multiple_replace_in_file(\
|
|
self._test_file.name,dictionary))
|
|
with open(self._test_file.name,'r') as f:
|
|
self.assertEqual(f.read(),'123 def 456')
|
|
|
|
def test_add_modify_option_in_file(self):
|
|
with open(self._test_file.name,'w') as f:
|
|
f.write('option1="123"\noption2="456"\n')
|
|
|
|
dictionary = {'option3':789,'option1':321}
|
|
self.assertTrue(self._commands.add_modify_option_in_file(\
|
|
self._test_file.name,dictionary))
|
|
with open(self._test_file.name,'r') as f:
|
|
self.assertEqual(f.read(),\
|
|
'option1="321"\noption2="456"\noption3="789"\n')
|
|
|
|
def test_get_active_option(self):
|
|
self.assertEqual(self._commands.get_active_option('opt1 [opt2] opt3'),\
|
|
'opt2')
|
|
self.assertEqual(self._commands.get_active_option('opt1 opt2 opt3'),\
|
|
'opt1')
|
|
self.assertEqual(self._commands.get_active_option(\
|
|
'opt1 opt2 opt3',False),'opt1 opt2 opt3')
|
|
|
|
def test_hex2cpulist(self):
|
|
self.assertEqual(self._commands.hex2cpulist('0xf'),[0,1,2,3])
|
|
self.assertEqual(self._commands.hex2cpulist('0x1,0000,0001'),[0,32])
|
|
|
|
def test_cpulist_unpack(self):
|
|
cpus = '4-8,^6,0xf00,,!10-11'
|
|
self.assertEqual(self._commands.cpulist_unpack(cpus),[4,5,7,8,9])
|
|
cpus = '1,2,3-x'
|
|
self.assertEqual(self._commands.cpulist_unpack(cpus),[])
|
|
cpus = '1,2,!3-x'
|
|
self.assertEqual(self._commands.cpulist_unpack(cpus),[])
|
|
|
|
def test_cpulist_pack(self):
|
|
self.assertEqual(self._commands.cpulist_pack([0,1,3,4,5,6,8,9,32]),\
|
|
['0-1','3-6','8-9','32'])
|
|
|
|
def test_cpulist2hex(self):
|
|
self.assertEqual(self._commands.cpulist2hex('1-3,5,32'),\
|
|
'00000001,0000002e')
|
|
|
|
def test_cpulist2bitmask(self):
|
|
self.assertEqual(self._commands.cpulist2bitmask([1,2,3]),0b1110)
|
|
self.assertEqual(self._commands.cpulist2bitmask([2,4,6]),0b1010100)
|
|
|
|
def test_get_size(self):
|
|
self.assertEqual(self._commands.get_size('100KB'),102400)
|
|
self.assertEqual(self._commands.get_size('100Kb'),102400)
|
|
self.assertEqual(self._commands.get_size('100kb'),102400)
|
|
self.assertEqual(self._commands.get_size('1MB'),1024 * 1024)
|
|
self.assertEqual(self._commands.get_size('1GB'),1024 * 1024 * 1024)
|
|
|
|
def test_get_active_profile(self):
|
|
consts.ACTIVE_PROFILE_FILE = self._test_dir + '/active_profile'
|
|
consts.PROFILE_MODE_FILE = self._test_dir + '/profile_mode'
|
|
with open(consts.ACTIVE_PROFILE_FILE,'w') as f:
|
|
f.write('test_profile')
|
|
with open(consts.PROFILE_MODE_FILE,'w') as f:
|
|
f.write('auto')
|
|
(profile,mode) = self._commands.get_active_profile()
|
|
self.assertEqual(profile,'test_profile')
|
|
self.assertEqual(mode,False)
|
|
os.remove(consts.ACTIVE_PROFILE_FILE)
|
|
os.remove(consts.PROFILE_MODE_FILE)
|
|
(profile,mode) = self._commands.get_active_profile()
|
|
self.assertEqual(profile,None)
|
|
self.assertEqual(mode,None)
|
|
|
|
def test_save_active_profile(self):
|
|
consts.ACTIVE_PROFILE_FILE = self._test_dir + '/active_profile'
|
|
consts.PROFILE_MODE_FILE = self._test_dir + '/profile_mode'
|
|
self._commands.save_active_profile('test_profile',False)
|
|
with open(consts.ACTIVE_PROFILE_FILE) as f:
|
|
self.assertEqual(f.read(),'test_profile\n')
|
|
with open(consts.PROFILE_MODE_FILE) as f:
|
|
self.assertEqual(f.read(),'auto\n')
|
|
os.remove(consts.ACTIVE_PROFILE_FILE)
|
|
os.remove(consts.PROFILE_MODE_FILE)
|
|
|
|
def tearDown(self):
|
|
self._test_file.close()
|
|
shutil.rmtree(self._test_dir)
|