Home | History | Annotate | Download | only in functional
      1 #!/bin/sh
      2 
      3 ################################################################################
      4 ##                                                                            ##
      5 ## Copyright (c) 2009 FUJITSU LIMITED                                         ##
      6 ##                                                                            ##
      7 ## This program is free software;  you can redistribute it and#or modify      ##
      8 ## it under the terms of the GNU General Public License as published by       ##
      9 ## the Free Software Foundation; either version 2 of the License, or          ##
     10 ## (at your option) any later version.                                        ##
     11 ##                                                                            ##
     12 ## This program is distributed in the hope that it will be useful, but        ##
     13 ## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
     14 ## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
     15 ## for more details.                                                          ##
     16 ##                                                                            ##
     17 ## You should have received a copy of the GNU General Public License          ##
     18 ## along with this program;  if not, write to the Free Software Foundation,   ##
     19 ## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA           ##
     20 ##                                                                            ##
     21 ## Author: Li Zefan <lizf (at] cn.fujitsu.com>                                     ##
     22 ## Restructure for LTP: Shi Weihua <shiwh (at] cn.fujitsu.com>                     ##
     23 ## Added memcg enable/disable functinality: Rishikesh K Rajak		      ##
     24 ##						<risrajak (at] linux.vnet.ibm.com  ##
     25 ##                                                                            ##
     26 ################################################################################
     27 
     28 TCID="memcg_limit_in_bytes"
     29 TST_TOTAL=15
     30 
     31 . memcg_lib.sh
     32 
     33 # Test mmap(locked) + alloc_mem > limit_in_bytes
     34 testcase_1()
     35 {
     36 	test_proc_kill $PAGESIZE "--mmap-lock1" $((PAGESIZE*2)) 0
     37 }
     38 
     39 testcase_2()
     40 {
     41 	test_proc_kill $PAGESIZE "--mmap-lock2" $((PAGESIZE*2)) 0
     42 }
     43 
     44 # Test swapoff + alloc_mem > limit_in_bytes
     45 testcase_3()
     46 {
     47 	swapoff -a
     48 	test_proc_kill $PAGESIZE "--mmap-anon" $((PAGESIZE*2)) 0
     49 	swapon -a
     50 }
     51 
     52 testcase_4()
     53 {
     54 	swapoff -a
     55 	test_proc_kill $PAGESIZE "--mmap-file" $((PAGESIZE*2)) 0
     56 	swapon -a
     57 }
     58 
     59 testcase_5()
     60 {
     61 	swapoff -a
     62 	test_proc_kill $PAGESIZE "--shm -k 18" $((PAGESIZE*2)) 0
     63 	swapon -a
     64 }
     65 
     66 # Test limit_in_bytes == 0
     67 testcase_6()
     68 {
     69 	test_proc_kill 0 "--mmap-anon" $PAGESIZE 0
     70 }
     71 
     72 testcase_7()
     73 {
     74 	test_proc_kill 0 "--mmap-file" $PAGESIZE 0
     75 }
     76 
     77 testcase_8()
     78 {
     79 	test_proc_kill 0 "--shm -k 21" $PAGESIZE 0
     80 }
     81 
     82 # Test limit_in_bytes will be aligned to PAGESIZE
     83 testcase_9()
     84 {
     85 	test_limit_in_bytes $((PAGESIZE-1)) 0
     86 }
     87 
     88 testcase_10()
     89 {
     90 	test_limit_in_bytes $((PAGESIZE+1)) 0
     91 }
     92 
     93 testcase_11()
     94 {
     95 	test_limit_in_bytes 1 0
     96 }
     97 
     98 # Test invalid memory.limit_in_bytes
     99 testcase_12()
    100 {
    101 	if tst_kvcmp -lt "2.6.31"; then
    102 		EXPECT_FAIL echo -1 \> memory.limit_in_bytes
    103 	else
    104 		EXPECT_PASS echo -1 \> memory.limit_in_bytes
    105 	fi
    106 }
    107 
    108 testcase_13()
    109 {
    110 	EXPECT_FAIL echo 1.0 \> memory.limit_in_bytes
    111 }
    112 
    113 testcase_14()
    114 {
    115 	EXPECT_FAIL echo 1xx \> memory.limit_in_bytes
    116 }
    117 
    118 testcase_15()
    119 {
    120 	EXPECT_FAIL echo xx \> memory.limit_in_bytes
    121 }
    122 
    123 shmmax_setup
    124 LOCAL_CLEANUP=shmmax_cleanup
    125 run_tests
    126 tst_exit
    127