public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP]  [PATCH] Add new testcases for cgroup
@ 2009-08-26  0:04 Shi Weihua
  2009-08-26  5:49 ` Subrata Modak
  2009-08-26 15:28 ` Matt Helsley
  0 siblings, 2 replies; 5+ messages in thread
From: Shi Weihua @ 2009-08-26  0:04 UTC (permalink / raw)
  To: subrata; +Cc: ltp-list

We has created some testcases for cgroup in the last year. 
There are total 194 testcases that have been added. These testcases contain 
the basis operation test, part functionality test and stress test of cgroup.

How to run this test:
	# runltp -f controllers

Result:
Now, we start the test for cgroup...
cgroup_test_fj    1  TPASS  :  case1(function   1 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case2(function   1 2 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case3(function   1 1 1 2 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case4(function   1 1 1 3 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case5(function   1 1 1 4 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case6(function   1 1 1 5 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case7(function   1 1 1 6 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case8(function   1 1 1 7 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case9(function   1 1 1 8 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case10(function  2 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case11(function  2 2 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case12(function  2 1 2 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case13(function  2 1 1 2 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case14(function  2 1 1 3 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case15(function  2 1 1 4 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case16(function  2 1 1 5 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case17(function  2 1 1 6 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case18(function  2 1 1 7 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case19(function  2 1 1 8 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case20(function  3 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case21(function  3 2 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case22(function  3 1 1 2 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case23(function  3 1 1 3 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case24(function  3 1 1 4 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case25(function  3 1 1 5 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case26(function  3 1 1 6 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case27(function  3 1 1 7 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case28(function  3 1 1 8 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case29(function  4 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case30(function  4 2 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case31(function  4 1 1 2 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case32(function  4 1 1 3 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case33(function  4 1 1 4 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case34(function  4 1 1 5 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case35(function  4 1 1 6 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case36(function  4 1 1 7 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case37(function  4 1 1 8 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case38(function  5 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case39(function  5 2 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case40(function  5 1 1 2 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case41(function  5 1 1 3 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case42(function  5 1 1 4 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case43(function  5 1 1 5 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case44(function  5 1 1 6 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case45(function  5 1 1 7 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case46(function  5 1 1 8 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case47(function  6 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case48(function  6 2 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case49(function  6 1 1 2 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case50(function  6 1 1 3 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case51(function  6 1 1 4 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case52(function  6 1 1 5 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case53(function  6 1 1 6 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case54(function  6 1 1 7 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case55(function  6 1 1 8 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case56(function  7 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case57(function  7 2 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case58(function  7 1 1 2 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case59(function  7 1 1 3 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case60(function  7 1 1 4 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case61(function  7 1 1 5 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case62(function  7 1 1 6 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case63(function  7 1 1 7 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case64(function  7 1 1 8 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case65(function  8 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case66(function  9 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case67(function  9 2 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case68(function  9 1 1 2 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case69(function  9 1 1 3 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case70(function  9 1 1 4 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case71(function  9 1 1 5 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case72(function  9 1 1 6 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case73(function  9 1 1 7 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case74(function  9 1 1 8 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case75(function  10 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case76(function  11 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case77(function  11 2 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case78(function  11 1 1 2 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case79(function  11 1 1 3 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case80(function  11 1 1 4 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case81(function  11 1 1 5 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case82(function  11 1 1 6 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case83(function  11 1 1 7 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case84(function  11 1 1 8 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case85(function  12 1 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case86(function  12 2 1 1 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case87(function  12 1 1 2 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case88(function  12 1 1 3 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case89(function  12 1 1 4 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case90(function  12 1 1 5 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case91(function  12 1 1 6 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case92(function  12 1 1 7 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case93(function  12 1 1 8 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case94(function  1 1 1 1 1 1 2 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case95(function  1 1 1 1 1 2 2 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case96(function  1 1 1 1 1 2 3 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case97(function  1 1 1 1 1 2 5 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case98(function  1 1 1 1 1 3 1 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case99(function  1 1 1 1 1 3 2 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case100(function 1 1 1 1 1 3 4 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case101(function 1 1 1 1 1 4 3 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case102(function 1 1 1 1 1 4 5 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case103(function 1 1 1 1 2 1 1 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case104(function 1 1 1 1 1 1 1 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case105(function 1 1 1 1 1 1 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case106(function 1 1 1 1 1 2 3 2 2)    PASS
cgroup_test_fj    1  TPASS  :  case107(function 1 1 1 1 1 2 3 2 3)    PASS
cgroup_test_fj    1  TPASS  :  case108(function 1 1 1 1 1 2 3 2 4)    PASS
cgroup_test_fj    1  TPASS  :  case109(function 1 1 1 1 1 2 3 2 5)    PASS
cgroup_test_fj    1  TPASS  :  case110(function 1 1 1 1 1 2 3 2 6)    PASS
cgroup_test_fj    1  TPASS  :  case111(function 1 1 1 1 1 2 3 2 7)    PASS
cgroup_test_fj    1  TPASS  :  case112(function 1 1 1 1 1 2 3 3 2)    PASS
cgroup_test_fj    1  TPASS  :  case113(function 1 1 1 1 1 2 3 4 2)    PASS
cgroup_test_fj    1  TPASS  :  case114(function 1 1 1 1 1 2 3 5 2)    PASS
cgroup_test_fj    1  TPASS  :  case115(function 1 1 1 1 1 2 3 6 2)    PASS
cgroup_test_fj    1  TPASS  :  case116(function 1 1 1 1 1 2 3 7 2)    PASS
cgroup_test_fj    1  TPASS  :  case117(function 1 1 1 2 1 2 3 2 2)    PASS
cgroup_test_fj    1  TPASS  :  case118(function 1 1 1 3 1 2 3 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case119(function 1 1 1 3 1 2 3 1 2)    PASS
cgroup_test_fj    1  TPASS  :  case120(function 1 1 1 3 1 2 3 1 3)    PASS
cgroup_test_fj    1  TPASS  :  case121(function 1 1 1 3 1 2 3 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case122(function 1 1 1 3 1 2 3 2 2)    PASS
cgroup_test_fj    1  TPASS  :  case123(function 1 1 1 3 1 2 3 2 3)    PASS
cgroup_test_fj    1  TPASS  :  case124(function 1 1 1 3 1 2 3 2 4)    PASS
cgroup_test_fj    1  TPASS  :  case125(function 1 1 1 3 1 2 3 2 5)    PASS
cgroup_test_fj    1  TPASS  :  case126(function 1 1 1 3 1 2 3 2 6)    PASS
cgroup_test_fj    1  TPASS  :  case127(function 1 1 1 3 1 2 3 2 7)    PASS
cgroup_test_fj    1  TPASS  :  case128(function 1 1 1 3 1 2 3 3 1)    PASS
cgroup_test_fj    1  TPASS  :  case129(function 1 1 1 3 1 2 3 3 2)    PASS
cgroup_test_fj    1  TPASS  :  case130(function 1 1 1 3 1 2 3 3 3)    PASS
cgroup_test_fj    1  TPASS  :  case131(function 1 1 1 3 1 2 3 4 2)    PASS
cgroup_test_fj    1  TPASS  :  case132(function 1 1 1 3 1 2 3 5 2)    PASS
cgroup_test_fj    1  TPASS  :  case133(function 1 1 1 3 1 2 3 6 2)    PASS
cgroup_test_fj    1  TPASS  :  case134(function 1 1 1 3 1 2 3 7 2)    PASS
cgroup_test_fj    1  TPASS  :  case135(function2        1)    PASS
cgroup_test_fj    1  TPASS  :  case136(function2        2)    PASS
cgroup_test_fj    1  TPASS  :  case137(function2        3)    PASS
cgroup_test_fj    1  TPASS  :  case138(function2        4)    PASS
cgroup_test_fj    1  TPASS  :  case139(function2        5)    PASS
cgroup_test_fj    1  TPASS  :  case140(function2        6)    PASS
cgroup_test_fj    1  TPASS  :  case141(function2        7)    PASS
cgroup_test_fj    1  TPASS  :  case142(function2        8)    PASS
cgroup_test_fj    1  TPASS  :  case143(function2        9)    PASS
cgroup_test_fj    1  TPASS  :  case144(function2        10)    PASS
cgroup_test_fj    1  TPASS  :  case145(function2        11)    PASS
cgroup_test_fj    1  TPASS  :  case146(function2        12)    PASS
cgroup_test_fj    1  TPASS  :  case147(function2        13)    PASS
cgroup_test_fj    1  TPASS  :  case148(stress   1 2 1 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case149(stress   2 2 1 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case150(stress   3 2 1 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case151(stress   4 2 1 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case152(stress   5 2 1 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case153(stress   6 2 1 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case154(stress   7 2 1 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case155(stress   1 1 1 1 2)    PASS
cgroup_test_fj    1  TPASS  :  case156(stress   1 1 1 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case157(stress   1 1 1 2 2)    PASS
cgroup_test_fj    1  TPASS  :  case158(stress   1 1 1 2 3)    PASS
cgroup_test_fj    1  TPASS  :  case159(stress   1 1 2 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case160(stress   1 1 2 1 2)    PASS
cgroup_test_fj    1  TPASS  :  case161(stress   1 1 2 1 3)    PASS
cgroup_test_fj    1  TPASS  :  case162(stress   1 1 2 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case163(stress   1 1 2 2 2)    PASS
cgroup_test_fj    1  TPASS  :  case164(stress   2 1 1 1 2)    PASS
cgroup_test_fj    1  TPASS  :  case165(stress   2 1 1 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case166(stress   2 1 1 2 2)    PASS
cgroup_test_fj    1  TPASS  :  case167(stress   2 1 1 2 3)    PASS
cgroup_test_fj    1  TPASS  :  case168(stress   2 1 2 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case169(stress   2 1 2 1 2)    PASS
cgroup_test_fj    1  TPASS  :  case170(stress   2 1 2 1 3)    PASS
cgroup_test_fj    1  TPASS  :  case171(stress   2 1 2 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case172(stress   2 1 2 2 2)    PASS
cgroup_test_fj    1  TPASS  :  case173(stress   4 1 1 1 2)    PASS
cgroup_test_fj    1  TPASS  :  case174(stress   4 1 2 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case175(stress   4 1 2 1 2)    PASS
cgroup_test_fj    1  TPASS  :  case176(stress   4 1 2 1 3)    PASS
cgroup_test_fj    1  TPASS  :  case177(stress   5 1 1 1 2)    PASS
cgroup_test_fj    1  TPASS  :  case178(stress   5 1 1 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case179(stress   5 1 1 2 2)    PASS
cgroup_test_fj    1  TPASS  :  case180(stress   5 1 1 2 3)    PASS
cgroup_test_fj    1  TPASS  :  case181(stress   5 1 2 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case182(stress   5 1 2 1 2)    PASS
cgroup_test_fj    1  TPASS  :  case183(stress   5 1 2 1 3)    PASS
cgroup_test_fj    1  TPASS  :  case184(stress   5 1 2 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case185(stress   5 1 2 2 2)    PASS
cgroup_test_fj    1  TPASS  :  case186(stress   6 1 1 1 2)    PASS
cgroup_test_fj    1  TPASS  :  case187(stress   6 1 1 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case188(stress   6 1 1 2 2)    PASS
cgroup_test_fj    1  TPASS  :  case189(stress   6 1 1 2 3)    PASS
cgroup_test_fj    1  TPASS  :  case190(stress   6 1 2 1 1)    PASS
cgroup_test_fj    1  TPASS  :  case191(stress   6 1 2 1 2)    PASS
cgroup_test_fj    1  TPASS  :  case192(stress   6 1 2 1 3)    PASS
cgroup_test_fj    1  TPASS  :  case193(stress   6 1 2 2 1)    PASS
cgroup_test_fj    1  TPASS  :  case194(stress   6 1 2 2 2)    PASS


Signed-off-by: Shi Weihua <shiwh@cn.fujitsu.com>
---
 runtest/controllers                                            |    1
 testcases/kernel/controllers/Makefile                          |    2
 testcases/kernel/controllers/cgroup_fj/Makefile                |   19
 testcases/kernel/controllers/cgroup_fj/README                  |   56
 testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh   |  269 ++++
 testcases/kernel/controllers/cgroup_fj/cgroup_fj_function2.sh  |  329 +++++
 testcases/kernel/controllers/cgroup_fj/cgroup_fj_proc.c        |   77 +
 testcases/kernel/controllers/cgroup_fj/cgroup_fj_release_agent |   11
 testcases/kernel/controllers/cgroup_fj/cgroup_fj_stress.sh     |  340 +++++
 testcases/kernel/controllers/cgroup_fj/cgroup_fj_testcases     |  194 +++
 testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh    |  633 ++++++++++
 testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh   |  135 ++
 12 files changed, 2066 insertions(+)

diff -urpN ltp-full-20090731.orig/runtest/controllers ltp-full-20090731.cg/runtest/controllers
--- ltp-full-20090731.orig/runtest/controllers	2009-05-18 07:50:16.000000000 -0400
+++ ltp-full-20090731.cg/runtest/controllers	2009-08-24 15:15:05.000000000 -0400
@@ -1,4 +1,5 @@
 #DESCRIPTION:Resource Management testing
 cgroup		cgroup_regression_test.sh
 memcg		memcg_regression_test.sh
+cgroup_fj	run_cgroup_test_fj.sh
 controllers	test_controllers.sh
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function2.sh ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function2.sh
--- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function2.sh	1969-12-31 19:00:00.000000000 -0500
+++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function2.sh	2009-08-23 10:18:51.000000000 -0400
@@ -0,0 +1,329 @@
+#! /bin/sh
+
+################################################################################
+##                                                                            ##
+## Copyright (c) 2009 FUJITSU LIMITED                                         ##
+##                                                                            ##
+## This program is free software;  you can redistribute it and#or modify      ##
+## it under the terms of the GNU General Public License as published by       ##
+## the Free Software Foundation; either version 2 of the License, or          ##
+## (at your option) any later version.                                        ##
+##                                                                            ##
+## This program is distributed in the hope that it will be useful, but        ##
+## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
+## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
+## for more details.                                                          ##
+##                                                                            ##
+## You should have received a copy of the GNU General Public License          ##
+## along with this program;  if not, write to the Free Software               ##
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    ##
+##                                                                            ##
+## Author: Shi Weihua <shiwh@cn.fujitsu.com>                                  ##
+##                                                                            ##
+################################################################################
+
+caseno=$1
+pid=0;
+subsystem=1;
+release_agent_para=1;
+release_agent_echo=1;
+subsystem_str="debug";
+remount_use_str="";
+noprefix_use_str="";
+release_agent_para_str="";
+
+# not output debug info when stress test
+no_debug=0
+
+usage()
+{
+	echo "usage of cgroup_fj_function2.sh: "
+	echo "  ./cgroup_fj_function2.sh -case number[1-13]"
+	echo "example: ./cgroup_fj_function2.sh 1"
+	echo "  will test the 1st case"
+}
+
+exit_parameter()
+{
+	echo "ERROR: Wrong inputed parameter..Exiting test" >> $LOGFILE
+	exit -1;
+}
+
+export TESTROOT=`pwd`
+if [ "$LOGFILE" = "" ]; then
+	LOGFILE="/dev/stdout"
+fi
+export TMPFILE=$TESTROOT/tmp_tasks
+
+. $TESTROOT/cgroup_fj_utility.sh
+
+case1()
+{
+	do_mkdir 1 1 /dev/cgroup/subgroup_2
+	
+	do_echo 1 0 $pid /dev/cgroup/subgroup_1/tasks
+	sleep 1
+	do_echo 1 0 $pid /dev/cgroup/subgroup_2/tasks
+	sleep 1
+	do_echo 1 1 $pid /dev/cgroup/tasks
+}
+
+case2()
+{
+	do_mkdir 1 1 /dev/cgroup/subgroup_2
+	
+	$TESTROOT/cgroup_fj_proc &
+	pid2=$!
+	sleep 1
+	
+	cat /dev/cgroup/tasks > $TMPFILE
+	nlines=`cat $TMPFILE | wc -l`
+	for i in `seq 1 $nlines`
+	do
+		cur_pid=`sed -n "$i""p" $TMPFILE`
+		if [ -e /proc/$cur_pid/ ];then
+			do_echo 1 0 "$cur_pid" /dev/cgroup/subgroup_1/tasks
+		fi
+	done
+	
+	sleep 1
+	
+	cat /dev/cgroup/subgroup_1/tasks > $TMPFILE
+	nlines=`cat $TMPFILE | wc -l`
+	for i in `seq 1 $nlines`
+	do
+		cur_pid=`sed -n "$i""p" $TMPFILE`
+		if [ -e /proc/$cur_pid/ ];then
+			do_echo 1 0 "$cur_pid" /dev/cgroup/subgroup_2/tasks
+		fi
+	done
+	
+	sleep 1
+	
+	cat /dev/cgroup/subgroup_2/tasks > $TMPFILE
+	nlines=`cat $TMPFILE | wc -l`
+	for i in `seq 1 $nlines`
+	do
+		cur_pid=`sed -n "$i""p" $TMPFILE`
+		if [ -e /proc/$cur_pid/ ];then
+			do_echo 1 1 "$cur_pid" /dev/cgroup/tasks
+		fi
+	done
+}
+
+case3()
+{
+	exist_subsystem "cpuset"
+	exist_subsystem "ns"
+	do_mount 1 1 "-odebug,cpuset,ns" /dev/cgroup cgroup1
+	
+	mount_str="`mount -l | grep /dev/cgroup2`"
+	if [ "$mount_str" != "" ]; then
+		do_umount 0 1 /dev/cgroup2
+	fi
+	
+	if [ -e /dev/cgroup2 ]; then
+		do_rmdir 1 1 /dev/cgroup2
+	fi
+	
+	do_mkdir 1 1 /dev/cgroup2
+
+	exist_subsystem "cpu"
+	exist_subsystem "cpuacct"
+	exist_subsystem "memory"
+	do_mount 1 1 "-ocpu,cpuacct,memory" /dev/cgroup2 cgroup2
+	
+	sleep 1
+	
+	do_umount 0 1 /dev/cgroup
+	do_rmdir 0 1 /dev/cgroup
+	do_umount 0 1 /dev/cgroup2
+	do_rmdir 0 1 /dev/cgroup2
+}
+
+case4()
+{
+	exist_subsystem "cpuset"
+	exist_subsystem "ns"
+	do_mount 1 1 "-odebug,cpuset,ns" /dev/cgroup cgroup1
+	
+	mount_str="`mount -l | grep /dev/cgroup2`"
+	if [ "$mount_str" != "" ]; then
+		do_umount 1 1 /dev/cgroup2
+	fi
+	
+	if [ -e /dev/cgroup2 ]; then
+		do_rmdir 0 1 /dev/cgroup2
+	fi
+	
+	do_mkdir 0 1 /dev/cgroup2
+	
+	do_mount 1 1 "-odebug,cpuset,ns" /dev/cgroup2 cgroup2
+	
+	sleep 1
+	
+	do_umount 0 1 /dev/cgroup
+	do_rmdir 0 1 /dev/cgroup
+	do_umount 0 1 /dev/cgroup2
+	do_rmdir 0 1 /dev/cgroup2
+}
+
+case5()
+{
+	exist_subsystem "cpuset"
+	exist_subsystem "ns"
+	exist_subsystem "memory"
+	do_mount 1 1 "-odebug,cpuset,ns" /dev/cgroup cgroup1
+	
+	mount_str="`mount -l | grep /dev/cgroup2`"
+	if [ "$mount_str" != "" ]; then
+		do_umount 1 1 /dev/cgroup2
+	fi
+	
+	if [ -e /dev/cgroup2 ]; then
+		do_rmdir 0 1 /dev/cgroup2
+	fi
+	
+	do_mkdir 0 1 /dev/cgroup2
+	
+	do_mount 0 1 "-odebug,cpuset,memory" /dev/cgroup2 cgroup2
+	
+	sleep 1
+	
+	do_umount 0 1 /dev/cgroup
+	do_rmdir 0 1 /dev/cgroup
+	do_umount 0 1 /dev/cgroup2
+	do_rmdir 0 1 /dev/cgroup2
+}
+
+case6()
+{
+	exist_subsystem "debug"
+	exist_subsystem "cpuset"
+	exist_subsystem "ns"
+	do_mount 1 1 "-odebug,cpuset,ns" /dev/cgroup cgroup1
+	
+	mount_str="`mount -l | grep /dev/cgroup2`"
+	if [ "$mount_str" != "" ]; then
+		do_umount 1 1 /dev/cgroup2
+	fi
+	
+	if [ -e /dev/cgroup2 ]; then
+		do_rmdir 0 1 /dev/cgroup2
+	fi
+	
+	do_mkdir 0 1 /dev/cgroup2
+	
+	do_mount 0 1 "-oall" /dev/cgroup2 cgroup2
+	
+	sleep 1
+	
+	do_umount 0 1 /dev/cgroup
+	do_rmdir 0 1 /dev/cgroup
+	do_umount 0 1 /dev/cgroup2
+	do_rmdir 0 1 /dev/cgroup2
+}
+
+case7()
+{
+	do_mkdir 0 1 /dev/cgroup/subgroup_2
+	
+	do_mv 0 1 /dev/cgroup/subgroup_1 /dev/cgroup/subgroup_3
+}
+
+case8()
+{
+	do_mkdir 0 1 /dev/cgroup/subgroup_2
+	
+	do_mv 0 0 /dev/cgroup/subgroup_1 /dev/cgroup/subgroup_2
+}
+
+case9()
+{
+	mount_str="`mount -l | grep /dev/cgroup2`"
+	if [ "$mount_str" != "" ]; then
+		do_umount 1 1 /dev/cgroup2
+	fi
+	
+	if [ -e /dev/cgroup2 ]; then
+		do_rmdir 0 1 /dev/cgroup2
+	fi
+	
+	do_mkdir 0 1 /dev/cgroup2
+	
+	do_mkdir 0 1 /dev/cgroup2/subgroup_2
+	
+	do_mv 0 1 /dev/cgroup/subgroup_1 /dev/cgroup/subgroup_2
+
+	sleep 1
+
+	do_rmdir 0 1 /dev/cgroup2/subgroup_2
+	do_rmdir 0 1 /dev/cgroup2
+}
+
+case10()
+{
+	do_mkdir 0 1 /dev/cgroup/subgroup_2
+	
+	do_mv 0 0 /dev/cgroup/subgroup_1 /dev/cgroup/tasks
+}
+
+case11()
+{
+	do_echo 0 1 $pid /dev/cgroup/subgroup_1/tasks
+	
+	sleep 1
+	
+	do_rmdir 0 0 /dev/cgroup/subgroup_1
+	
+	sleep 1
+	
+	do_echo 1 1 $pid /dev/cgroup/tasks
+}
+
+case12()
+{
+	do_mkdir 0 1 /dev/cgroup/subgroup_1/subgroup_1_1
+	
+	sleep 1
+	
+	do_rmdir 0 0 /dev/cgroup/subgroup_1
+	
+	do_rmdir 1 1 /dev/cgroup/subgroup_1/subgroup_1_1
+}
+
+case13()
+{
+	do_rmdir 0 1 /dev/cgroup/subgroup_1
+}
+
+##########################  main   #######################
+if [ "$#" -ne "1" ] || [ $caseno -lt 1 ] || [ $caseno -gt 13 ]; then
+	usage;
+	exit_parameter;
+fi
+
+echo "-------------------------------------------------------------------------" >> $LOGFILE
+echo "case no : $CASENO1" >> $LOGFILE
+echo `date` >> $LOGFILE
+
+exist_subsystem "debug"	
+setup;
+
+echo "INFO: now we begin to test no $CASENO1 ..." >> $LOGFILE
+
+if [ $caseno -lt 3 ] || [ $caseno -gt 6 ]; then
+	mount_cgroup;
+	$TESTROOT/cgroup_fj_proc &
+	pid=$!
+	mkdir_subgroup;
+fi
+
+case$caseno
+
+cleanup;
+if [ $caseno -lt 3 ] || [ $caseno -gt 6 ]; then
+	do_kill 1 1 9 $pid
+fi
+sleep 1	
+exit 0;
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh
--- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	1969-12-31 19:00:00.000000000 -0500
+++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	2009-08-23 10:15:08.000000000 -0400
@@ -0,0 +1,269 @@
+#! /bin/sh
+
+################################################################################
+##                                                                            ##
+## Copyright (c) 2009 FUJITSU LIMITED                                         ##
+##                                                                            ##
+## This program is free software;  you can redistribute it and#or modify      ##
+## it under the terms of the GNU General Public License as published by       ##
+## the Free Software Foundation; either version 2 of the License, or          ##
+## (at your option) any later version.                                        ##
+##                                                                            ##
+## This program is distributed in the hope that it will be useful, but        ##
+## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
+## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
+## for more details.                                                          ##
+##                                                                            ##
+## You should have received a copy of the GNU General Public License          ##
+## along with this program;  if not, write to the Free Software               ##
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    ##
+##                                                                            ##
+## Author: Shi Weihua <shiwh@cn.fujitsu.com>                                  ##
+##                                                                            ##
+################################################################################
+
+subsystem=$1
+remount_use=$2
+noprefix_use=$3	
+release_agent_para=$4
+subgroup_exist=$5
+attach_operation=$6
+remove_operation=$7
+notify_on_release=$8
+release_agent_echo=$9
+
+subsystem_str="";
+remount_use_str="";
+noprefix_use_str="";
+release_agent_para_str="";
+notify_on_release_str="";
+release_agent_str="";
+
+expectted=1;
+
+# Create some processes and move them to cgroups
+pid=0;
+pid2=0;
+
+# not output debug info
+no_debug=0
+
+usage()
+{
+	echo "usage of cgroup_fj_function.sh: "
+	echo "  ./cgroup_fj_function.sh -subsystem -remount_use -noprefix_use -release_agent_para"
+	echo "                          -subgroup_exist -attach_operation -remove_operation"
+	echo "                          -notify_on_release -release_agent_echo"
+	echo "    subsystem's usable number"
+	echo "      1: debug"
+	echo "      2: cpuset"
+	echo "      3: ns"
+	echo "      4: cpu"
+	echo "      5: cpuacct"
+	echo "      6: memory"
+	echo "      7: all"
+	echo "      8: (none)"
+	echo "      9: debug,debug"
+	echo "      10: (nonexistent subsystem), e.g. abc"
+	echo "      11: freezer"
+	echo "      11: devices"
+	echo "    remount_use's usable number"
+	echo "      1: do not use remount in "-o"'s parameter"
+	echo "      2: use it"
+	echo "    noprefix_use's usable number"
+	echo "      1: do not use noprefix in "-o"'s parameter"
+	echo "      2: use it. only cpuset available"
+	echo "    release_agent_para's usable number"
+	echo "      1: don't use release_agent_para= in "-o"'s parameter"
+	echo "      2: empty after "=""
+	echo "      3: available commad"
+	echo "      4: command name exclude full path"
+	echo "      5: command in /sbin"
+	echo "      6: command in other directory"
+	echo "      7: nonexistent command"
+	echo "      8: no-permission command"
+	echo "    subgroup_exist's usable number"
+	echo "      1: subgroup will been created"
+	echo "      2: subgroup will not been created"
+	echo "    attach_operation's usable number"
+	echo "      1: attach nothing"
+	echo "      2: attach one process by echo"
+	echo "      3: attach all processes in root group by echo"
+	echo "      4: attach child forked processes automatically"
+	echo "      5: move one process to other subgroup by echo"
+	echo "      6: move all processes to other subgroup by echo"
+	echo "    remove_operation's usable number"
+	echo "      1: remove nothing"
+	echo "      2: remove some processes by echo"
+	echo "      3: remove all processes in sub group by echo"
+	echo "      4: remove some processes by kill"
+	echo "      5: remove all forked processes by kill"
+	echo "    notify_on_release's usable number"
+	echo "      1: echo 0 to notify_on_release"
+	echo "      2: echo 1 to notify_on_release"
+	echo "      3: echo 2 to notify_on_release"
+	echo "      4: echo -1 to notify_on_release"
+	echo "      5: echo 0ddd to notify_on_release"
+	echo "      6: echo 1ddd to notify_on_release"
+	echo "      7: echo ddd1 to notify_on_release"
+	echo "    release_agent_echo's usable number"
+	echo "      1: echo nothing to release_agent"
+	echo "      2: available commad"
+	echo "      3: command name exclude full path"
+	echo "      4: command in /sbin"
+	echo "      5: command in other directory"
+	echo "      6: nonexistent command"
+	echo "      7: no-permission command"
+	echo "example: ./cgroup_fj_function.sh 1 1 1 1 1 1 1 1 1"
+	echo "  will use "debug" to test, will not use option "remount","noprefix","release_agent""
+	echo "  in in "-o"'s parameter, will create some subgroup, will not attach/remove any process"
+	echo "  will echo 0 to notify_on_release and will not echo anything to release_agent"
+}
+
+export TESTROOT=`pwd`
+if [ "$LOGFILE" = "" ]; then
+	LOGFILE="/dev/stdout"
+fi
+export TMPFILE=$TESTROOT/tmp_tasks
+
+. $TESTROOT/cgroup_fj_utility.sh
+
+##########################  main   #######################
+if [ "$#" -ne "9" ]; then
+	echo "ERROR: Wrong inputed parameter..Exiting test" >> $LOGFILE;
+	usage;
+	exit -1;
+fi
+
+echo "-------------------------------------------------------------------------" >> $LOGFILE
+echo "case no : $CASENO1" >> $LOGFILE
+echo `date` >> $LOGFILE
+
+check_para;
+if [ $? -ne 0 ]; then
+	usage;
+	exit -1;
+fi
+setup;
+
+echo "INFO: now we begin to test no $CASENO1 ..." >> $LOGFILE
+
+mount_cgroup;
+
+$TESTROOT/cgroup_fj_proc &
+pid=$!
+
+mkdir_subgroup;
+
+# cpuset.cpus and cpuset.mems should be specified with suitable value 
+# before attaching operation if subsystem is cpuset
+if [ $subsystem -eq 2 ] || [ $subsystem -eq 7 ] || [ $subsystem -eq 8 ] ; then
+	exist=`grep -w cpuset /proc/cgroups | cut -f1`;
+	if [ "$exist" != "" ]; then
+		if [ $noprefix_use -eq 2 ]; then
+			do_echo 1 1 `cat /dev/cgroup/cpus` /dev/cgroup/subgroup_1/cpus;
+			do_echo 1 1 `cat /dev/cgroup/mems` /dev/cgroup/subgroup_1/mems;
+		else
+			do_echo 1 1 `cat /dev/cgroup/cpuset.cpus` /dev/cgroup/subgroup_1/cpuset.cpus;
+			do_echo 1 1 `cat /dev/cgroup/cpuset.mems` /dev/cgroup/subgroup_1/cpuset.mems;
+		fi
+	fi
+fi
+
+# attaching operation
+case $attach_operation in
+"1" )
+	;;
+"2" )
+	do_echo 1 1 $pid /dev/cgroup/subgroup_1/tasks;
+	;;
+"3" )
+	$TESTROOT/cgroup_fj_proc &
+	pid2=$!
+	cat /dev/cgroup/tasks > $TMPFILE
+	nlines=`cat $TMPFILE | wc -l`
+	for i in `seq 1 $nlines`
+	do
+		cur_pid=`sed -n "$i""p" $TMPFILE`
+		if [ -e /proc/$cur_pid/ ];then
+			do_echo 1 1 "$cur_pid" /dev/cgroup/subgroup_1/tasks
+		fi
+	done
+	;;
+"4" )
+	do_echo 1 1 $pid /dev/cgroup/subgroup_1/tasks;
+	sleep 1
+	do_kill 1 1 10 $pid
+	;;
+esac
+
+# echo notify_on_release that analysed from parameter
+case $notify_on_release in
+"1"|"2"|"3")
+	expectted=1
+	;;
+*)
+	expectted=0
+	;;
+esac
+
+#if [ $notify_on_release -ne 0 ] && [ $notify_on_release -ne 1 ] && [ $notify_on_release -ne 2 ];then
+#	expectted=0
+#fi
+do_echo 1 $expectted $notify_on_release_str /dev/cgroup/subgroup_1/notify_on_release;
+
+# echo release_agent that analysed from parameter
+if [ $release_agent_echo -ne 1 ]; then
+	do_echo 1 1 $release_agent_str /dev/cgroup/release_agent;
+fi
+
+sleep 1
+
+# pid could not be echoed from subgroup if subsystem is ( or include ) ns, 
+# so we kill them here
+if [ $subsystem -eq 3 ] || [ $subsystem -eq 7 ] || [ $subsystem -eq 8 ] ; then
+	do_kill 1 1 9 $pid
+	do_kill 1 1 9 $pid2
+# removing operation
+else
+	case $remove_operation in
+	"1" )
+		;;
+	"2" )
+		do_echo 1 1 $pid /dev/cgroup/tasks
+		if [ $pid2 -ne 0 ]  ; then
+			do_echo 1 1 $pid2 /dev/cgroup/tasks
+		fi
+		;;
+	"3" )
+		cat /dev/cgroup/subgroup_1/tasks > $TMPFILE
+		nlines=`cat $TMPFILE | wc -l`
+		if [ $nlines -ne 0 ]; then
+			for i in `seq 1 $nlines`
+			do
+				cur_pid=`sed -n "$i""p" $TMPFILE`
+				if [ -e /proc/$cur_pid/ ];then
+					do_echo 1 1 "$cur_pid" /dev/cgroup/tasks
+				fi
+			done
+		fi
+		;;
+	"4" )
+		do_kill 1 1 9 $pid
+		;;
+	"5" )
+		do_kill 1 1 9 $pid
+		do_kill 1 1 9 $pid2
+		;;
+	esac
+fi
+
+sleep 1
+
+do_rmdir 0 1 /dev/cgroup/subgroup_*
+
+cleanup;
+do_kill 1 1 9 $pid
+do_kill 1 1 9 $pid2
+sleep 1	
+exit 0;
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_proc.c ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_proc.c
--- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_proc.c	1969-12-31 19:00:00.000000000 -0500
+++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_proc.c	2009-08-23 10:08:01.000000000 -0400
@@ -0,0 +1,77 @@
+/******************************************************************************/
+/*                                                                            */
+/* Copyright (c) 2009 FUJITSU LIMITED                                         */
+/*                                                                            */
+/* This program is free software;  you can redistribute it and/or modify      */
+/* it under the terms of the GNU General Public License as published by       */
+/* the Free Software Foundation; either version 2 of the License, or          */
+/* (at your option) any later version.                                        */
+/*                                                                            */
+/* This program is distributed in the hope that it will be useful,            */
+/* but WITHOUT ANY WARRANTY;  without even the implied warranty of            */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See                  */
+/* the GNU General Public License for more details.                           */
+/*                                                                            */
+/* You should have received a copy of the GNU General Public License          */
+/* along with this program;  if not, write to the Free Software               */
+/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    */
+/*                                                                            */
+/* Author: Shi Weihua <shiwh@cn.fujitsu.com>                                  */
+/*                                                                            */
+/******************************************************************************/
+ 
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <errno.h>
+#include <err.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+#define UNUSED __attribute__ ((unused))
+
+static int test_switch = 0;
+
+void sighandler(UNUSED int signo)
+{
+	test_switch = !test_switch;
+}
+
+int main(void)
+{
+	sigset_t sigset;
+	struct sigaction sa;
+	pid_t pid;
+	int status;
+	int count = 0;
+
+	sa.sa_handler = sighandler;
+	if (sigemptyset(&sa.sa_mask) < 0)
+		err(1, "sigemptyset()");
+
+	sa.sa_flags = 0;
+	if (sigaction(SIGUSR1, &sa, NULL) < 0)
+		err(1, "sigaction()");
+
+	if (sigemptyset(&sigset) < 0)
+		err(1, "sigemptyset()");
+
+	/* wait for the signal SIGUSR1 to start testing */
+	sigsuspend(&sigset);
+	if (errno != EINTR)
+		err(1, "sigsuspend()");
+
+	do {
+		count++;
+		pid = fork();
+		if (pid == -1)
+			err(1, "fork()");
+		else if (pid == 0){
+			return 0;
+		} else {
+			wait(&status);
+		}
+	} while (test_switch);
+	return 0;
+}
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_release_agent ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_release_agent
--- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_release_agent	1969-12-31 19:00:00.000000000 -0500
+++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_release_agent	2009-08-24 15:18:45.000000000 -0400
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+TESTROOT=`pwd`
+
+if [ -e /dev/cgroup/subgroup_1 ]
+then
+	cd /dev/cgroup
+	rmdir -p subgroup_*/ 2>/dev/null
+	rmdir /dev/cgroup/subgroup_* 2> /dev/null
+	cd $TESTROOT
+fi
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_stress.sh ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_stress.sh
--- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_stress.sh	1969-12-31 19:00:00.000000000 -0500
+++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_stress.sh	2009-08-23 10:29:49.000000000 -0400
@@ -0,0 +1,340 @@
+#! /bin/sh
+
+################################################################################
+##                                                                            ##
+## Copyright (c) 2009 FUJITSU LIMITED                                         ##
+##                                                                            ##
+## This program is free software;  you can redistribute it and#or modify      ##
+## it under the terms of the GNU General Public License as published by       ##
+## the Free Software Foundation; either version 2 of the License, or          ##
+## (at your option) any later version.                                        ##
+##                                                                            ##
+## This program is distributed in the hope that it will be useful, but        ##
+## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
+## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
+## for more details.                                                          ##
+##                                                                            ##
+## You should have received a copy of the GNU General Public License          ##
+## along with this program;  if not, write to the Free Software               ##
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    ##
+##                                                                            ##
+## Author: Shi Weihua <shiwh@cn.fujitsu.com>                                  ##
+##                                                                            ##
+################################################################################
+
+subsystem=$1			# 1: debug
+				# 2: cpuset
+				# 3: ns
+				# 4: cpu
+				# 5: cpuacct
+				# 6: memory
+				# 7: all
+mount_times=$2			#1: execute once
+				#2: execute 100 times
+subgroup_num=$3			#subgroup number in the same hierarchy
+				#1: 1
+				#2: 100
+subgroup_hiers=$4		#number of subgroup's hierarchy
+				#1: 1
+				#2: 100
+attach_operation=$5		# 1: attach one process to every subcgroup
+				# 2: attach all processes in root group to one subcgroup
+				# 3: attach all processes in root group to every subcgroup
+
+usage()
+{
+	echo "usage of cgroup_fj_stress.sh: "
+	echo "  ./cgroup_fj_stress.sh -subsystem -mount_times -subgroup_num -subgroup_hiers -attach_operation"
+	echo "    subsystem's usable number"
+	echo "      1: debug"
+	echo "      2: cpuset"
+	echo "      3: ns"
+	echo "      4: cpu"
+	echo "      5: cpuacct"
+	echo "      6: memory"
+	echo "      7: all"
+	echo "    mount_times's usable number"
+	echo "      1: execute once"
+	echo "      2: execute 100 times"
+	echo "    subgroup_num's usable number"
+	echo "      (subgroup number in the same hierarchy)"
+	echo "      1: 1"
+	echo "      2: 100"
+        echo "    subgroup_hiers's usable number"
+	echo "      (number of subgroup's hierarchy)"
+	echo "      1: 1"
+	echo "      2: 100"
+	echo "    attach_operation's usable number"
+	echo "      1: attach one process to every subcgroup"
+	echo "      2: attach all processes in root group to one subcgroup"
+	echo "      3: attach all processes in root group to every subcgroup"
+        echo "example: ./cgroup_fj_stress.sh 1 1 1 1 1"
+        echo "  will use "debug" to test, will mount once, will create one subgroup in same hierarchy,"
+	echo "  will create one hierarchy, will attach one process to every subcgroup"
+}
+
+
+exit_parameter()
+{
+	echo "ERROR: Wrong inputed parameter..Exiting test" >> $LOGFILE
+	exit -1;
+}
+
+export TESTROOT=`pwd`
+if [ "$LOGFILE" = "" ]; then
+	LOGFILE="/dev/stdout"
+fi
+export TMPFILE=$TESTROOT/tmp_tasks
+
+. $TESTROOT/cgroup_fj_utility.sh
+
+pid=0;
+release_agent_para=1;
+release_agent_echo=1;
+subsystem_str="debug";
+get_subsystem;
+if [ "$?" -ne "0" ] || [ "$#" -ne "5" ]; then
+	usage;
+	exit_parameter;
+fi
+remount_use_str="";
+noprefix_use_str="";
+release_agent_para_str="";
+ulimit_u=`ulimit -u`
+no_debug=1
+cur_subgroup_path1=""
+cur_subgroup_path2=""
+
+get_subgroup_path1()
+{
+	cur_subgroup_path1=""
+	if [ "$#" -ne 1 ] || [ "$1" -lt 1 ] || [ "$1" -gt $ulimit_u ]; then
+		return;
+	fi
+	
+	cur_subgroup_path1="/dev/cgroup/subgroup_$1/"
+}
+
+
+get_subgroup_path2()
+{
+	cur_subgroup_path2=""
+	if [ "$#" -ne 1 ] || [ "$1" -lt 2 ] || [ "$1" -gt $ulimit_u ]; then
+		return;
+	fi
+	
+	for i in `seq 2 $1`
+	do
+		cur_subgroup_path2="$cur_subgroup_path2""s/"
+	done
+}
+
+case $mount_times in
+"1" )
+	mount_times=1
+	;;
+"2" )
+	mount_times=100
+	;;
+*  )
+	usage;
+	exit_parameter;
+	;;
+esac
+
+case $subgroup_num in
+"1" )
+	subgroup_num=1
+	;;
+"2" )
+	subgroup_num=100
+	;;
+*  )
+	usage;
+	exit_parameter;
+	;;
+esac
+
+case $subgroup_hiers in
+"1" )
+	subgroup_hiers=1
+	;;
+"2" )
+	subgroup_hiers=100
+	;;
+*  )
+	usage;
+	exit_parameter;
+	;;
+esac
+
+##########################  main   #######################
+echo "-------------------------------------------------------------------------" >> $LOGFILE
+echo "case no : $CASENO2" >> $LOGFILE
+echo `date` >> $LOGFILE
+
+setup;
+
+echo "INFO: now we begin to stress test no $CASENO2 ..." >> $LOGFILE
+
+mount_cgroup;
+
+$TESTROOT/cgroup_fj_proc &
+pid=$!
+
+cpus=0
+mems=0
+exist_cpuset=0
+exist_cpuset=`grep -w cpuset /proc/cgroups | cut -f1`;
+if [ $subsystem -eq 2 ] || [ $subsystem -eq 7 ] ; then
+	if [ "$exist_cpuset" != "" ]; then
+		cpus=`cat /dev/cgroup/cpuset.cpus`
+		mems=`cat /dev/cgroup/cpuset.mems`
+	fi
+fi
+
+mkdir_subgroup;
+
+# cpuset.cpus and cpuset.mems should be specified with suitable value 
+# before attachint operation if subsystem is cpuset
+if [ $subsystem -eq 2 ] || [ $subsystem -eq 7 ] ; then
+	if [ "$exist_cpuset" != "" ]; then
+		do_echo 1 1 "$cpus" /dev/cgroup/subgroup_1/cpuset.cpus;
+		do_echo 1 1 "$mems" /dev/cgroup/subgroup_1/cpuset.mems;
+	fi
+fi
+
+if [ $mount_times -ne 1 ]; then
+	count=0
+	for i in `seq 1 $mount_times`
+	do
+		do_echo 1 1 $pid /dev/cgroup/subgroup_1/tasks
+		if [ $subsystem -eq 3 ] || [ $subsystem -eq 7 ] ; then
+			do_kill 1 1 9 $pid
+			$TESTROOT/cgroup_fj_proc &
+			pid=$!
+		else
+			do_echo 1 1 $pid /dev/cgroup/tasks
+		fi
+		setup;
+		$TESTROOT/cgroup_fj_proc &
+		pid=$!
+		mount_cgroup;
+		mkdir_subgroup;
+		if [ $subsystem -eq 2 ] || [ $subsystem -eq 7 ] ; then
+			if [ "$exist_cpuset" != "" ]; then
+				do_echo 1 1 "$cpus" /dev/cgroup/subgroup_1/cpuset.cpus;
+				do_echo 1 1 "$mems" /dev/cgroup/subgroup_1/cpuset.mems;
+			fi
+		fi
+		let "count = $count + 1"
+		echo "$count .. OK" >> $LOGFILE
+	done
+	echo "...executed $count times" >> $LOGFILE
+else
+	get_subgroup_path2 $subgroup_hiers
+	count=0
+	pathes[1]=""
+	for i in `seq 1 $subgroup_num`
+	do
+		get_subgroup_path1 $i
+		do_mkdir 1 1 $cur_subgroup_path1
+		if [ $subsystem -eq 2 ] || [ $subsystem -eq 7 ] ; then
+			if [ "$exist_cpuset" != "" ]; then
+				do_echo 1 1 "$cpus" "$cur_subgroup_path1""cpuset.cpus";
+				do_echo 1 1 "$mems" "$cur_subgroup_path1""cpuset.mems";
+			fi
+		fi
+		let "count = $count + 1"
+		pathes[$count]="$cur_subgroup_path1"
+		for j in `seq 2 $subgroup_hiers`
+		do
+			get_subgroup_path2 $j
+			do_mkdir 1 1 "$cur_subgroup_path1""$cur_subgroup_path2" 1
+			if [ $subsystem -eq 2 ] || [ $subsystem -eq 7 ] ; then
+				if [ "$exist_cpuset" != "" ]; then
+					do_echo 1 1 "$cpus" "$cur_subgroup_path1""$cur_subgroup_path2""cpuset.cpus";
+					do_echo 1 1 "$mems" "$cur_subgroup_path1""$cur_subgroup_path2""cpuset.mems";
+				fi
+			fi
+			let "count = $count + 1"
+			pathes[$count]="$cur_subgroup_path1""$cur_subgroup_path2"
+		done
+	done
+	echo "...mkdired $count times" >> $LOGFILE
+	
+	sleep 1
+	
+	case $attach_operation in
+	"1" )
+		for i in `seq 1 $count`
+		do
+			do_echo 1 1 $pid "${pathes[$i]}""tasks"
+		done
+		do_echo 1 1 $pid /dev/cgroup/tasks
+		;;
+	"2" )
+		pathes2[0]="/dev/cgroup/"
+		pathes2[1]="${pathes[$count]}"
+		pathes2[3]="/dev/cgroup/"
+		for i in `seq 1 $nlines`
+		do
+			j=$i
+			let "j = $j + 1"
+			cat "${pathes2[$i]}tasks" > $TMPFILE
+			nlines=`cat "$TMPFILE" | wc -l`
+			if [ $no_debug -ne 1 ]; then
+				echo "DEBUG: move $nlines processes from "$i"th path to "$j"th"
+			fi
+			for k in `seq 1 $nlines`
+			do
+				cur_pid=`sed -n "$k""p" $TMPFILE`
+				if [ -e /proc/$cur_pid/ ];then
+					do_echo 0 1 "$cur_pid" "${pathes[$j]}tasks"
+				fi
+			done
+		done
+		;;
+	"3" )
+		count2=$count
+		let "count2 = $count2 + 1"
+		pathes[0]="/dev/cgroup/"
+		pathes[$count2]="/dev/cgroup/"
+		for i in `seq 0 $count`
+		do
+			j=$i
+			let "j = $j + 1"
+			cat "${pathes[$i]}tasks" > $TMPFILE
+			nlines=`cat "$TMPFILE" | wc -l`
+			if [ $no_debug -ne 1 ]; then
+				echo "DEBUG: move $nlines processes from "$i"th path to "$j"th"
+			fi
+			for k in `seq 1 $nlines`
+			do
+				cur_pid=`sed -n "$k""p" $TMPFILE`
+				if [ -e /proc/$cur_pid/ ];then
+					do_echo 0 1 "$cur_pid" "${pathes[$j]}tasks"
+				fi
+			done
+		done
+		;;
+	*  )
+		;;
+	esac
+	reclaim_foundling;
+	for i in `seq 1 $count`
+	do
+		j=i
+		let "j = $count - $j + 1"
+		do_rmdir 1 1 ${pathes[$j]}
+	done
+fi
+
+do_rmdir 0 1 /dev/cgroup/subgroup_*
+
+sleep 1
+
+cleanup;
+do_kill 1 1 9 $pid
+sleep 1
+exit 0;
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_testcases ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_testcases
--- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_testcases	1969-12-31 19:00:00.000000000 -0500
+++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_testcases	2009-08-24 12:53:22.000000000 -0400
@@ -0,0 +1,194 @@
+function	1 1 1 1 1 2 3 2 1
+function	1 2 1 1 1 2 3 2 1
+function	1 1 1 2 1 2 3 2 1
+function	1 1 1 3 1 2 3 2 1
+function	1 1 1 4 1 2 3 2 1
+function	1 1 1 5 1 2 3 2 1
+function	1 1 1 6 1 2 3 2 1
+function	1 1 1 7 1 2 3 2 1
+function	1 1 1 8 1 2 3 2 1
+function	2 1 1 1 1 2 3 2 1
+function	2 2 1 1 1 2 3 2 1
+function	2 1 2 1 1 2 3 2 1
+function	2 1 1 2 1 2 3 2 1
+function	2 1 1 3 1 2 3 2 1
+function	2 1 1 4 1 2 3 2 1
+function	2 1 1 5 1 2 3 2 1
+function	2 1 1 6 1 2 3 2 1
+function	2 1 1 7 1 2 3 2 1
+function	2 1 1 8 1 2 3 2 1
+function	3 1 1 1 1 2 3 2 1
+function	3 2 1 1 1 2 3 2 1
+function	3 1 1 2 1 2 3 2 1
+function	3 1 1 3 1 2 3 2 1
+function	3 1 1 4 1 2 3 2 1
+function	3 1 1 5 1 2 3 2 1
+function	3 1 1 6 1 2 3 2 1
+function	3 1 1 7 1 2 3 2 1
+function	3 1 1 8 1 2 3 2 1
+function	4 1 1 1 1 2 3 2 1
+function	4 2 1 1 1 2 3 2 1
+function	4 1 1 2 1 2 3 2 1
+function	4 1 1 3 1 2 3 2 1
+function	4 1 1 4 1 2 3 2 1
+function	4 1 1 5 1 2 3 2 1
+function	4 1 1 6 1 2 3 2 1
+function	4 1 1 7 1 2 3 2 1
+function	4 1 1 8 1 2 3 2 1
+function	5 1 1 1 1 2 3 2 1
+function	5 2 1 1 1 2 3 2 1
+function	5 1 1 2 1 2 3 2 1
+function	5 1 1 3 1 2 3 2 1
+function	5 1 1 4 1 2 3 2 1
+function	5 1 1 5 1 2 3 2 1
+function	5 1 1 6 1 2 3 2 1
+function	5 1 1 7 1 2 3 2 1
+function	5 1 1 8 1 2 3 2 1
+function	6 1 1 1 1 2 3 2 1
+function	6 2 1 1 1 2 3 2 1
+function	6 1 1 2 1 2 3 2 1
+function	6 1 1 3 1 2 3 2 1
+function	6 1 1 4 1 2 3 2 1
+function	6 1 1 5 1 2 3 2 1
+function	6 1 1 6 1 2 3 2 1
+function	6 1 1 7 1 2 3 2 1
+function	6 1 1 8 1 2 3 2 1
+function	7 1 1 1 1 2 3 2 1
+function	7 2 1 1 1 2 3 2 1
+function	7 1 1 2 1 2 3 2 1
+function	7 1 1 3 1 2 3 2 1
+function	7 1 1 4 1 2 3 2 1
+function	7 1 1 5 1 2 3 2 1
+function	7 1 1 6 1 2 3 2 1
+function	7 1 1 7 1 2 3 2 1
+function	7 1 1 8 1 2 3 2 1
+function	8 1 1 1 1 2 3 2 1
+function	9 1 1 1 1 2 3 2 1
+function	9 2 1 1 1 2 3 2 1
+function	9 1 1 2 1 2 3 2 1
+function	9 1 1 3 1 2 3 2 1
+function	9 1 1 4 1 2 3 2 1
+function	9 1 1 5 1 2 3 2 1
+function	9 1 1 6 1 2 3 2 1
+function	9 1 1 7 1 2 3 2 1
+function	9 1 1 8 1 2 3 2 1
+function	10 1 1 1 1 2 3 2 1
+function	11 1 1 1 1 2 3 2 1
+function	11 2 1 1 1 2 3 2 1
+function	11 1 1 2 1 2 3 2 1
+function	11 1 1 3 1 2 3 2 1
+function	11 1 1 4 1 2 3 2 1
+function	11 1 1 5 1 2 3 2 1
+function	11 1 1 6 1 2 3 2 1
+function	11 1 1 7 1 2 3 2 1
+function	11 1 1 8 1 2 3 2 1
+function	12 1 1 1 1 2 3 2 1
+function	12 2 1 1 1 2 3 2 1
+function	12 1 1 2 1 2 3 2 1
+function	12 1 1 3 1 2 3 2 1
+function	12 1 1 4 1 2 3 2 1
+function	12 1 1 5 1 2 3 2 1
+function	12 1 1 6 1 2 3 2 1
+function	12 1 1 7 1 2 3 2 1
+function	12 1 1 8 1 2 3 2 1
+function	1 1 1 1 1 1 2 1 1
+function	1 1 1 1 1 2 2 1 1
+function	1 1 1 1 1 2 3 1 1
+function	1 1 1 1 1 2 5 1 1
+function	1 1 1 1 1 3 1 1 1
+function	1 1 1 1 1 3 2 1 1
+function	1 1 1 1 1 3 4 1 1
+function	1 1 1 1 1 4 3 1 1
+function	1 1 1 1 1 4 5 1 1
+function	1 1 1 1 2 1 1 1 1
+function	1 1 1 1 1 1 1 1 1
+function	1 1 1 1 1 1 3 2 1
+function	1 1 1 1 1 2 3 2 2
+function	1 1 1 1 1 2 3 2 3
+function	1 1 1 1 1 2 3 2 4
+function	1 1 1 1 1 2 3 2 5
+function	1 1 1 1 1 2 3 2 6
+function	1 1 1 1 1 2 3 2 7
+function	1 1 1 1 1 2 3 3 2
+function	1 1 1 1 1 2 3 4 2
+function	1 1 1 1 1 2 3 5 2
+function	1 1 1 1 1 2 3 6 2
+function	1 1 1 1 1 2 3 7 2
+function	1 1 1 2 1 2 3 2 2
+function	1 1 1 3 1 2 3 1 1
+function	1 1 1 3 1 2 3 1 2
+function	1 1 1 3 1 2 3 1 3
+function	1 1 1 3 1 2 3 2 1
+function	1 1 1 3 1 2 3 2 2
+function	1 1 1 3 1 2 3 2 3
+function	1 1 1 3 1 2 3 2 4
+function	1 1 1 3 1 2 3 2 5
+function	1 1 1 3 1 2 3 2 6
+function	1 1 1 3 1 2 3 2 7
+function	1 1 1 3 1 2 3 3 1
+function	1 1 1 3 1 2 3 3 2
+function	1 1 1 3 1 2 3 3 3
+function	1 1 1 3 1 2 3 4 2
+function	1 1 1 3 1 2 3 5 2
+function	1 1 1 3 1 2 3 6 2
+function	1 1 1 3 1 2 3 7 2
+function2	1
+function2	2
+function2	3
+function2	4
+function2	5
+function2	6
+function2	7
+function2	8
+function2	9
+function2	10
+function2	11
+function2	12
+function2	13
+stress	1 2 1 1 1
+stress	2 2 1 1 1
+stress	3 2 1 1 1
+stress	4 2 1 1 1
+stress	5 2 1 1 1
+stress	6 2 1 1 1
+stress	7 2 1 1 1
+stress	1 1 1 1 2
+stress	1 1 1 2 1
+stress	1 1 1 2 2
+stress	1 1 1 2 3
+stress	1 1 2 1 1
+stress	1 1 2 1 2
+stress	1 1 2 1 3
+stress	1 1 2 2 1
+stress	1 1 2 2 2
+stress	2 1 1 1 2
+stress	2 1 1 2 1
+stress	2 1 1 2 2
+stress	2 1 1 2 3
+stress	2 1 2 1 1
+stress	2 1 2 1 2
+stress	2 1 2 1 3
+stress	2 1 2 2 1
+stress	2 1 2 2 2
+stress	4 1 1 1 2
+stress	4 1 2 1 1
+stress	4 1 2 1 2
+stress	4 1 2 1 3
+stress	5 1 1 1 2
+stress	5 1 1 2 1
+stress	5 1 1 2 2
+stress	5 1 1 2 3
+stress	5 1 2 1 1
+stress	5 1 2 1 2
+stress	5 1 2 1 3
+stress	5 1 2 2 1
+stress	5 1 2 2 2
+stress	6 1 1 1 2
+stress	6 1 1 2 1
+stress	6 1 1 2 2
+stress	6 1 1 2 3
+stress	6 1 2 1 1
+stress	6 1 2 1 2
+stress	6 1 2 1 3
+stress	6 1 2 2 1
+stress	6 1 2 2 2
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh
--- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh	1969-12-31 19:00:00.000000000 -0500
+++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh	2009-08-24 12:22:51.000000000 -0400
@@ -0,0 +1,633 @@
+#! /bin/sh
+
+################################################################################
+##                                                                            ##
+## Copyright (c) 2009 FUJITSU LIMITED                                         ##
+##                                                                            ##
+## This program is free software;  you can redistribute it and#or modify      ##
+## it under the terms of the GNU General Public License as published by       ##
+## the Free Software Foundation; either version 2 of the License, or          ##
+## (at your option) any later version.                                        ##
+##                                                                            ##
+## This program is distributed in the hope that it will be useful, but        ##
+## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
+## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
+## for more details.                                                          ##
+##                                                                            ##
+## You should have received a copy of the GNU General Public License          ##
+## along with this program;  if not, write to the Free Software               ##
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    ##
+##                                                                            ##
+## Author: Shi Weihua <shiwh@cn.fujitsu.com>                                  ##
+##                                                                            ##
+################################################################################
+
+subsystem_str=""
+
+exist_subsystem()
+{
+	checksubsystem=""
+	case "$#" in
+	"0" )
+		checksubsystem=$subsystem_str
+		;;
+	"1" )
+		checksubsystem=$1
+		;;
+	"*" )
+		if [ "$#" -gt "1" ]; then
+			exit -1
+		fi
+		;;
+	esac
+
+	if [ "$checksubsystem" = "" ]; then
+		exit -1
+	fi
+	
+	exist=`grep -w $checksubsystem /proc/cgroups | cut -f1`;
+	if [ "$exist" = "" ]; then
+		exit 9 
+	fi
+}
+
+get_subsystem()
+{
+	case $subsystem in
+	"1" )
+		subsystem_str="debug";
+		exist_subsystem;
+		;;
+	"2" )
+		subsystem_str="cpuset";
+		exist_subsystem;
+		;;
+	"3" )
+		subsystem_str="ns";
+		exist_subsystem;
+		;;
+	"4" )
+		subsystem_str="cpu"
+		exist_subsystem;
+		;;
+	"5" )
+		subsystem_str="cpuacct";
+		exist_subsystem;
+		;;
+	"6" )
+		subsystem_str="memory";
+		exist_subsystem;
+		;;
+	"7" )
+		subsystem_str="all";
+		;;
+	"8" )
+		subsystem_str=""
+		;;
+	"9" )
+		subsystem_str="debug,debug";
+		exist_subsystem "debug";
+		;;
+	"10" )
+		subsystem_str="abc";
+		;;
+	"11" )
+		subsystem_str="freezer";
+		exist_subsystem;
+		;;
+	"12" )
+		subsystem_str="devices";
+		exist_subsystem;
+		;;
+	 *  )
+		return -1
+		;;
+	esac
+}
+
+get_remount_use()
+{
+	case $remount_use in
+	"1" )
+		remount_use_str="";
+		;;
+	"2" )
+		remount_use_str="remount";
+		;;
+	 *  )
+		return -1
+		;;
+	esac
+}
+
+get_noprefix_use()
+{
+	case $noprefix_use in
+	"1" )
+		noprefix_use_str="";
+		;;
+	"2" )
+		if [ $subsystem -ne 2 ]; then
+			return -1
+		fi
+		noprefix_use_str="noprefix";
+		;;
+	 *  )
+		return -1
+		;;
+	esac
+}
+
+get_release_agent_para()
+{
+	case $release_agent_para in
+	"1" )
+		release_agent_para_str="";
+		;;
+	"2" )
+		release_agent_para_str=" ";
+		;;
+	"3" )
+		release_agent_para_str="/root/cgroup_fj_release_agent";
+		;;
+	"4" )
+		release_agent_para_str="cgroup_fj_release_agent";
+		;;
+	"5" )
+		release_agent_para_str="/sbin/cgroup_fj_release_agent";
+		;;
+	"6" )
+		release_agent_para_str="/root/cgroup_fj_release_agent";
+		;;
+	"7" )
+		release_agent_para_str="/sbin/abc";
+		;;
+	"8" )
+		release_agent_para_str="/sbin/cgroup_fj_release_agent";
+		;;
+	 *  )
+		return -1
+		;;
+	esac
+}
+
+get_notify_on_release()
+{
+	case $notify_on_release in
+	"1" )
+		notify_on_release_str="0";
+		;;
+	"2" )
+		notify_on_release_str="1";
+		;;
+	"3" )
+		notify_on_release_str="2";
+		;;
+	"4" )
+		notify_on_release_str="-1";
+		;;
+	"5" )
+		notify_on_release_str="0ddd";
+		;;
+	"6" )
+		notify_on_release_str="1ddd";
+		;;
+	"7" )
+		notify_on_release_str="ddd1";
+		;;
+	 *  )
+		return -1
+		;;
+	esac
+}
+
+get_release_agent()
+{
+	case $release_agent_echo in
+	"1" )
+		release_agent_str="";
+		;;
+	"2" )
+		release_agent_str="/root/cgroup_fj_release_agent";
+		;;
+	"3" )
+		release_agent_str="cgroup_fj_release_agent";
+		;;
+	"4" )
+		release_agent_str="/sbin/cgroup_fj_release_agent";
+		;;
+	"5" )
+		release_agent_str="/root/cgroup_fj_release_agent";
+		;;
+	"6" )
+		release_agent_str="/sbin/abc";
+		;;
+	"7" )
+		release_agent_str="/sbin/cgroup_fj_release_agent";
+		;;
+	 *  )
+		return -1
+		;;
+	esac
+}
+
+# check the exit status, and exit or echo info.
+# exit status	expectted value	echo info	exit or not
+# 0		0		no		no
+# 0		1		yes	yes
+# not 0	0		yes	yes
+# not 0	1		no		no
+do_exit()
+{
+	if [ "$#" -ne "3" ]; then
+		echo "ERROR: exit failed,your parameter is wrong..Exiting test" >> $LOGFILE
+		exit -1
+	fi
+	
+	exit_here=$1
+	expectted=$2
+	exit_status=$3
+	
+	if [ $exit_status -eq 0 ] ;then
+		if [ $expectted -lt 1 ]; then
+			echo "								against with expectted" >> $LOGFILE
+			if [ $exit_here -ge 1 ]; then
+				cleanup;
+				exit -1
+			fi
+		fi
+	else
+		if [ $expectted -ge 1 ]; then
+			echo "								against with expectted" >> $LOGFILE
+			if [ $exit_here -ge 1 ]; then
+				cleanup;
+				exit -1
+			fi
+		else
+			if [ $exit_here -ge 1 ]; then
+				cleanup;
+				exit 0
+			fi
+		fi
+	fi
+}
+
+do_echo()
+{
+	if [ "$#" -ne "4" ]; then
+		echo "ERROR: echo failed,your parameter is wrong..Exiting test" >> $LOGFILE
+		exit -1
+	fi
+	
+	exit_here=$1
+	expectted=$2
+	value=$3
+	target=$4
+
+	if [ $no_debug -ne 1 ]; then
+		if [ $expectted -ge 1 ]; then
+			echo "\"echo $value > $target\" (expectted: success)" >> $LOGFILE
+		else
+			echo "\"echo $value > $target\" (expectted: fail)" >> $LOGFILE
+		fi
+	fi
+
+	`echo $value > $target` >> $LOGFILE 2>&1
+	do_exit $exit_here $expectted $?;
+}
+
+do_mkdir()
+{
+	if [ "$#" -ne "3" ] && [ "$#" -ne "4" ]; then
+		echo "ERROR: mkdir failed,your parameter is wrong..Exiting test" >> $LOGFILE
+		exit -1
+	fi
+	
+	exit_here=$1
+	expectted=$2
+	target=$3
+	parents=0
+	if [ "$#" -eq "4" ] && [ "$4" -ne 0 ]; then
+		parents=1
+	fi
+
+	if [ $no_debug -ne 1 ]; then
+		if [ $expectted -ge 1 ]; then
+			echo "\"mkdir $target\" (expectted: success)" >> $LOGFILE
+		else
+			echo "\"mkdir $target\" (expectted: fail)" >> $LOGFILE
+		fi
+	fi
+	
+	if [ $parents -ne "1" ] && [ -e $target ]; then
+		do_rmdir $exit_here 1 $target
+	fi
+	
+	if [ $parents -ne "1" ]; then
+		mkdir $target >> $LOGFILE 2>&1
+	else
+		mkdir -p $target >> $LOGFILE 2>&1
+	fi
+	do_exit $exit_here $expectted $?;
+}
+
+do_rmdir()
+{
+	if [ "$#" -lt "3" ]; then
+		echo "ERROR: rmdir failed,your parameter is wrong..Exiting test" >> $LOGFILE
+		exit -1
+	fi
+	
+	exit_here=$1
+	expectted=$2
+	target=$3
+
+	if ! [ -e $target ]; then
+		echo "INFO: $target is not exist" >> $LOGFILE
+		return
+	fi
+	
+	if [ $no_debug -ne 1 ]; then
+		if [ $expectted -ge 1 ]; then
+			echo "\"rmdir $target\" (expectted: success)" >> $LOGFILE
+		else
+			echo "\"rmdir $target\" (expectted: fail)" >> $LOGFILE
+		fi
+	fi
+	
+	rmdir $3 $4 $5 >> $LOGFILE 2>&1
+	do_exit $exit_here $expectted $?;
+}
+
+do_mount()
+{
+	if [ "$#" -ne "4" ] && [ "$#" -ne "5" ] ; then
+		echo "ERROR: mount failed,your parameter is wrong..Exiting test" >> $LOGFILE
+		exit -1
+	fi
+	
+	exit_here=$1
+	expectted=$2
+	para_o=$3
+	target=$4
+	something="cgroup"
+	if [ "$#" -eq "5" ]; then
+		something=$5
+	fi
+	
+	if [ $no_debug -ne 1 ]; then
+		if [ $expectted -ge 1 ]; then
+			echo "\"mount -t cgroup $para_o $something $target\" (expectted: success)" >> $LOGFILE
+		else
+			echo "\"mount -t cgroup $para_o $something $target\" (expectted: fail)" >> $LOGFILE
+		fi
+	fi
+	
+	mount -t cgroup $para_o $something $target >> $LOGFILE 2>&1
+	do_exit $exit_here $expectted $?;
+}
+
+do_umount()
+{
+	if [ "$#" -ne "3" ]; then
+		echo "ERROR: umount failed,your parameter is wrong..Exiting test" >> $LOGFILE
+		exit -1
+	fi
+	
+	exit_here=$1
+	expectted=$2
+	target=$3
+	
+	if [ $no_debug -ne 1 ]; then
+		if [ $expectted -ge 1 ]; then
+			echo "\"umount $target\" (expectted: success)" >> $LOGFILE
+		else
+			echo "\"umount $target\" (expectted: fail)" >> $LOGFILE
+		fi
+	fi
+	
+	umount $target >> $LOGFILE 2>&1
+	do_exit $exit_here $expectted $?;
+}
+
+do_mv()
+{
+	if [ "$#" -ne "4" ]; then
+		echo "ERROR: mv failed,your parameter is wrong..Exiting test" >> $LOGFILE
+		exit -1
+	fi
+	
+	exit_here=$1
+	expectted=$2
+	source=$3
+	target=$4
+	
+	if [ $no_debug -ne 1 ]; then
+		if [ $expectted -ge 1 ]; then
+			echo "\"mv $source $target\" (expectted: success)" >> $LOGFILE
+		else
+			echo "\"mv $source $target\" (expectted: fail)" >> $LOGFILE
+		fi
+	fi
+	
+	mv $source $target >> $LOGFILE 2>&1
+	do_exit $exit_here $expectted $?;
+}
+
+do_kill()
+{
+	if [ "$#" -ne "4" ]; then
+		echo "ERROR: kill failed,your parameter is wrong..Exiting test" >> $LOGFILE
+		exit -1
+	fi
+	
+	exit_here=$1
+	expectted=$2
+	signo=$3
+	pid=$4
+
+	if ! [ -e /proc/$pid/ ];then
+		return
+	fi	
+
+	if [ $no_debug -ne 1 ]; then
+		if [ $expectted -ge 1 ]; then
+			echo "\"kill -$signo $pid\" (expectted: success)" >> $LOGFILE
+		else
+			echo "\"kill -$signo $pid\" (expectted: fail)" >> $LOGFILE
+		fi
+	fi
+
+	kill -s $signo $pid >> $LOGFILE 2>&1
+	do_exit $exit_here $expectted $?;
+}
+
+setup()
+{
+	if [ -e /dev/cgroup ]; then
+		cleanup;
+	fi
+	do_mkdir 1 1 /dev/cgroup
+	
+	if [ -e $TESTROOT/cgroup_fj_release_agent ]
+	then
+		cp -f $TESTROOT/cgroup_fj_release_agent /sbin
+		chmod a+x /sbin/cgroup_fj_release_agent
+		cp -f $TESTROOT/cgroup_fj_release_agent /root
+		chmod a+x /root/cgroup_fj_release_agent
+	else
+		echo "ERROR: $TESTROOT/cgroup_fj_release_agent isn't exist..Exiting test" >> $LOGFILE
+		exit -1;
+	fi
+
+	if [ $release_agent_para -eq 8 ] || [ $release_agent_echo -eq 7 ]; then
+		chmod a-x /sbin/cgroup_fj_release_agent
+	fi
+	
+	if [ -e $TESTROOT/cgroup_fj_proc ]
+	then
+		chmod a+x $TESTROOT/cgroup_fj_proc
+	else
+		echo "ERROR: $TESTROOT/cgroup_fj_proc isn't exist..Exiting test" >> $LOGFILE
+		exit -1;
+	fi
+}
+
+cleanup()
+{
+	if [ $no_debug -ne 1 ]; then
+		echo "INFO: we now cleanup ..." >> $LOGFILE
+	fi
+
+	export LANG=en_US.UTF-8
+
+	rm -f /sbin/cgroup_fj_release_agent 2>/dev/null
+	rm -f /root/cgroup_fj_release_agent 2>/dev/null
+
+	killall -9 cgroup_fj_proc 1>/dev/null 2>&1;
+
+	if [ -e /dev/cgroup/subgroup_1 ]; then
+		cat /dev/cgroup/subgroup_1/tasks > $TMPFILE
+		nlines=`cat $TMPFILE | wc -l`
+		for i in `seq 1 $nlines`
+		do
+			cur_pid=`sed -n "$i""p" $TMPFILE`
+			if [ -e /proc/$cur_pid/ ];then
+				do_echo 0 1 "$cur_pid" /dev/cgroup/tasks
+			fi
+		done
+		do_rmdir 0 1 /dev/cgroup/subgroup_*
+	fi
+	
+	if [ -e $TMPFILE ]; then
+		rm -f $TMPFILE 2>/dev/null
+	fi
+
+	mount_str="`mount -l | grep /dev/cgroup`"
+	if [ "$mount_str" != "" ]; then
+		do_umount 0 1 /dev/cgroup
+	fi
+	
+	if [ -e /dev/cgroup ]; then
+		do_rmdir 0 1 /dev/cgroup
+	fi
+}
+
+reclaim_foundling()
+{
+	if ! [ -e /dev/cgroup/subgroup_1 ]; then
+		return
+	fi
+	foundlings=0
+	cat `find /dev/cgroup/subgroup_* -name "tasks"` > $TMPFILE
+	nlines=`cat "$TMPFILE" | wc -l`
+	for k in `seq 1 $nlines`
+	do
+		cur_pid=`sed -n "$k""p" $TMPFILE`
+		if [ -e /proc/$cur_pid/ ];then
+			echo "ERROR: pid $cur_pid reclaimed"
+			do_echo 0 1 "$cur_pid" "/dev/cgroup/tasks"
+			let "foundlings = $foundlings + 1"
+		fi
+	done
+
+	if [ $foundlings -ne 0 ]; then
+		echo "ERROR: some processes lost in subgroups's tasks, now they are reclaimed."
+	fi 
+}
+
+mkdir_subgroup()
+{
+	if ! [ -e /dev/cgroup ]; then
+		echo "ERROR: /dev/cgroup isn't exist..Exiting test" >> $LOGFILE
+		exit -1;
+	fi
+
+	do_mkdir 1 1 /dev/cgroup/subgroup_1
+}
+
+mount_cgroup ()
+{
+	expectted=1
+	PARAMETER_O="";
+	if [ $subsystem -eq 10 ]; then
+		expectted=0
+	fi
+	if [ "$subsystem_str" != "" ]; then
+		PARAMETER_O="$subsystem_str"
+	fi
+	if [ "$noprefix_use_str" != "" ]; then
+		if [ "$PARAMETER_O" != "" ]; then
+			PARAMETER_O="$PARAMETER_O"",""$noprefix_use_str"
+		else
+			PARAMETER_O="$noprefix_use_str"
+		fi
+	fi
+	if [ "$release_agent_para_str" != "" ]; then
+		if [ "$PARAMETER_O" != "" ]; then
+			PARAMETER_O="$PARAMETER_O"",release_agent=""$release_agent_para_str"
+		else
+			PARAMETER_O="release_agent=""$release_agent_para_str"
+		fi
+	fi
+	if [ "$remount_use_str" != "" ]; then
+		if [ "$PARAMETER_O" != "" ]; then
+			do_mount 1 1 "-o$PARAMETER_O" /dev/cgroup
+			PARAMETER_O="$PARAMETER_O"",""$remount_use_str"
+		else
+			do_mount 1 1 "" /dev/cgroup
+			PARAMETER_O="$remount_use_str"
+		fi
+		sleep 1
+	fi
+
+	if [ "$PARAMETER_O" != "" ]; then
+		PARAMETER_O="-o""$PARAMETER_O"
+	fi
+	
+	do_mount 1 $expectted "$PARAMETER_O" /dev/cgroup
+}
+
+check_para()
+{
+	get_subsystem;
+	ret1=$?
+	get_remount_use;
+	ret2=$?
+	get_noprefix_use;
+	ret3=$?
+	get_release_agent_para;
+	ret4=$?
+	get_notify_on_release;
+	ret5=$?
+	get_release_agent;
+	ret6=$?
+
+	if [ $ret1 -ne 0 ] || [ $ret2 -ne 0 ] || [ $ret3 -ne 0 ] || [ $ret4 -ne 0 ] || [ $ret5 -ne 0 ] || [ $ret6 -ne 0 ] 
+	then
+		echo "ERROR: Wrong inputed parameter..Exiting test" >> $LOGFILE
+		return -1
+	fi
+
+	return 0
+}
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/Makefile ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/Makefile
--- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/Makefile	1969-12-31 19:00:00.000000000 -0500
+++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/Makefile	2009-08-23 11:07:41.000000000 -0400
@@ -0,0 +1,19 @@
+CFLAGS += -Wall -O2 -Wextra
+
+SRCS    = $(wildcard *.c)
+TARGETS = $(patsubst %.c,%,$(SRCS))
+
+all:	$(TARGETS)
+
+install:
+
+test:
+	@./run_cgroup_test_fj.sh
+
+clean:
+	rm -f $(TARGETS) *.o
+
+install:
+	@set -e; for i in $(TARGETS) *.sh; do ln -f $$i ../../../bin/$$i ; chmod +x $$i ; done
+	ln -f cgroup_fj_release_agent ../../../bin/cgroup_fj_release_agent
+	ln -f cgroup_fj_testcases ../../../bin/cgroup_fj_testcases 
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/README ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/README
--- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/README	1969-12-31 19:00:00.000000000 -0500
+++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/README	2009-08-23 10:08:01.000000000 -0400
@@ -0,0 +1,56 @@
+
+TEST SUITE:
+
+The directory cgroup_fj contains the tests related to the cgroups.
+
+There are total 194 testcases that have been added. These testcases 
+contain the basis operation test and stress test of cgroups.
+
+NOTE: the test can be run by root only.
+
+TESTS AIM:
+
+The aim of the tests is to test the functionality of cgroups.
+
+FILES DESCRIPTION:
+
+run_cgroup_test_fj.sh
+--------------------
+This script runs all the 194 testcases.
+
+cgroup_fj_proc.c
+--------------------
+The program creates child process till catched a signal SIGUSR1.
+
+cgroup_fj_utility.sh
+--------------------
+Contains common functions for function test and stress test.
+
+cgroup_fj_release_agent
+--------------------
+Used for the cgroup option of release_agent.
+
+cgroup_fj_function.sh
+--------------------
+This script runs a function test.
+
+cgroup_fj_function2.sh
+--------------------
+This script runs a function test which not be covered by cgroup_fj_function.sh.
+
+cgroup_fj_stress.sh
+--------------------
+This script runs a stress test.
+
+cgroup_fj_testcases
+--------------------
+Prestored test cases for function test and stress test.
+
+Makefile
+--------------------
+The usual makefile for this directory
+
+README
+------
+The one you have gone through.
+
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh
--- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh	1969-12-31 19:00:00.000000000 -0500
+++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh	2009-08-24 12:07:35.000000000 -0400
@@ -0,0 +1,135 @@
+#! /bin/sh
+
+################################################################################
+##                                                                            ##
+## Copyright (c) 2009 FUJITSU LIMITED                                         ##
+##                                                                            ##
+## This program is free software;  you can redistribute it and#or modify      ##
+## it under the terms of the GNU General Public License as published by       ##
+## the Free Software Foundation; either version 2 of the License, or          ##
+## (at your option) any later version.                                        ##
+##                                                                            ##
+## This program is distributed in the hope that it will be useful, but        ##
+## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
+## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
+## for more details.                                                          ##
+##                                                                            ##
+## You should have received a copy of the GNU General Public License          ##
+## along with this program;  if not, write to the Free Software               ##
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    ##
+##                                                                            ##
+## Author: Shi Weihua <shiwh@cn.fujitsu.com>                                  ##
+##                                                                            ##
+################################################################################
+cd $LTPROOT/testcases/bin
+
+export TCID="cgroup_test_fj"
+export TST_TOTAL=194
+export TST_COUNT=1
+
+export TESTROOT=`pwd`
+export LOGFILE=$LTPROOT/output/cgroup_fj_log_`date +%F`.txt
+export TMPFILE=$TESTROOT/tmp_tasks
+export CASENO1=0
+export CASENO2=0
+
+if [ "$UID" -ne 0 ]; then
+	echo "***error***:you must use root to test"
+	exit -1
+fi
+
+if ! [ -f /proc/cgroups ]; then
+	echo "***error***:you must enable cgroup config in kernel";
+	exit -3;
+fi
+
+if [ ! -x $TESTROOT/cgroup_fj_proc ]; then
+	echo "***warning***:file \"cgroup_fj_proc\" is not exist or not executable";
+	echo "please do make and check execution permission"
+	exit -4;
+fi
+
+CPUSET=`grep -w cpuset /proc/cgroups | cut -f1`;
+DEBUG=`grep -w debug /proc/cgroups | cut -f1`;
+NS=`grep -w ns /proc/cgroups | cut -f1`;
+CPU=`grep -w cpu /proc/cgroups | cut -f1`;
+CPUACCT=`grep -w cpuacct /proc/cgroups | cut -f1`;
+MEMORY=`grep -w memory /proc/cgroups | cut -f1`;
+FREEZER=`grep -w freezer /proc/cgroups | cut -f1`
+DEVICES=`grep -w devices /proc/cgroups | cut -f1`
+SUBSYSCOMPILED="";
+if [ "$CPUSET" = "cpuset" ]; then
+	SYBSYSCOMPILED="cpuset,"
+fi
+if [ "$DEBUG" = "debug" ]; then
+	SYBSYSCOMPILED="$SYBSYSCOMPILED debug,"
+fi
+if [ "$NS" = "ns" ]; then
+	SYBSYSCOMPILED="$SYBSYSCOMPILED ns,"
+fi
+if [ "$CPU" = "cpu" ]; then
+	SYBSYSCOMPILED="$SYBSYSCOMPILED cpu,"
+fi
+if [ "$CPUACCT" = "cpuacct" ]; then
+	SYBSYSCOMPILED="$SYBSYSCOMPILED cpuacct,"
+fi
+if [ "$MEMORY" = "memory" ]; then
+	SYBSYSCOMPILED="$SYBSYSCOMPILED memory,"
+fi
+if [ "$FREEZER" = "freezer" ]; then
+	SYBSYSCOMPILED="$SYBSYSCOMPILED freezer,"
+fi
+if [ "$DEVICES" = "devices" ]; then
+        SYBSYSCOMPILED="$SYBSYSCOMPILED devices,"
+fi
+if [ "$SYBSYSCOMPILED" = "" ];then	# Warning and exit if all cgroup subsystem are not compiled
+	echo "CONTROLLERS TESTCASES: WARNING";
+	echo "Kernel does not support for any cgroup subsystem";
+	echo "Skipping all controllers testcases....";
+	exit -2;
+fi
+
+echo "Now, we start the test for cgroup...";
+
+rm -f $LOGFILE 2>/dev/null
+echo `date` > $LOGFILE
+echo `uname -a` >> $LOGFILE
+
+echo "" >> $LOGFILE
+echo "Now, we start the test for basic function of cgroup..." >> $LOGFILE
+
+nlines=`cat cgroup_fj_testcases | wc -l`
+for i in `seq 1 $nlines`
+do
+	CASETYPE=`sed -n "$i""p" cgroup_fj_testcases | cut -f1`
+	CASECMD=`sed -n "$i""p" cgroup_fj_testcases | cut -f2`
+	echo $CASETYPE | grep "#"
+	if [ $? -ne 0 ]; then
+		case $CASETYPE in
+		"function" )
+			let "CASENO1 = $CASENO1 + 1"
+			export CASENO1=$CASENO1
+			$TESTROOT/cgroup_fj_function.sh $CASECMD
+			;;
+		"function2" )
+			let "CASENO1 = $CASENO1 + 1"
+			export CASENO1=$CASENO1
+			$TESTROOT/cgroup_fj_function2.sh $CASECMD
+			;;
+		"stress" )
+			let "CASENO2 = $CASENO2 + 1"
+			export CASENO2=$CASENO2
+			$TESTROOT/cgroup_fj_stress.sh $CASECMD
+			;;
+		esac
+
+		ret=$?
+		if [ $ret -eq 0 ]; then
+			tst_resm TPASS "case$i(`sed -n "$i""p" cgroup_fj_testcases`)    PASS"
+		elif [ $ret -ne 9 ]; then
+			tst_resm TFAIL "case$i(`sed -n "$i""p" cgroup_fj_testcases`)    FAIL"
+		fi
+	fi
+done
+
+exit 0;
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/Makefile ltp-full-20090731.cg/testcases/kernel/controllers/Makefile
--- ltp-full-20090731.orig/testcases/kernel/controllers/Makefile	2009-07-30 13:27:58.000000000 -0400
+++ ltp-full-20090731.cg/testcases/kernel/controllers/Makefile	2009-08-23 10:34:45.000000000 -0400
@@ -12,6 +12,7 @@ endif
 ifdef CROSS_COMPILE
 ifeq ($(CHECK_CGROUP),cgroup)
 SUBDIRS += cgroup
+SUBDIRS += cgroup_fj
 SUBDIRS += cpuctl
 SUBDIRS += cpuctl_fj
 SUBDIRS += memctl
@@ -24,6 +25,7 @@ endif
 else
 ifeq ($(CHECK_CGROUP),cgroup)
 SUBDIRS += cgroup
+SUBDIRS += cgroup_fj
 else
 $(info "Kernel is not compiled with control cgroup support")
 endif









------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [LTP] [PATCH] Add new testcases for cgroup
  2009-08-26  0:04 [LTP] [PATCH] Add new testcases for cgroup Shi Weihua
@ 2009-08-26  5:49 ` Subrata Modak
  2009-08-26 15:28 ` Matt Helsley
  1 sibling, 0 replies; 5+ messages in thread
From: Subrata Modak @ 2009-08-26  5:49 UTC (permalink / raw)
  To: Shi Weihua; +Cc: ltp-list

On Wed, 2009-08-26 at 08:04 +0800, Shi Weihua wrote:
> We has created some testcases for cgroup in the last year. 
> There are total 194 testcases that have been added. These testcases contain 
> the basis operation test, part functionality test and stress test of cgroup.
> 
> How to run this test:
> 	# runltp -f controllers
> 
> Result:
> Now, we start the test for cgroup...
> cgroup_test_fj    1  TPASS  :  case1(function   1 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case2(function   1 2 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case3(function   1 1 1 2 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case4(function   1 1 1 3 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case5(function   1 1 1 4 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case6(function   1 1 1 5 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case7(function   1 1 1 6 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case8(function   1 1 1 7 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case9(function   1 1 1 8 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case10(function  2 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case11(function  2 2 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case12(function  2 1 2 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case13(function  2 1 1 2 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case14(function  2 1 1 3 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case15(function  2 1 1 4 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case16(function  2 1 1 5 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case17(function  2 1 1 6 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case18(function  2 1 1 7 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case19(function  2 1 1 8 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case20(function  3 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case21(function  3 2 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case22(function  3 1 1 2 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case23(function  3 1 1 3 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case24(function  3 1 1 4 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case25(function  3 1 1 5 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case26(function  3 1 1 6 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case27(function  3 1 1 7 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case28(function  3 1 1 8 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case29(function  4 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case30(function  4 2 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case31(function  4 1 1 2 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case32(function  4 1 1 3 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case33(function  4 1 1 4 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case34(function  4 1 1 5 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case35(function  4 1 1 6 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case36(function  4 1 1 7 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case37(function  4 1 1 8 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case38(function  5 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case39(function  5 2 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case40(function  5 1 1 2 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case41(function  5 1 1 3 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case42(function  5 1 1 4 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case43(function  5 1 1 5 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case44(function  5 1 1 6 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case45(function  5 1 1 7 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case46(function  5 1 1 8 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case47(function  6 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case48(function  6 2 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case49(function  6 1 1 2 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case50(function  6 1 1 3 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case51(function  6 1 1 4 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case52(function  6 1 1 5 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case53(function  6 1 1 6 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case54(function  6 1 1 7 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case55(function  6 1 1 8 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case56(function  7 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case57(function  7 2 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case58(function  7 1 1 2 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case59(function  7 1 1 3 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case60(function  7 1 1 4 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case61(function  7 1 1 5 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case62(function  7 1 1 6 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case63(function  7 1 1 7 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case64(function  7 1 1 8 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case65(function  8 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case66(function  9 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case67(function  9 2 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case68(function  9 1 1 2 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case69(function  9 1 1 3 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case70(function  9 1 1 4 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case71(function  9 1 1 5 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case72(function  9 1 1 6 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case73(function  9 1 1 7 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case74(function  9 1 1 8 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case75(function  10 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case76(function  11 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case77(function  11 2 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case78(function  11 1 1 2 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case79(function  11 1 1 3 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case80(function  11 1 1 4 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case81(function  11 1 1 5 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case82(function  11 1 1 6 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case83(function  11 1 1 7 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case84(function  11 1 1 8 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case85(function  12 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case86(function  12 2 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case87(function  12 1 1 2 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case88(function  12 1 1 3 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case89(function  12 1 1 4 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case90(function  12 1 1 5 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case91(function  12 1 1 6 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case92(function  12 1 1 7 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case93(function  12 1 1 8 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case94(function  1 1 1 1 1 1 2 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case95(function  1 1 1 1 1 2 2 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case96(function  1 1 1 1 1 2 3 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case97(function  1 1 1 1 1 2 5 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case98(function  1 1 1 1 1 3 1 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case99(function  1 1 1 1 1 3 2 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case100(function 1 1 1 1 1 3 4 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case101(function 1 1 1 1 1 4 3 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case102(function 1 1 1 1 1 4 5 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case103(function 1 1 1 1 2 1 1 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case104(function 1 1 1 1 1 1 1 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case105(function 1 1 1 1 1 1 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case106(function 1 1 1 1 1 2 3 2 2)    PASS
> cgroup_test_fj    1  TPASS  :  case107(function 1 1 1 1 1 2 3 2 3)    PASS
> cgroup_test_fj    1  TPASS  :  case108(function 1 1 1 1 1 2 3 2 4)    PASS
> cgroup_test_fj    1  TPASS  :  case109(function 1 1 1 1 1 2 3 2 5)    PASS
> cgroup_test_fj    1  TPASS  :  case110(function 1 1 1 1 1 2 3 2 6)    PASS
> cgroup_test_fj    1  TPASS  :  case111(function 1 1 1 1 1 2 3 2 7)    PASS
> cgroup_test_fj    1  TPASS  :  case112(function 1 1 1 1 1 2 3 3 2)    PASS
> cgroup_test_fj    1  TPASS  :  case113(function 1 1 1 1 1 2 3 4 2)    PASS
> cgroup_test_fj    1  TPASS  :  case114(function 1 1 1 1 1 2 3 5 2)    PASS
> cgroup_test_fj    1  TPASS  :  case115(function 1 1 1 1 1 2 3 6 2)    PASS
> cgroup_test_fj    1  TPASS  :  case116(function 1 1 1 1 1 2 3 7 2)    PASS
> cgroup_test_fj    1  TPASS  :  case117(function 1 1 1 2 1 2 3 2 2)    PASS
> cgroup_test_fj    1  TPASS  :  case118(function 1 1 1 3 1 2 3 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case119(function 1 1 1 3 1 2 3 1 2)    PASS
> cgroup_test_fj    1  TPASS  :  case120(function 1 1 1 3 1 2 3 1 3)    PASS
> cgroup_test_fj    1  TPASS  :  case121(function 1 1 1 3 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case122(function 1 1 1 3 1 2 3 2 2)    PASS
> cgroup_test_fj    1  TPASS  :  case123(function 1 1 1 3 1 2 3 2 3)    PASS
> cgroup_test_fj    1  TPASS  :  case124(function 1 1 1 3 1 2 3 2 4)    PASS
> cgroup_test_fj    1  TPASS  :  case125(function 1 1 1 3 1 2 3 2 5)    PASS
> cgroup_test_fj    1  TPASS  :  case126(function 1 1 1 3 1 2 3 2 6)    PASS
> cgroup_test_fj    1  TPASS  :  case127(function 1 1 1 3 1 2 3 2 7)    PASS
> cgroup_test_fj    1  TPASS  :  case128(function 1 1 1 3 1 2 3 3 1)    PASS
> cgroup_test_fj    1  TPASS  :  case129(function 1 1 1 3 1 2 3 3 2)    PASS
> cgroup_test_fj    1  TPASS  :  case130(function 1 1 1 3 1 2 3 3 3)    PASS
> cgroup_test_fj    1  TPASS  :  case131(function 1 1 1 3 1 2 3 4 2)    PASS
> cgroup_test_fj    1  TPASS  :  case132(function 1 1 1 3 1 2 3 5 2)    PASS
> cgroup_test_fj    1  TPASS  :  case133(function 1 1 1 3 1 2 3 6 2)    PASS
> cgroup_test_fj    1  TPASS  :  case134(function 1 1 1 3 1 2 3 7 2)    PASS
> cgroup_test_fj    1  TPASS  :  case135(function2        1)    PASS
> cgroup_test_fj    1  TPASS  :  case136(function2        2)    PASS
> cgroup_test_fj    1  TPASS  :  case137(function2        3)    PASS
> cgroup_test_fj    1  TPASS  :  case138(function2        4)    PASS
> cgroup_test_fj    1  TPASS  :  case139(function2        5)    PASS
> cgroup_test_fj    1  TPASS  :  case140(function2        6)    PASS
> cgroup_test_fj    1  TPASS  :  case141(function2        7)    PASS
> cgroup_test_fj    1  TPASS  :  case142(function2        8)    PASS
> cgroup_test_fj    1  TPASS  :  case143(function2        9)    PASS
> cgroup_test_fj    1  TPASS  :  case144(function2        10)    PASS
> cgroup_test_fj    1  TPASS  :  case145(function2        11)    PASS
> cgroup_test_fj    1  TPASS  :  case146(function2        12)    PASS
> cgroup_test_fj    1  TPASS  :  case147(function2        13)    PASS
> cgroup_test_fj    1  TPASS  :  case148(stress   1 2 1 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case149(stress   2 2 1 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case150(stress   3 2 1 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case151(stress   4 2 1 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case152(stress   5 2 1 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case153(stress   6 2 1 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case154(stress   7 2 1 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case155(stress   1 1 1 1 2)    PASS
> cgroup_test_fj    1  TPASS  :  case156(stress   1 1 1 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case157(stress   1 1 1 2 2)    PASS
> cgroup_test_fj    1  TPASS  :  case158(stress   1 1 1 2 3)    PASS
> cgroup_test_fj    1  TPASS  :  case159(stress   1 1 2 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case160(stress   1 1 2 1 2)    PASS
> cgroup_test_fj    1  TPASS  :  case161(stress   1 1 2 1 3)    PASS
> cgroup_test_fj    1  TPASS  :  case162(stress   1 1 2 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case163(stress   1 1 2 2 2)    PASS
> cgroup_test_fj    1  TPASS  :  case164(stress   2 1 1 1 2)    PASS
> cgroup_test_fj    1  TPASS  :  case165(stress   2 1 1 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case166(stress   2 1 1 2 2)    PASS
> cgroup_test_fj    1  TPASS  :  case167(stress   2 1 1 2 3)    PASS
> cgroup_test_fj    1  TPASS  :  case168(stress   2 1 2 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case169(stress   2 1 2 1 2)    PASS
> cgroup_test_fj    1  TPASS  :  case170(stress   2 1 2 1 3)    PASS
> cgroup_test_fj    1  TPASS  :  case171(stress   2 1 2 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case172(stress   2 1 2 2 2)    PASS
> cgroup_test_fj    1  TPASS  :  case173(stress   4 1 1 1 2)    PASS
> cgroup_test_fj    1  TPASS  :  case174(stress   4 1 2 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case175(stress   4 1 2 1 2)    PASS
> cgroup_test_fj    1  TPASS  :  case176(stress   4 1 2 1 3)    PASS
> cgroup_test_fj    1  TPASS  :  case177(stress   5 1 1 1 2)    PASS
> cgroup_test_fj    1  TPASS  :  case178(stress   5 1 1 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case179(stress   5 1 1 2 2)    PASS
> cgroup_test_fj    1  TPASS  :  case180(stress   5 1 1 2 3)    PASS
> cgroup_test_fj    1  TPASS  :  case181(stress   5 1 2 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case182(stress   5 1 2 1 2)    PASS
> cgroup_test_fj    1  TPASS  :  case183(stress   5 1 2 1 3)    PASS
> cgroup_test_fj    1  TPASS  :  case184(stress   5 1 2 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case185(stress   5 1 2 2 2)    PASS
> cgroup_test_fj    1  TPASS  :  case186(stress   6 1 1 1 2)    PASS
> cgroup_test_fj    1  TPASS  :  case187(stress   6 1 1 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case188(stress   6 1 1 2 2)    PASS
> cgroup_test_fj    1  TPASS  :  case189(stress   6 1 1 2 3)    PASS
> cgroup_test_fj    1  TPASS  :  case190(stress   6 1 2 1 1)    PASS
> cgroup_test_fj    1  TPASS  :  case191(stress   6 1 2 1 2)    PASS
> cgroup_test_fj    1  TPASS  :  case192(stress   6 1 2 1 3)    PASS
> cgroup_test_fj    1  TPASS  :  case193(stress   6 1 2 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case194(stress   6 1 2 2 2)    PASS
> 
> 
> Signed-off-by: Shi Weihua <shiwh@cn.fujitsu.com>

Wow. Thatś awesome. Thanks for making this effort in testing those 194
scenarios. Going in August release.

Regards--
Subrata

> ---
>  runtest/controllers                                            |    1
>  testcases/kernel/controllers/Makefile                          |    2
>  testcases/kernel/controllers/cgroup_fj/Makefile                |   19
>  testcases/kernel/controllers/cgroup_fj/README                  |   56
>  testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh   |  269 ++++
>  testcases/kernel/controllers/cgroup_fj/cgroup_fj_function2.sh  |  329 +++++
>  testcases/kernel/controllers/cgroup_fj/cgroup_fj_proc.c        |   77 +
>  testcases/kernel/controllers/cgroup_fj/cgroup_fj_release_agent |   11
>  testcases/kernel/controllers/cgroup_fj/cgroup_fj_stress.sh     |  340 +++++
>  testcases/kernel/controllers/cgroup_fj/cgroup_fj_testcases     |  194 +++
>  testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh    |  633 ++++++++++
>  testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh   |  135 ++
>  12 files changed, 2066 insertions(+)



------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [LTP] [PATCH] Add new testcases for cgroup
  2009-08-26  0:04 [LTP] [PATCH] Add new testcases for cgroup Shi Weihua
  2009-08-26  5:49 ` Subrata Modak
@ 2009-08-26 15:28 ` Matt Helsley
  2009-08-27  0:06   ` Shi Weihua
  1 sibling, 1 reply; 5+ messages in thread
From: Matt Helsley @ 2009-08-26 15:28 UTC (permalink / raw)
  To: Shi Weihua; +Cc: ltp-list

On Wed, Aug 26, 2009 at 08:04:53AM +0800, Shi Weihua wrote:
> We has created some testcases for cgroup in the last year. 
> There are total 194 testcases that have been added. These testcases contain 
> the basis operation test, part functionality test and stress test of cgroup.
> 
> How to run this test:
> 	# runltp -f controllers
> 
> Result:
> Now, we start the test for cgroup...
> cgroup_test_fj    1  TPASS  :  case1(function   1 1 1 1 1 2 3 2 1)    PASS
> cgroup_test_fj    1  TPASS  :  case2(function   1 2 1 1 1 2 3 2 1)    PASS

<snip>

> cgroup_test_fj    1  TPASS  :  case93(function  12 1 1 8 1 2 3 2 1)    PASS

<snip>

> diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh
> --- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	1969-12-31 19:00:00.000000000 -0500
> +++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	2009-08-23 10:15:08.000000000 -0400
> @@ -0,0 +1,269 @@
> +#! /bin/sh
> +
> +################################################################################
> +##                                                                            ##
> +## Copyright (c) 2009 FUJITSU LIMITED                                         ##
> +##                                                                            ##
> +## This program is free software;  you can redistribute it and#or modify      ##
> +## it under the terms of the GNU General Public License as published by       ##
> +## the Free Software Foundation; either version 2 of the License, or          ##
> +## (at your option) any later version.                                        ##
> +##                                                                            ##
> +## This program is distributed in the hope that it will be useful, but        ##
> +## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
> +## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
> +## for more details.                                                          ##
> +##                                                                            ##
> +## You should have received a copy of the GNU General Public License          ##
> +## along with this program;  if not, write to the Free Software               ##
> +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    ##
> +##                                                                            ##
> +## Author: Shi Weihua <shiwh@cn.fujitsu.com>                                  ##
> +##                                                                            ##
> +################################################################################
> +
> +subsystem=$1
> +remount_use=$2
> +noprefix_use=$3	
> +release_agent_para=$4
> +subgroup_exist=$5
> +attach_operation=$6
> +remove_operation=$7
> +notify_on_release=$8
> +release_agent_echo=$9
> +
> +subsystem_str="";
> +remount_use_str="";
> +noprefix_use_str="";
> +release_agent_para_str="";
> +notify_on_release_str="";
> +release_agent_str="";
> +
> +expectted=1;
> +
> +# Create some processes and move them to cgroups
> +pid=0;
> +pid2=0;
> +
> +# not output debug info
> +no_debug=0
> +
> +usage()
> +{
> +	echo "usage of cgroup_fj_function.sh: "
> +	echo "  ./cgroup_fj_function.sh -subsystem -remount_use -noprefix_use -release_agent_para"
> +	echo "                          -subgroup_exist -attach_operation -remove_operation"
> +	echo "                          -notify_on_release -release_agent_echo"
> +	echo "    subsystem's usable number"
> +	echo "      1: debug"
> +	echo "      2: cpuset"
> +	echo "      3: ns"
> +	echo "      4: cpu"
> +	echo "      5: cpuacct"
> +	echo "      6: memory"
> +	echo "      7: all"
> +	echo "      8: (none)"
> +	echo "      9: debug,debug"
> +	echo "      10: (nonexistent subsystem), e.g. abc"
> +	echo "      11: freezer"
> +	echo "      11: devices"

Looks like this should be 12.

Why not just use the subsystem names both to iterate over and to print
out? Then it will be a little clearer what test has[n't] passed.
e.g.:

SUBSYSTEMS=( debug cpuset ns cpu cpuacct memory debug,debug freezer \
		devices nonexistent none all )

Then when you're running the test cases or printing usage you could do:

for SUBSYS in "${SUBSYSTEMS[@]}" ; do
	...
done

Sadly I didn't have a close enough look at all of the code to tell if
this is do-able. Is it? If you could similarly map the other numbers
it may be easier to read the output and the code.

Cheers,
	-Matt Helsley

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [LTP] [PATCH] Add new testcases for cgroup
  2009-08-26 15:28 ` Matt Helsley
@ 2009-08-27  0:06   ` Shi Weihua
  2009-08-27 10:20     ` Subrata Modak
  0 siblings, 1 reply; 5+ messages in thread
From: Shi Weihua @ 2009-08-27  0:06 UTC (permalink / raw)
  To: Matt Helsley; +Cc: ltp-list

Matt Helsley wrote:
> On Wed, Aug 26, 2009 at 08:04:53AM +0800, Shi Weihua wrote:
>> We has created some testcases for cgroup in the last year. 
>> There are total 194 testcases that have been added. These testcases contain 
>> the basis operation test, part functionality test and stress test of cgroup.
>>
>> How to run this test:
>> 	# runltp -f controllers
>>
>> Result:
>> Now, we start the test for cgroup...
>> cgroup_test_fj    1  TPASS  :  case1(function   1 1 1 1 1 2 3 2 1)    PASS
>> cgroup_test_fj    1  TPASS  :  case2(function   1 2 1 1 1 2 3 2 1)    PASS
> 
> <snip>
> 
>> cgroup_test_fj    1  TPASS  :  case93(function  12 1 1 8 1 2 3 2 1)    PASS
> 
> <snip>
> 
>> diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh
>> --- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	1969-12-31 19:00:00.000000000 -0500
>> +++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	2009-08-23 10:15:08.000000000 -0400
>> @@ -0,0 +1,269 @@
>> +#! /bin/sh
>> +
>> +################################################################################
>> +##                                                                            ##
>> +## Copyright (c) 2009 FUJITSU LIMITED                                         ##
>> +##                                                                            ##
>> +## This program is free software;  you can redistribute it and#or modify      ##
>> +## it under the terms of the GNU General Public License as published by       ##
>> +## the Free Software Foundation; either version 2 of the License, or          ##
>> +## (at your option) any later version.                                        ##
>> +##                                                                            ##
>> +## This program is distributed in the hope that it will be useful, but        ##
>> +## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
>> +## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
>> +## for more details.                                                          ##
>> +##                                                                            ##
>> +## You should have received a copy of the GNU General Public License          ##
>> +## along with this program;  if not, write to the Free Software               ##
>> +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    ##
>> +##                                                                            ##
>> +## Author: Shi Weihua <shiwh@cn.fujitsu.com>                                  ##
>> +##                                                                            ##
>> +################################################################################
>> +
>> +subsystem=$1
>> +remount_use=$2
>> +noprefix_use=$3	
>> +release_agent_para=$4
>> +subgroup_exist=$5
>> +attach_operation=$6
>> +remove_operation=$7
>> +notify_on_release=$8
>> +release_agent_echo=$9
>> +
>> +subsystem_str="";
>> +remount_use_str="";
>> +noprefix_use_str="";
>> +release_agent_para_str="";
>> +notify_on_release_str="";
>> +release_agent_str="";
>> +
>> +expectted=1;
>> +
>> +# Create some processes and move them to cgroups
>> +pid=0;
>> +pid2=0;
>> +
>> +# not output debug info
>> +no_debug=0
>> +
>> +usage()
>> +{
>> +	echo "usage of cgroup_fj_function.sh: "
>> +	echo "  ./cgroup_fj_function.sh -subsystem -remount_use -noprefix_use -release_agent_para"
>> +	echo "                          -subgroup_exist -attach_operation -remove_operation"
>> +	echo "                          -notify_on_release -release_agent_echo"
>> +	echo "    subsystem's usable number"
>> +	echo "      1: debug"
>> +	echo "      2: cpuset"
>> +	echo "      3: ns"
>> +	echo "      4: cpu"
>> +	echo "      5: cpuacct"
>> +	echo "      6: memory"
>> +	echo "      7: all"
>> +	echo "      8: (none)"
>> +	echo "      9: debug,debug"
>> +	echo "      10: (nonexistent subsystem), e.g. abc"
>> +	echo "      11: freezer"
>> +	echo "      11: devices"
> 
> Looks like this should be 12.

Yes, here should be 12. Sorry for it.
The following small patch fixed it.

Signed-off-by: Shi Weihua <shiwh@cn.fujitsu.com>
---
diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh ltp-full-20090731/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh
--- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	2009-08-27 04:09:41.000000000 -0400
+++ ltp-full-20090731/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	2009-08-27 04:11:07.000000000 -0400
@@ -66,7 +66,7 @@ usage()
 	echo "      9: debug,debug"
 	echo "      10: (nonexistent subsystem), e.g. abc"
 	echo "      11: freezer"
-	echo "      11: devices"
+	echo "      12: devices"
 	echo "    remount_use's usable number"
 	echo "      1: do not use remount in "-o"'s parameter"
 	echo "      2: use it"


> 
> Why not just use the subsystem names both to iterate over and to print
> out? Then it will be a little clearer what test has[n't] passed.
> e.g.:
> 
> SUBSYSTEMS=( debug cpuset ns cpu cpuacct memory debug,debug freezer \
> 		devices nonexistent none all )
> 
> Then when you're running the test cases or printing usage you could do:
> 
> for SUBSYS in "${SUBSYSTEMS[@]}" ; do
> 	...
> done
> 
> Sadly I didn't have a close enough look at all of the code to tell if
> this is do-able. Is it? If you could similarly map the other numbers
> it may be easier to read the output and the code.

Thanks for your advice. Basically, I agree.
But using strings to instead of number will need one or more weeks, I will 
do this improvement work base on August Release.
 
> 
> Cheers,
> 	-Matt Helsley
> 
> 
> 

-- 
Shi Weihua
79955-852


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [LTP] [PATCH] Add new testcases for cgroup
  2009-08-27  0:06   ` Shi Weihua
@ 2009-08-27 10:20     ` Subrata Modak
  0 siblings, 0 replies; 5+ messages in thread
From: Subrata Modak @ 2009-08-27 10:20 UTC (permalink / raw)
  To: Shi Weihua; +Cc: ltp-list

On Thu, 2009-08-27 at 08:06 +0800, Shi Weihua wrote: 
> Matt Helsley wrote:
> > On Wed, Aug 26, 2009 at 08:04:53AM +0800, Shi Weihua wrote:
> >> We has created some testcases for cgroup in the last year. 
> >> There are total 194 testcases that have been added. These testcases contain 
> >> the basis operation test, part functionality test and stress test of cgroup.
> >>
> >> How to run this test:
> >> 	# runltp -f controllers
> >>
> >> Result:
> >> Now, we start the test for cgroup...
> >> cgroup_test_fj    1  TPASS  :  case1(function   1 1 1 1 1 2 3 2 1)    PASS
> >> cgroup_test_fj    1  TPASS  :  case2(function   1 2 1 1 1 2 3 2 1)    PASS
> > 
> > <snip>
> > 
> >> cgroup_test_fj    1  TPASS  :  case93(function  12 1 1 8 1 2 3 2 1)    PASS
> > 
> > <snip>
> > 
> >> diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh
> >> --- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	1969-12-31 19:00:00.000000000 -0500
> >> +++ ltp-full-20090731.cg/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	2009-08-23 10:15:08.000000000 -0400
> >> @@ -0,0 +1,269 @@
> >> +#! /bin/sh
> >> +
> >> +################################################################################
> >> +##                                                                            ##
> >> +## Copyright (c) 2009 FUJITSU LIMITED                                         ##
> >> +##                                                                            ##
> >> +## This program is free software;  you can redistribute it and#or modify      ##
> >> +## it under the terms of the GNU General Public License as published by       ##
> >> +## the Free Software Foundation; either version 2 of the License, or          ##
> >> +## (at your option) any later version.                                        ##
> >> +##                                                                            ##
> >> +## This program is distributed in the hope that it will be useful, but        ##
> >> +## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
> >> +## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
> >> +## for more details.                                                          ##
> >> +##                                                                            ##
> >> +## You should have received a copy of the GNU General Public License          ##
> >> +## along with this program;  if not, write to the Free Software               ##
> >> +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    ##
> >> +##                                                                            ##
> >> +## Author: Shi Weihua <shiwh@cn.fujitsu.com>                                  ##
> >> +##                                                                            ##
> >> +################################################################################
> >> +
> >> +subsystem=$1
> >> +remount_use=$2
> >> +noprefix_use=$3	
> >> +release_agent_para=$4
> >> +subgroup_exist=$5
> >> +attach_operation=$6
> >> +remove_operation=$7
> >> +notify_on_release=$8
> >> +release_agent_echo=$9
> >> +
> >> +subsystem_str="";
> >> +remount_use_str="";
> >> +noprefix_use_str="";
> >> +release_agent_para_str="";
> >> +notify_on_release_str="";
> >> +release_agent_str="";
> >> +
> >> +expectted=1;
> >> +
> >> +# Create some processes and move them to cgroups
> >> +pid=0;
> >> +pid2=0;
> >> +
> >> +# not output debug info
> >> +no_debug=0
> >> +
> >> +usage()
> >> +{
> >> +	echo "usage of cgroup_fj_function.sh: "
> >> +	echo "  ./cgroup_fj_function.sh -subsystem -remount_use -noprefix_use -release_agent_para"
> >> +	echo "                          -subgroup_exist -attach_operation -remove_operation"
> >> +	echo "                          -notify_on_release -release_agent_echo"
> >> +	echo "    subsystem's usable number"
> >> +	echo "      1: debug"
> >> +	echo "      2: cpuset"
> >> +	echo "      3: ns"
> >> +	echo "      4: cpu"
> >> +	echo "      5: cpuacct"
> >> +	echo "      6: memory"
> >> +	echo "      7: all"
> >> +	echo "      8: (none)"
> >> +	echo "      9: debug,debug"
> >> +	echo "      10: (nonexistent subsystem), e.g. abc"
> >> +	echo "      11: freezer"
> >> +	echo "      11: devices"
> > 
> > Looks like this should be 12.
> 
> Yes, here should be 12. Sorry for it.
> The following small patch fixed it.
> 
> Signed-off-by: Shi Weihua <shiwh@cn.fujitsu.com>

Thanks again for this fix.

Regards--
Subrata

> ---
> diff -urpN ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh ltp-full-20090731/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh
> --- ltp-full-20090731.orig/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	2009-08-27 04:09:41.000000000 -0400
> +++ ltp-full-20090731/testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh	2009-08-27 04:11:07.000000000 -0400
> @@ -66,7 +66,7 @@ usage()
>  	echo "      9: debug,debug"
>  	echo "      10: (nonexistent subsystem), e.g. abc"
>  	echo "      11: freezer"
> -	echo "      11: devices"
> +	echo "      12: devices"
>  	echo "    remount_use's usable number"
>  	echo "      1: do not use remount in "-o"'s parameter"
>  	echo "      2: use it"
> 
> 
> > 
> > Why not just use the subsystem names both to iterate over and to print
> > out? Then it will be a little clearer what test has[n't] passed.
> > e.g.:
> > 
> > SUBSYSTEMS=( debug cpuset ns cpu cpuacct memory debug,debug freezer \
> > 		devices nonexistent none all )
> > 
> > Then when you're running the test cases or printing usage you could do:
> > 
> > for SUBSYS in "${SUBSYSTEMS[@]}" ; do
> > 	...
> > done
> > 
> > Sadly I didn't have a close enough look at all of the code to tell if
> > this is do-able. Is it? If you could similarly map the other numbers
> > it may be easier to read the output and the code.
> 
> Thanks for your advice. Basically, I agree.
> But using strings to instead of number will need one or more weeks, I will 
> do this improvement work base on August Release.
> 
> > 
> > Cheers,
> > 	-Matt Helsley
> > 
> > 
> > 
> 


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-08-27 10:20 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-26  0:04 [LTP] [PATCH] Add new testcases for cgroup Shi Weihua
2009-08-26  5:49 ` Subrata Modak
2009-08-26 15:28 ` Matt Helsley
2009-08-27  0:06   ` Shi Weihua
2009-08-27 10:20     ` Subrata Modak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox