X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=qaapi%2Fqa%2Ftests%2Fnode%2Fnode_cpu_sched.py;fp=qaapi%2Fqa%2Ftests%2Fnode%2Fnode_cpu_sched.py;h=0000000000000000000000000000000000000000;hb=ab1742cec9707654d574cd62199d811fc5a79b1d;hp=fb39349b1aaaf55ad317d02deea56c7a0b6e838f;hpb=33db9af58df8abbc61a00f9b9b74f624758c20e8;p=tests.git diff --git a/qaapi/qa/tests/node/node_cpu_sched.py b/qaapi/qa/tests/node/node_cpu_sched.py deleted file mode 100755 index fb39349..0000000 --- a/qaapi/qa/tests/node/node_cpu_sched.py +++ /dev/null @@ -1,241 +0,0 @@ -#!/usr/bin/python - -""" -This file contains a stand-alone CPU scheduler test to be run on a node. -It still needs to be integrated into the testing framework. -""" - -import sys -import commands -import re -from threading import Thread - -class CpuTest: - def __init__(self, ctx, cpu, resv, share, min, max, desc): - self.ctx = ctx - self.cpu = cpu - self.resv = resv - self.share = share - self.min = min - self.max = max - self.desc = desc - - -class Spinner(Thread): - def __init__(self, test): - Thread.__init__(self) - - cmd = '/usr/bin/time ./_busyloop.py 15' - if test.share: - flags = '--idle-time' - else: - flags = '' - - self.cmd = 'taskset -c ' + str(test.cpu) \ - + ' vcontext --create --xid ' + str(test.ctx) + ' --disconnect ' \ - + '-- vsched --fill-rate ' + str(test.resv) + ' --interval 100 ' \ - + '--fill-rate2 ' + str(test.share) + ' --interval2 1000 ' \ - + '--tokens 100 --tokens-min 50 --tokens-max 100 --force '\ - + flags + ' -- vattribute --flag sched_hard -- ' + cmd - - self.test = test - - def run(self): - self.output = commands.getoutput( self.cmd ) - - def passed(self): - match = re.search('elapsed (\d+)%CPU', self.output) - if match: - self.pct = int(match.group(1)) - else: - print "Error parsing output: cannot get CPU%" - self.pct = 0 - - return ( self.pct >= self.test.min and self.pct <= self.test.max ) - - -def run_test(testlist): - failures = 0 - - for test in testlist: - test.thread = Spinner(test) - test.thread.start() - - for test in testlist: - test.thread.join() - - for test in testlist: - if test.thread.passed(): - print "[PASSED] (" + str(test.thread.pct) + "%)\t", test.desc - else: - print "[FAILED] (" + str(test.thread.pct) + "%)\t", test.desc - failures += 1 - - return failures - -### Test 1: test share scheduling of a single task (should get 100%) -def test_1(): - test = CpuTest(ctx=600, cpu=0, resv=0, share=1, min=99, max=100, - desc = "Test 1: single ctx, one share") - - return run_test([ test ]) - -### Test 2: test hard rate-limiting to 25% (should get <= 25%) -def test_2(): - test = CpuTest(ctx=600, cpu=0, resv=25, share=0, min=24, max=25, - desc = "Test 2: single ctx, 25% resv") - - return run_test([ test ]) - -### Test 3: test hard & share scheduling of a single task (should get 100%) -def test_3(): - test = CpuTest(ctx=600, cpu=0, resv=25, share=1, min=99, max=100, - desc = "Test 3: single ctx, 25% resv, one share") - - return run_test([ test ]) - -### Test 4: test relative share scheduling of several tasks -def test_4(): - test1 = CpuTest(ctx=600, cpu=0, resv=0, share=1, min=15, max=17, - desc = "Test 4: ctx 1, one share") - test2 = CpuTest(ctx=601, cpu=0, resv=0, share=2, min=32, max=34, - desc = " ctx 2, two shares") - test3 = CpuTest(ctx=602, cpu=0, resv=0, share=3, min=49, max=51, - desc = " ctx 3, three shares") - - return run_test([ test1, test2, test3 ]) - -### Test 5: test hard rate limit and shares -def test_5(): - test1 = CpuTest(ctx=600, cpu=0, resv=0, share=1, min=14, max=16, - desc = "Test 5: ctx 1, one share") - test2 = CpuTest(ctx=601, cpu=0, resv=0, share=2, min=29, max=33, - desc = " ctx 2, two shares") - test3 = CpuTest(ctx=602, cpu=0, resv=0, share=3, min=44, max=47, - desc = " ctx 3, three shares") - test4 = CpuTest(ctx=603, cpu=0, resv=10, share=0, min=9, max=10, - desc = " ctx 4, 10% resv") - - return run_test([ test1, test2, test3, test4 ]) - -### Test 6: test guarantee and shares -def test_6(): - test1 = CpuTest(ctx=600, cpu=0, resv=0, share=1, min=9, max=11, - desc = "Test 6: ctx 1, one share") - test2 = CpuTest(ctx=601, cpu=0, resv=0, share=2, min=19, max=21, - desc = " ctx 2, two shares") - test3 = CpuTest(ctx=602, cpu=0, resv=0, share=3, min=29, max=31, - desc = " ctx 3, three shares") - test4 = CpuTest(ctx=603, cpu=0, resv=30, share=1, min=38, max=41, - desc = " ctx 4, 30% resv, one share") - - return run_test([ test1, test2, test3, test4 ]) - -### Now, run all tests on two processors -### Test 7: SMP active (both tasks should get 100% on an SMP) -def test_7(): - test1 = CpuTest(ctx=600, cpu=0, resv=0, share=1, min=99, max=100, - desc = "Test 7: ctx 1, processor 1, one share") - test2 = CpuTest(ctx=601, cpu=1, resv=0, share=1, min=99, max=100, - desc = " ctx 2, processor 2, one share") - - return run_test([ test1, test2 ]) - -### Test 8: SMP, test hard rate-limiting to 25% (should get <= 25%) -def test_8(): - test1 = CpuTest(ctx=600, cpu=0, resv=25, share=0, min=24, max=25, - desc = "Test 8: ctx 1, proc 1, 25% resv") - test2 = CpuTest(ctx=601, cpu=1, resv=25, share=0, min=24, max=25, - desc = " ctx 2, proc 2, 25% resv") - - return run_test([ test1, test2 ]) - -### Test 9: SMP, test hard & share scheduling of a single task -def test_9(): - test1 = CpuTest(ctx=600, cpu=0, resv=25, share=1, min=99, max=100, - desc = "Test 9: ctx 1, proc 1, 25% resv, one share") - test2 = CpuTest(ctx=601, cpu=1, resv=25, share=1, min=99, max=100, - desc = " ctx 2, proc 2, 25% resv, one share") - - return run_test([ test1, test2 ]) - -### Test 10: SMP, test relative share scheduling of several tasks -def test_10(): - test1 = CpuTest(ctx=600, cpu=0, resv=0, share=1, min=15, max=17, - desc = "Test 10: ctx 1, proc 1, one share") - test2 = CpuTest(ctx=601, cpu=0, resv=0, share=2, min=32, max=34, - desc = " ctx 2, proc 1, two shares") - test3 = CpuTest(ctx=602, cpu=0, resv=0, share=3, min=49, max=51, - desc = " ctx 3, proc 1, three shares") - test4 = CpuTest(ctx=603, cpu=1, resv=0, share=1, min=15, max=17, - desc = " ctx 4, proc 2, one share") - test5 = CpuTest(ctx=604, cpu=1, resv=0, share=2, min=32, max=34, - desc = " ctx 5, proc 2, two shares") - test6 = CpuTest(ctx=605, cpu=1, resv=0, share=3, min=49, max=51, - desc = " ctx 6, proc 2, three shares") - - return run_test([ test1, test2, test3, test4, test5, test6 ]) - -### Test 11: SMP, test hard rate limit and shares -def test_11(): - test1 = CpuTest(ctx=600, cpu=0, resv=0, share=1, min=14, max=16, - desc = "Test 11: ctx 1, proc 1, one share") - test2 = CpuTest(ctx=601, cpu=0, resv=0, share=2, min=29, max=33, - desc = " ctx 2, proc 1, two shares") - test3 = CpuTest(ctx=602, cpu=0, resv=0, share=3, min=44, max=47, - desc = " ctx 3, proc 1, three shares") - test4 = CpuTest(ctx=603, cpu=0, resv=10, share=0, min=9, max=10, - desc = " ctx 4, proc 1, 10% resv") - test5 = CpuTest(ctx=604, cpu=1, resv=0, share=1, min=14, max=16, - desc = " ctx 5, proc 2, one share") - test6 = CpuTest(ctx=605, cpu=1, resv=0, share=2, min=29, max=33, - desc = " ctx 6, proc 2, two shares") - test7 = CpuTest(ctx=606, cpu=1, resv=0, share=3, min=44, max=47, - desc = " ctx 7, proc 2, three shares") - test8 = CpuTest(ctx=607, cpu=1, resv=10, share=0, min=9, max=10, - desc = " ctx 8, proc 2, 10% resv") - - return run_test([ test1, test2, test3, test4, test5, test6, test7, test8 ]) - -### Test 12: SMP, test guarantee and shares -def test_12(): - test1 = CpuTest(ctx=600, cpu=0, resv=0, share=1, min=9, max=11, - desc = "Test 12: ctx 1, proc 1, one share") - test2 = CpuTest(ctx=601, cpu=0, resv=0, share=2, min=19, max=21, - desc = " ctx 2, proc 1, two shares") - test3 = CpuTest(ctx=602, cpu=0, resv=0, share=3, min=29, max=31, - desc = " ctx 3, proc 1, three shares") - test4 = CpuTest(ctx=603, cpu=0, resv=30, share=1, min=38, max=41, - desc = " ctx 4, proc 1, 30% resv, one share") - test5 = CpuTest(ctx=604, cpu=1, resv=0, share=1, min=9, max=11, - desc = " ctx 5, proc 2, one share") - test6 = CpuTest(ctx=605, cpu=1, resv=0, share=2, min=19, max=21, - desc = " ctx 6, proc 2, two shares") - test7 = CpuTest(ctx=606, cpu=1, resv=0, share=3, min=29, max=31, - desc = " ctx 7, proc 2, three shares") - test8 = CpuTest(ctx=607, cpu=1, resv=30, share=1, min=38, max=41, - desc = " ctx 8, proc 2, 30% resv, one share") - - return run_test([ test1, test2, test3, test4, test5, test6, test7, test8 ]) - - -def main(): - failures = 0 - - failures += test_1() - failures += test_2() - failures += test_3() - failures += test_4() - failures += test_5() - failures += test_6() - failures += test_7() - failures += test_8() - failures += test_9() - failures += test_10() - failures += test_11() - failures += test_12() - - return failures - -if __name__ == "__main__": - sys.exit(main())