summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
authorFrans Kaashoek <[email protected]>2019-08-20 12:58:00 -0400
committerFrans Kaashoek <[email protected]>2019-08-20 12:58:00 -0400
commitb564fca24652dad80946b1e690db37dd87c66dbe (patch)
tree88f384e0451bebee208679b830cce73d0bd96eaf /user
parentd98ddadd79ae45dec44f191986bf59136dd15e88 (diff)
downloadxv6-labs-b564fca24652dad80946b1e690db37dd87c66dbe.tar.gz
xv6-labs-b564fca24652dad80946b1e690db37dd87c66dbe.tar.bz2
xv6-labs-b564fca24652dad80946b1e690db37dd87c66dbe.zip
Rationalize some constants in usertests
Diffstat (limited to 'user')
-rw-r--r--user/usertests.c149
1 files 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<N; n++){
pid = fork();
if(pid < 0)
break;
@@ -1551,7 +1564,7 @@ forktest(void)
exit();
}
- if(n == 1000){
+ if(n == N){
printf(1, "fork claimed to work 1000 times!\n");
exit();
}
@@ -1574,18 +1587,18 @@ forktest(void)
void
sbrktest(void)
{
+ enum { BIG=100*1024*1024, TOOMUCH=1024*1024*1024};
int i, fds[2], pids[10], pid, ppid;
char *c, *oldbrk, scratch, *a, *b, *lastaddr, *p;
uint64 amt;
int fd;
int n;
- #define BIG (100*1024*1024)
printf(stdout, "sbrk test\n");
oldbrk = sbrk(0);
// does sbrk() return the expected failure value?
- a = sbrk(1024*1024*1024);
+ a = sbrk(TOOMUCH);
if(a != (char*)0xffffffffffffffffL){
printf(stdout, "sbrk(<toomuch>) 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");