Hi,

Sorry for be late, I have written v2 version according to all your suggestions, 
thanks.

Regards,
Xiaoguang Wang
On 05/12/2015 07:37 PM, Cyril Hrubis wrote:
> Hi!
>> --- a/runtest/kernel_misc
>> +++ b/runtest/kernel_misc
>> @@ -11,3 +11,4 @@ rcu_torture rcu_torture.sh
>>  lock_torture lock_torture.sh
>>  zram01 zram01.sh
>>  zram02 zram02.sh
>> +zram03 zram03
>> diff --git a/testcases/kernel/device-drivers/zram/.gitignore 
>> b/testcases/kernel/device-drivers/zram/.gitignore
>> new file mode 100644
>> index 0000000..7d54f60
>> --- /dev/null
>> +++ b/testcases/kernel/device-drivers/zram/.gitignore
>> @@ -0,0 +1 @@
>> +/zram03
>> diff --git a/testcases/kernel/device-drivers/zram/Makefile 
>> b/testcases/kernel/device-drivers/zram/Makefile
>> index 0d73f66..5077cf4 100644
>> --- a/testcases/kernel/device-drivers/zram/Makefile
>> +++ b/testcases/kernel/device-drivers/zram/Makefile
>> @@ -17,6 +17,6 @@
>>  top_srcdir  ?= ../../../..
>>  include $(top_srcdir)/include/mk/testcases.mk
>>  
>> -INSTALL_TARGETS             := *.sh
>> +INSTALL_TARGETS             := *.sh zram03
> 
> Hmm, shouldn't these two changes be rather part of the previous patch?
> 
>>  include $(top_srcdir)/include/mk/generic_leaf_target.mk
>> diff --git a/testcases/kernel/device-drivers/zram/zram03.c 
>> b/testcases/kernel/device-drivers/zram/zram03.c
>> index a5abb38..8448234 100644
>> --- a/testcases/kernel/device-drivers/zram/zram03.c
>> +++ b/testcases/kernel/device-drivers/zram/zram03.c
>> @@ -23,6 +23,7 @@
>>   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
>>   * 02110-1301, USA.
>>   */
>> +
>>  #include <sys/types.h>
>>  #include <sys/stat.h>
>>  #include <sys/mman.h>
>> @@ -31,7 +32,9 @@
>>  #include <stdio.h>
>>  #include <string.h>
>>  #include <unistd.h>
>> +
>>  #include "test.h"
>> +#include "safe_macros.h"
>>  
>>  char *TCID = "zram01";
>>  int TST_TOTAL = 1;
>> @@ -81,15 +84,10 @@ static void set_disksize(void)
>>      char size[BUFSIZ];
>>  
>>      tst_resm(TINFO, "create a zram device with %ld bytes in size.", SIZE);
>> -    fd = open(PATH_ZRAM "/disksize", O_WRONLY);
>> -    if (fd == -1)
>> -            tst_brkm(TBROK | TERRNO, cleanup, "open %s",
>> -                     PATH_ZRAM "/disksize");
>> +    fd = SAFE_OPEN(cleanup, PATH_ZRAM "/disksize", O_WRONLY);
>>      sprintf(size, "%ld", SIZE);
>> -    if (write(fd, size, strlen(size)) != strlen(size))
>> -            tst_brkm(TBROK | TERRNO, cleanup, "write %s to %s", size,
>> -                     PATH_ZRAM "/disksize");
>> -    close(fd);
>> +    SAFE_WRITE(cleanup, 1, fd, size, strlen(size));
>> +    SAFE_CLOSE(cleanup, fd);
> 
> What about:
> 
> SAFE_FILE_PRINTF(cleanup, PATH_ZRAM "/disksize", "%ld", SIZE);
>>  }
>>  
>>  static void write_device(void)
>> @@ -97,56 +95,48 @@ static void write_device(void)
>>      int fd;
>>      char *s;
>>  
>> -    tst_resm(TINFO, "map it into memory.");
>> -    fd = open(DEVICE, O_RDWR);
>> -    if (fd == -1)
>> -            tst_brkm(TBROK | TERRNO, cleanup, "open %s", DEVICE);
>> -    s = mmap(NULL, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
>> -    if (s == MAP_FAILED)
>> -            tst_brkm(TBROK | TERRNO, cleanup, "mmap");
>> +    tst_resm(TINFO, "map this zram device into memory.");
>> +    fd = SAFE_OPEN(cleanup, DEVICE, O_RDWR);
>> +    s = SAFE_MMAP(cleanup, NULL, SIZE, PROT_READ | PROT_WRITE,
>> +                  MAP_SHARED, fd, 0);
>>  
>>      tst_resm(TINFO, "write all the memory.");
>>      memset(s, 'a', SIZE - 1);
>>      s[SIZE - 1] = '\0';
>>  
>> -    if (munmap(s, SIZE) == -1)
>> -            tst_brkm(TBROK | TERRNO, cleanup, "munmap");
>> -
>> -    close(fd);
>> +    SAFE_MUNMAP(cleanup, s, SIZE);
>> +    SAFE_CLOSE(cleanup, fd);
>>  }
>>  
>>  static void verify_device(void)
>>  {
>>      int fd;
>> -    long i, fail;
>> +    long i = 0, fail = 0;
>>      char *s;
>>  
>>      tst_resm(TINFO, "verify contents from device.");
>> -    fd = open(DEVICE, O_RDONLY);
>> -    if (fd == -1)
>> -            tst_brkm(TBROK | TERRNO, cleanup, "open %s", DEVICE);
>> -    s = mmap(NULL, SIZE, PROT_READ, MAP_PRIVATE, fd, 0);
>> -    if (s == MAP_FAILED)
>> -            tst_brkm(TBROK | TERRNO, cleanup, "2nd mmap");
>> -
>> -    i = 0;
>> -    fail = 0;
>> +    fd = SAFE_OPEN(cleanup, DEVICE, O_RDONLY);
>> +    s = SAFE_MMAP(cleanup, NULL, SIZE, PROT_READ, MAP_PRIVATE, fd, 0);
>> +
>>      while (s[i] && i < SIZE - 1) {
>>              if (s[i] != 'a')
>>                      fail++;
>>              i++;
>>      }
>> -    if (i != SIZE - 1)
>> +    if (i != SIZE - 1) {
>>              tst_resm(TFAIL, "expect size: %ld, actual size: %ld.",
>>                       SIZE - 1, i);
>> -    else if (s[i] != '\0')
>> +    } else if (s[i] != '\0') {
>>              tst_resm(TFAIL, "zram device seems not null terminated");
>> -    if (fail)
>> +    } else if (fail) {
>>              tst_resm(TFAIL, "%ld failed bytes found.", fail);
>> -    if (munmap(s, SIZE) == -1)
>> -            tst_brkm(TBROK | TERRNO, cleanup, "2nd munmap");
>> +    } else {
>> +            tst_resm(TPASS, "data read from zram device is consistent "
>> +                     "with those are written");
>> +    }
>>  
>> -    close(fd);
>> +    SAFE_MUNMAP(cleanup, s, SIZE);
>> +    SAFE_CLOSE(cleanup, fd);
>>  }
>>  
>>  static void reset(void)
>> @@ -154,14 +144,9 @@ static void reset(void)
>>      int fd;
>>  
>>      tst_resm(TINFO, "reset it.");
>> -    fd = open(PATH_ZRAM "/reset", O_WRONLY);
>> -    if (fd == -1)
>> -            tst_brkm(TBROK | TERRNO, cleanup, "open %s",
>> -                     PATH_ZRAM "/reset");
>> -    if (write(fd, "1", 1) != 1)
>> -            tst_brkm(TBROK | TERRNO, cleanup, "write 1 to %s",
>> -                     PATH_ZRAM "/reset");
>> -    close(fd);
>> +    fd = SAFE_OPEN(cleanup, PATH_ZRAM "/reset", O_WRONLY);
>> +    SAFE_WRITE(cleanup, 1, fd, "1", 1);
>> +    SAFE_CLOSE(cleanup, fd);
> 
> 
> SAFE_FILE_PRINTF() here as well.
> 
>>  static void setup(void)
>> @@ -171,12 +156,16 @@ static void setup(void)
>>      tst_require_root(NULL);
>>  
>>  retry:
>> -    if (access(PATH_ZRAM, R_OK | W_OK | X_OK) == -1) {
>> +    if (access(PATH_ZRAM, F_OK) == -1) {
>>              if (errno == ENOENT) {
>> -                    if (retried)
>> +                    if (retried) {
>>                              tst_brkm(TCONF, NULL,
>>                                       "system has no zram device.");
>> -                    system("modprobe zram");
>> +                    }
>> +                    if (system("modprobe zram") == -1) {
>> +                            tst_brkm(TBROK | TERRNO, cleanup,
>> +                                     "system(modprobe zram) failed");
>> +                    }
>>                      modprobe = 1;
>>                      retried = 1;
>>                      goto retry;
>> @@ -190,26 +179,17 @@ retry:
>>  
>>  static void cleanup(void)
>>  {
>> -    if (modprobe == 1)
>> -            system("rmmod zram");
>> +    if (modprobe == 1 && system("rmmod zram") == -1)
>> +            tst_resm(TWARN | TERRNO, "system(rmmod zram) failed");
>>  }
>>  
>>  static void print(char *string)
>>  {
>> -    FILE *fp;
>> -    char buf[BUFSIZ], value[BUFSIZ];
>> -
>> -    sprintf(buf, "%s/%s", PATH_ZRAM, string);
>> -    fp = fopen(buf, "r");
>> -    if (fp == NULL)
>> -            tst_brkm(TBROK | TERRNO, cleanup, "fopen %s", buf);
>> -
>> -    if (fgets(value, BUFSIZ, fp) == NULL)
>> -            tst_brkm(TBROK | TERRNO, cleanup, "fgets %s", buf);
>> -    value[strlen(value) - 1] = '\0';
>> -    fclose(fp);
>> +    char filename[BUFSIZ], value[BUFSIZ];
>>  
>> -    tst_resm(TINFO, "%s is %s", buf, value);
>> +    sprintf(filename, "%s/%s", PATH_ZRAM, string);
>> +    SAFE_FILE_SCANF(cleanup, filename, "%s", value);
>> +    tst_resm(TINFO, "%s is %s", filename, value);
>>  }
> 


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to