Re: [PATCH] selftests/zram: Adding zram tests

Shuah Khan
2015-08-13T19:39:56Z

On 08/13/2015 01:21 PM, Naresh Kamboju wrote:
> Hi Shuah Khan,
>
> On 23 July 2015 at 20:33, Shuah Khan <shuahkh@osg.samsung.com> wrote:
>> On 07/22/2015 06:00 PM, Tyler Baker wrote:
>>> Hi Naresh,
>>>
>>> On 7 July 2015 at 05:03, <naresh.kamboju@linaro.org> wrote:
>>>> From: Naresh Kamboju <naresh.kamboju@linaro.org>
>>>>
>>>> zram_lib.sh: create library with initialization/cleanup functions
>>>> zram01.sh: creates general purpose ram disks with different filesystems
>>>> zram02.sh: creates block device for swap
>>>> README: ZRAM introduction and Kconfig required.
>>>> Makefile: To run zram tests
>>>
>>> (./zram01.sh && echo "selftests: zram01.sh [PASS]") || echo
>>> "selftests: zram01.sh [FAIL]"
>>> (./zram02.sh && echo "selftests: zram02.sh [PASS]") || echo
>>> "selftests: zram02.sh [FAIL]"
>>> (./zram_lib.sh && echo "selftests: zram_lib.sh [PASS]") || echo
>>> "selftests: zram_lib.sh [FAIL]"
>>>
>>> Above is the output from the run_kselftests.sh. Do we want to run
>>> zram_lib.sh as a test case as it just a library?
>>
>> Please make sure test doesn't fail when zram isn't configured.
>> i.e it should exit gracefully with a message saying zram isn't
>> configured. Please see below:
>
> I agree with Shuah Khan comments.
> run_kselftests.sh is design to print results in PASS or FAIL.
> We need a way in run_kselftests.sh to print NO_CONFIG when it is not a
> real failure instead it is a Kconfig not enabled.
>
>>

snip

>>>> +zram_load()
>>>> +{
>>>> + # check zram module exists
>>>> + MODULE_PATH=/lib/modules/`uname -r`/kernel/drivers/zram/zram.ko
>>>> + if [ -f $MODULE_PATH ]; then
>>>> + MODULE=1
>>>> + echo "create '$dev_num' zram device(s)"
>>>> + modprobe zram num_devices=$dev_num || \
>>>> + echo "failed to insert zram module"
>>>> +
>>>> + dev_num_created=$(ls /dev/zram* | wc -w)
>>>> +
>>>> + if [ "$dev_num_created" -ne "$dev_num" ]; then
>>>> + echo "unexpected num of devices: $dev_num_created"
>>>> + ERR_CODE=-1
>>>> + else
>>>> + echo "zram load module successful"
>>>> + fi
>>>> + elif [ -b /dev/zram0 ]; then
>>>> + echo "/dev/zram0 device file found: OK"
>>>> + else
>>>> + echo "ERROR: No zram.ko module or no /dev/zram0 device found"
>>>> + echo "$TCID : CONFIG_ZRAM is not set"
>>>> + exit 1
>>>> + fi
>>
>> In this case, when zram.ko module or no /dev/zram0 device found,
>> test should exit gracefully.
>
> Here with this case, when test run manually it prints "CONFIG_ZRAM is
> not set" but with run_kselftests.sh script file it gonna FAIL with
> non-zero exit code. but it is not a real failure.
> How to handle this case ?
>

Right. One way to do this is write wrapper script zram.sh that does
these checks first and then invokes the zram01.sh and zram02.sh
This way you can do the pre-reqs checks first and then run the tests.

Please take a look at tests that do this. e.g: net/test_bpf.sh

thanks,
-- Shuah

--
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
shuahkh@osg.samsung.com | (970) 217-8978