On 2011-4-4, at 0:47, Bian Naimeng <[email protected]> wrote:

> There are some problem in ksm tests.
> 
> 1. We should break the test when checking is failure.
No, this is not the intention. The design here is to run all tests to check for 
all stats to give a full picture even if the a single failure has been 
observed. This type of the failures do not prevent the rest of the tests from 
running, so there is no need to stop the tests now which also give more insight 
to track down root causes.
> 2. The condition "new_num < old_num * 3" seems uncomfortable, i think
>   it should be "new_num < old_num + 3"
I don't understand. What error did you see from the testing output?
> 3. After stopping ksm(echo 2 > /sys/kernel/mm/ksm/run), the ksmd
>   will stop scaning pages, so looping in "new_num < old_num * 3"
>   is wrong.
Ditto.

CAI Qian
> 
> Signed-off-by: Bian Naimeng <[email protected]>
> 
> ---
> testcases/kernel/mem/include/mem.h |    2 +-
> testcases/kernel/mem/lib/mem.c     |   19 ++++++++++---------
> 2 files changed, 11 insertions(+), 10 deletions(-)
> 
> diff --git a/testcases/kernel/mem/include/mem.h 
> b/testcases/kernel/mem/include/mem.h
> index 778d403..b640a63 100644
> --- a/testcases/kernel/mem/include/mem.h
> +++ b/testcases/kernel/mem/include/mem.h
> @@ -42,7 +42,7 @@ void check(char *path, long int value);
> void verify(char value, int proc, int start, int end, int start2, int end2);
> void group_check(int run, int pages_shared, int pages_sharing,
>        int pages_volatile, int pages_unshared, int sleep_millisecs,
> -        int pages_to_scan);
> +        int pages_to_scan, int scans);
> void create_same_memory(int size, int num, int unit);
> void check_ksm_options(int *size, int *num, int *unit);
> void write_cpusets(void);
> diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c
> index 12e61e9..db1a7dd 100644
> --- a/testcases/kernel/mem/lib/mem.c
> +++ b/testcases/kernel/mem/lib/mem.c
> @@ -284,7 +284,7 @@ void check(char *path, long int value)
> 
>    tst_resm(TINFO, "%s is %ld.", path, atol(buf));
>    if (atol(buf) != value)
> -        tst_resm(TFAIL, "%s is not %ld.", path, value);
> +        tst_brkm(TFAIL, tst_exit, "%s is not %ld.", path, value);
> }
> 
> void verify(char value, int proc, int start, int end, int start2, int end2)
> @@ -312,7 +312,8 @@ void verify(char value, int proc, int start, int end, int 
> start2, int end2)
> 
> void group_check(int run, int pages_shared, int pages_sharing,
>        int pages_volatile, int pages_unshared,
> -        int sleep_millisecs, int pages_to_scan)
> +        int sleep_millisecs, int pages_to_scan,
> +        int scans)
> {
>    int fd;
>    char buf[BUFSIZ];
> @@ -332,7 +333,7 @@ void group_check(int run, int pages_shared, int 
> pages_sharing,
>    old_num = new_num = atoi(buf);
>    if (lseek(fd, 0, SEEK_SET) == -1)
>        tst_brkm(TBROK|TERRNO, cleanup, "lseek");
> -    while (new_num < old_num * 3) {
> +    while (new_num < old_num + scans) {
>        sleep(1);
>        if (read(fd, buf, BUFSIZ) < 0)
>            tst_brkm(TBROK|TERRNO, cleanup, "read");
> @@ -587,7 +588,7 @@ void create_same_memory(int size, int num, int unit)
>        if (kill(child[k], SIGCONT) == -1)
>            tst_brkm(TBROK|TERRNO, cleanup, "kill child[%d]", k);
>    }
> -    group_check(1, 2, size * num * 256 - 2, 0, 0, 0, size * 256 * num);
> +    group_check(1, 2, size * num * 256 - 2, 0, 0, 0, size * 256 * num, 3);
> 
>    tst_resm(TINFO, "wait for child 1 to stop.");
>    if (waitpid(child[1], &status, WUNTRACED) == -1)
> @@ -599,7 +600,7 @@ void create_same_memory(int size, int num, int unit)
>    tst_resm(TINFO, "resume child 1.");
>    if (kill(child[1], SIGCONT) == -1)
>        tst_brkm(TBROK|TERRNO, cleanup, "kill");
> -    group_check(1, 3, size * num * 256 - 3, 0, 0, 0, size * 256 * num);
> +    group_check(1, 3, size * num * 256 - 3, 0, 0, 0, size * 256 * num, 3);
> 
>    tst_resm(TINFO, "wait for child 1 to stop.");
>    if (waitpid(child[1], &status, WUNTRACED) == -1)
> @@ -613,7 +614,7 @@ void create_same_memory(int size, int num, int unit)
>        if (kill(child[k], SIGCONT) == -1)
>            tst_brkm(TBROK|TERRNO, cleanup, "kill child[%d]", k);
>    }
> -    group_check(1, 1, size * num * 256 - 1, 0, 0, 0, size * 256 * num);
> +    group_check(1, 1, size * num * 256 - 1, 0, 0, 0, size * 256 * num, 3);
> 
>    tst_resm(TINFO, "wait for all children to stop.");
>    for (k = 0; k < num; k++) {
> @@ -627,7 +628,7 @@ void create_same_memory(int size, int num, int unit)
>    tst_resm(TINFO, "resume child 1.");
>    if (kill(child[1], SIGCONT) == -1)
>        tst_brkm(TBROK|TERRNO, cleanup, "kill");
> -    group_check(1, 1, size * num * 256 - 2, 0, 1, 0, size * 256 * num);
> +    group_check(1, 1, size * num * 256 - 2, 0, 1, 0, size * 256 * num, 3);
> 
>    tst_resm(TINFO, "wait for child 1 to stop.");
>    if (waitpid(child[1], &status, WUNTRACED) == -1)
> @@ -647,7 +648,7 @@ void create_same_memory(int size, int num, int unit)
>        tst_brkm(TBROK|TERRNO, cleanup, "open");
>    if (write(fd, "2", 1) != 1)
>        tst_brkm(TBROK|TERRNO, cleanup, "write");
> -    group_check(2, 0, 0, 0, 0, 0, size * 256 * num);
> +    group_check(2, 0, 0, 0, 0, 0, size * 256 * num, 0);
> 
>    tst_resm(TINFO, "wait for all children to stop.");
>    for (k = 0; k < num; k++) {
> @@ -668,7 +669,7 @@ void create_same_memory(int size, int num, int unit)
>    if (write(fd, "0", 1) != 1)
>        tst_brkm(TBROK|TERRNO, cleanup, "write");
>    close(fd);
> -    group_check(0, 0, 0, 0, 0, 0, size * 256 * num);
> +    group_check(0, 0, 0, 0, 0, 0, size * 256 * num, 0);
>    while (waitpid(-1, &status, WUNTRACED | WCONTINUED) > 0)
>        if (WEXITSTATUS(status) != 0)
>            tst_resm(TFAIL, "child exit status is %d",
> -- 
> 1.7.1
> 
> 

------------------------------------------------------------------------------
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to