From b564fca24652dad80946b1e690db37dd87c66dbe Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Tue, 20 Aug 2019 12:58:00 -0400 Subject: [PATCH] Rationalize some constants in usertests --- user/usertests.c | 149 ++++++++++++++++++++++++++--------------------- 1 file changed, 81 insertions(+), 68 deletions(-) diff --git a/user/usertests.c b/user/usertests.c index f74b88c..13e7cce 100644 --- a/user/usertests.c +++ b/user/usertests.c @@ -8,7 +8,9 @@ #include "kernel/memlayout.h" #include "kernel/riscv.h" -char buf[8192]; +#define BUFSZ (MAXOPBLOCKS+2)*BSIZE + +char buf[BUFSZ]; char name[3]; char *echoargv[] = { "echo", "ALL", "TESTS", "PASSED", 0 }; int stdout = 1; @@ -140,7 +142,8 @@ writetest(void) { int fd; int i; - + enum { N=100, SZ=10 }; + printf(stdout, "small file test\n"); fd = open("small", O_CREATE|O_RDWR); if(fd >= 0){ @@ -149,12 +152,12 @@ writetest(void) printf(stdout, "error: creat small failed!\n"); exit(); } - for(i = 0; i < 100; i++){ - if(write(fd, "aaaaaaaaaa", 10) != 10){ + for(i = 0; i < N; i++){ + if(write(fd, "aaaaaaaaaa", SZ) != SZ){ printf(stdout, "error: write aa %d new file failed\n", i); exit(); } - if(write(fd, "bbbbbbbbbb", 10) != 10){ + if(write(fd, "bbbbbbbbbb", SZ) != SZ){ printf(stdout, "error: write bb %d new file failed\n", i); exit(); } @@ -168,8 +171,8 @@ writetest(void) printf(stdout, "error: open small failed!\n"); exit(); } - i = read(fd, buf, 2000); - if(i == 2000){ + i = read(fd, buf, N*SZ*2); + if(i == N*SZ*2){ printf(stdout, "read succeeded ok\n"); } else { printf(stdout, "read failed\n"); @@ -199,7 +202,7 @@ writetest1(void) for(i = 0; i < MAXFILE; i++){ ((int*)buf)[0] = i; - if(write(fd, buf, 512) != 512){ + if(write(fd, buf, BSIZE) != BSIZE){ printf(stdout, "error: write big file failed\n", i); exit(); } @@ -215,14 +218,14 @@ writetest1(void) n = 0; for(;;){ - i = read(fd, buf, 512); + i = read(fd, buf, BSIZE); if(i == 0){ if(n == MAXFILE - 1){ printf(stdout, "read only %d blocks from big", n); exit(); } break; - } else if(i != 512){ + } else if(i != BSIZE){ printf(stdout, "read failed %d\n", i); exit(); } @@ -245,19 +248,20 @@ void createtest(void) { int i, fd; - + enum { N=52 }; + printf(stdout, "many creates, followed by unlink test\n"); name[0] = 'a'; name[2] = '\0'; - for(i = 0; i < 52; i++){ + for(i = 0; i < N; i++){ name[1] = '0' + i; fd = open(name, O_CREATE|O_RDWR); close(fd); } name[0] = 'a'; name[2] = '\0'; - for(i = 0; i < 52; i++){ + for(i = 0; i < N; i++){ name[1] = '0' + i; unlink(name); } @@ -307,7 +311,8 @@ pipe1(void) { int fds[2], pid; int seq, i, n, cc, total; - + enum { N=5, SZ=1033 }; + if(pipe(fds) != 0){ printf(1, "pipe() failed\n"); exit(); @@ -316,10 +321,10 @@ pipe1(void) seq = 0; if(pid == 0){ close(fds[0]); - for(n = 0; n < 5; n++){ - for(i = 0; i < 1033; i++) + for(n = 0; n < N; n++){ + for(i = 0; i < SZ; i++) buf[i] = seq++; - if(write(fds[1], buf, 1033) != 1033){ + if(write(fds[1], buf, SZ) != SZ){ printf(1, "pipe1 oops 1\n"); exit(); } @@ -341,7 +346,7 @@ pipe1(void) if(cc > sizeof(buf)) cc = sizeof(buf); } - if(total != 5 * 1033){ + if(total != N * SZ){ printf(1, "pipe1 oops 3 total %d\n", total); exit(); } @@ -512,10 +517,11 @@ void forkfork(void) { int ppid = getpid(); + enum { N=2 }; printf(1, "forkfork test\n"); - for(int i = 0; i < 2; i++){ + for(int i = 0; i < N; i++){ int pid = fork(); if(pid < 0){ printf(1, "fork failed"); @@ -538,7 +544,7 @@ forkfork(void) } } - for(int i = 0; i < 2; i++){ + for(int i = 0; i < N; i++){ wait(); } @@ -620,7 +626,8 @@ void sharedfd(void) { int fd, pid, i, n, nc, np; - char buf[10]; + enum { N = 1000, SZ=10}; + char buf[SZ]; printf(1, "sharedfd test\n"); @@ -632,7 +639,7 @@ sharedfd(void) } pid = fork(); memset(buf, pid==0?'c':'p', sizeof(buf)); - for(i = 0; i < 1000; i++){ + for(i = 0; i < N; i++){ if(write(fd, buf, sizeof(buf)) != sizeof(buf)){ printf(1, "fstests: write sharedfd failed\n"); break; @@ -659,7 +666,7 @@ sharedfd(void) } close(fd); unlink("sharedfd"); - if(nc == 10000 && np == 10000){ + if(nc == N*SZ && np == N*SZ){ printf(1, "sharedfd ok\n"); } else { printf(1, "sharedfd oops %d %d\n", nc, np); @@ -675,10 +682,11 @@ fourfiles(void) int fd, pid, i, j, n, total, pi; char *names[] = { "f0", "f1", "f2", "f3" }; char *fname; - + enum { N=12, NCHILD=4, SZ=500 }; + printf(1, "fourfiles test\n"); - for(pi = 0; pi < 4; pi++){ + for(pi = 0; pi < NCHILD; pi++){ fname = names[pi]; unlink(fname); @@ -695,9 +703,9 @@ fourfiles(void) exit(); } - memset(buf, '0'+pi, 512); - for(i = 0; i < 12; i++){ - if((n = write(fd, buf, 500)) != 500){ + memset(buf, '0'+pi, SZ); + for(i = 0; i < N; i++){ + if((n = write(fd, buf, SZ)) != SZ){ printf(1, "write failed %d\n", n); exit(); } @@ -706,11 +714,11 @@ fourfiles(void) } } - for(pi = 0; pi < 4; pi++){ + for(pi = 0; pi < NCHILD; pi++){ wait(); } - for(i = 0; i < 2; i++){ + for(i = 0; i < NCHILD; i++){ fname = names[i]; fd = open(fname, 0); total = 0; @@ -724,7 +732,7 @@ fourfiles(void) total += n; } close(fd); - if(total != 12*500){ + if(total != N*SZ){ printf(1, "wrong length %d\n", total); exit(); } @@ -811,6 +819,7 @@ createdelete(void) void unlinkread(void) { + enum { SZ = 5 }; int fd, fd1; printf(1, "unlinkread test\n"); @@ -819,7 +828,7 @@ unlinkread(void) printf(1, "create unlinkread failed\n"); exit(); } - write(fd, "hello", 5); + write(fd, "hello", SZ); close(fd); fd = open("unlinkread", O_RDWR); @@ -836,7 +845,7 @@ unlinkread(void) write(fd1, "yyy", 3); close(fd1); - if(read(fd, buf, sizeof(buf)) != 5){ + if(read(fd, buf, sizeof(buf)) != SZ){ printf(1, "unlinkread read failed"); exit(); } @@ -856,6 +865,7 @@ unlinkread(void) void linktest(void) { + enum { SZ = 5 }; int fd; printf(1, "linktest\n"); @@ -868,7 +878,7 @@ linktest(void) printf(1, "create lf1 failed\n"); exit(); } - if(write(fd, "hello", 5) != 5){ + if(write(fd, "hello", SZ) != SZ){ printf(1, "write lf1 failed\n"); exit(); } @@ -890,7 +900,7 @@ linktest(void) printf(1, "open lf2 failed\n"); exit(); } - if(read(fd, buf, sizeof(buf)) != 5){ + if(read(fd, buf, sizeof(buf)) != SZ){ printf(1, "read lf2 failed\n"); exit(); } @@ -919,18 +929,19 @@ linktest(void) void concreate(void) { + enum { N = 40 }; char file[3]; int i, pid, n, fd; - char fa[40]; + char fa[N]; struct { ushort inum; - char name[14]; + char name[DIRSIZ]; } de; printf(1, "concreate test\n"); file[0] = 'C'; file[2] = '\0'; - for(i = 0; i < 40; i++){ + for(i = 0; i < N; i++){ file[1] = '0' + i; unlink(file); pid = fork(); @@ -974,12 +985,12 @@ concreate(void) } close(fd); - if(n != 40){ + if(n != N){ printf(1, "concreate not enough files in directory listing\n"); exit(); } - for(i = 0; i < 40; i++){ + for(i = 0; i < N; i++){ file[1] = '0' + i; pid = fork(); if(pid < 0){ @@ -1047,6 +1058,7 @@ linkunlink() void bigdir(void) { + enum { N = 500 }; int i, fd; char name[10]; @@ -1060,7 +1072,7 @@ bigdir(void) } close(fd); - for(i = 0; i < 500; i++){ + for(i = 0; i < N; i++){ name[0] = 'x'; name[1] = '0' + (i / 64); name[2] = '0' + (i % 64); @@ -1072,7 +1084,7 @@ bigdir(void) } unlink("bd"); - for(i = 0; i < 500; i++){ + for(i = 0; i < N; i++){ name[0] = 'x'; name[1] = '0' + (i / 64); name[2] = '0' + (i % 64); @@ -1278,7 +1290,7 @@ bigwrite(void) printf(1, "bigwrite test\n"); unlink("bigwrite"); - for(sz = 499; sz < 12*512; sz += 471){ + for(sz = 499; sz < (MAXOPBLOCKS+2)*BSIZE; sz += 471){ fd = open("bigwrite", O_CREATE | O_RDWR); if(fd < 0){ printf(1, "cannot create bigwrite\n"); @@ -1302,6 +1314,7 @@ bigwrite(void) void bigfile(void) { + enum { N = 20, SZ=600 }; int fd, i, total, cc; printf(1, "bigfile test\n"); @@ -1312,9 +1325,9 @@ bigfile(void) printf(1, "cannot create bigfile"); exit(); } - for(i = 0; i < 20; i++){ - memset(buf, i, 600); - if(write(fd, buf, 600) != 600){ + for(i = 0; i < N; i++){ + memset(buf, i, SZ); + if(write(fd, buf, SZ) != SZ){ printf(1, "write bigfile failed\n"); exit(); } @@ -1328,25 +1341,25 @@ bigfile(void) } total = 0; for(i = 0; ; i++){ - cc = read(fd, buf, 300); + cc = read(fd, buf, SZ/2); if(cc < 0){ printf(1, "read bigfile failed\n"); exit(); } if(cc == 0) break; - if(cc != 300){ + if(cc != SZ/2){ printf(1, "short read bigfile\n"); exit(); } - if(buf[0] != i/2 || buf[299] != i/2){ + if(buf[0] != i/2 || buf[SZ/2-1] != i/2){ printf(1, "read bigfile wrong data\n"); exit(); } total += cc; } close(fd); - if(total != 20*600){ + if(total != N*SZ){ printf(1, "read bigfile wrong total\n"); exit(); } @@ -1502,8 +1515,7 @@ iref(void) printf(1, "empty file name\n"); - // the 50 is NINODE - for(i = 0; i < 50 + 1; i++){ + for(i = 0; i < NINODE + 1; i++){ if(mkdir("irefd") != 0){ printf(1, "mkdir irefd failed\n"); exit(); @@ -1534,11 +1546,12 @@ iref(void) void forktest(void) { + enum{ N = 1000 }; int n, pid; printf(1, "fork test\n"); - for(n=0; n<1000; n++){ + for(n=0; n) returned %p\n", a); exit(); @@ -1630,21 +1643,21 @@ sbrktest(void) // can one de-allocate? a = sbrk(0); - c = sbrk(-4096); + c = sbrk(-PGSIZE); if(c == (char*)0xffffffffffffffffL){ printf(stdout, "sbrk could not deallocate\n"); exit(); } c = sbrk(0); - if(c != a - 4096){ + if(c != a - PGSIZE){ printf(stdout, "sbrk deallocation produced wrong address, a %x c %x\n", a, c); exit(); } // can one re-allocate that page? a = sbrk(0); - c = sbrk(4096); - if(c != a || sbrk(0) != a + 4096){ + c = sbrk(PGSIZE); + if(c != a || sbrk(0) != a + PGSIZE){ printf(stdout, "sbrk re-allocation failed, a %x c %x\n", a, c); exit(); } @@ -1697,7 +1710,7 @@ sbrktest(void) // if those failed allocations freed up the pages they did allocate, // we'll be able to allocate here - c = sbrk(4096); + c = sbrk(PGSIZE); for(i = 0; i < sizeof(pids)/sizeof(pids[0]); i++){ if(pids[i] == -1) continue; @@ -1723,7 +1736,7 @@ sbrktest(void) a = sbrk(0); sbrk(10*BIG); int n = 0; - for (i = 0; i < 10*BIG; i += 4096) { + for (i = 0; i < 10*BIG; i += PGSIZE) { n += *(a+i); } printf(stdout, "allocate a lot of memory succeeded %d\n", n); @@ -1733,7 +1746,7 @@ sbrktest(void) wait(); // test reads from allocated memory - a = sbrk(4096); + a = sbrk(PGSIZE); fd = open("sbrk", O_CREATE|O_WRONLY); unlink("sbrk"); if(fd < 0) { @@ -1747,7 +1760,7 @@ sbrktest(void) close(fd); // test writes to allocated memory - a = sbrk(4096); + a = sbrk(PGSIZE); if(pipe((int *) a) != 0){ printf(1, "pipe() failed\n"); exit(); @@ -1782,7 +1795,7 @@ validatetest(void) printf(stdout, "validate test\n"); hi = 1100*1024; - for(p = 0; p <= (uint)hi; p += 4096){ + for(p = 0; p <= (uint)hi; p += PGSIZE){ if((pid = fork()) == 0){ // try to crash the kernel by passing in a badly placed integer validateint((int*)p); @@ -1882,8 +1895,8 @@ fsfull() } int total = 0; while(1){ - int cc = write(fd, buf, 512); - if(cc < 512) + int cc = write(fd, buf, BSIZE); + if(cc < BSIZE) break; total += cc; fsblocks++; @@ -1942,7 +1955,7 @@ stacktest() pid = fork(); if(pid == 0) { char *sp = (char *) r_sp(); - sp -= 4096; + sp -= PGSIZE; // the *sp should cause a trap. printf(1, "stacktest: read below stack %p\n", *sp); printf(1, "stacktest: test FAILED\n");