Automation testing tools.
This commit is contained in:
@@ -10,8 +10,8 @@ SUBDIRS=add argtest badcall bigexec bigfile bigfork bigseek bloat conman \
|
||||
filetest forkbomb forktest frack guzzle hash hog huge kitchen \
|
||||
malloctest matmult multiexec palin parallelvm poisondisk psort \
|
||||
quinthuge quintmat quintsort randcall redirect rmdirtest rmtest \
|
||||
sbrktest schedpong sink sort sparsefile sty tail tictac triplehuge \
|
||||
triplemat triplesort usemtest zero
|
||||
sbrktest schedpong sink sort sparsefile spinner sty tail tictac \
|
||||
triplehuge triplemat triplesort usemtest waiter zero
|
||||
|
||||
# But not:
|
||||
# userthreads (no support in kernel API in base system)
|
||||
|
11
userland/testbin/spinner/Makefile
Normal file
11
userland/testbin/spinner/Makefile
Normal file
@@ -0,0 +1,11 @@
|
||||
# Makefile for spinner
|
||||
|
||||
TOP=../../..
|
||||
.include "$(TOP)/mk/os161.config.mk"
|
||||
|
||||
PROG=spinner
|
||||
SRCS=spinner.c
|
||||
BINDIR=/testbin
|
||||
|
||||
.include "$(TOP)/mk/os161.prog.mk"
|
||||
|
47
userland/testbin/spinner/spinner.c
Normal file
47
userland/testbin/spinner/spinner.c
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* spinner.c
|
||||
*
|
||||
* Spins as hard as it can, forking multiple processes as needed. Intended to
|
||||
* test our ability to detect stuck processes in userspace.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <err.h>
|
||||
|
||||
static
|
||||
void
|
||||
spin(void)
|
||||
{
|
||||
volatile int i;
|
||||
|
||||
for (i=0; i <= 1000; i++) {
|
||||
if (i == 1000) {
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int i, count, pid;
|
||||
|
||||
if (argc != 2) {
|
||||
errx(1, "Usage: spinner <count>");
|
||||
}
|
||||
count = atoi(argv[1]);
|
||||
|
||||
for (i = 1; i < count; i++) {
|
||||
pid = fork();
|
||||
if (pid != 0) {
|
||||
spin();
|
||||
}
|
||||
}
|
||||
spin();
|
||||
errx(2, "spinner: spin returned");
|
||||
|
||||
// 09 Jan 2015 : GWA : Shouldn't get here.
|
||||
return 0;
|
||||
}
|
11
userland/testbin/waiter/Makefile
Normal file
11
userland/testbin/waiter/Makefile
Normal file
@@ -0,0 +1,11 @@
|
||||
# Makefile for waiter
|
||||
|
||||
TOP=../../..
|
||||
.include "$(TOP)/mk/os161.config.mk"
|
||||
|
||||
PROG=waiter
|
||||
SRCS=waiter.c
|
||||
BINDIR=/testbin
|
||||
|
||||
.include "$(TOP)/mk/os161.prog.mk"
|
||||
|
29
userland/testbin/waiter/waiter.c
Normal file
29
userland/testbin/waiter/waiter.c
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* waiter.c
|
||||
*
|
||||
* Just sits there without doing anything. We use the read system call just to
|
||||
* provide a way to wait. Intended to test our ability to detect stuck
|
||||
* processes in userspace.
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <err.h>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
char ch=0;
|
||||
int len;
|
||||
|
||||
while (ch!='q') {
|
||||
len = read(STDIN_FILENO, &ch, 1);
|
||||
if (len < 0) {
|
||||
err(1, "stdin: read");
|
||||
}
|
||||
if (len==0) {
|
||||
/* EOF */
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user