]> git.saurik.com Git - apple/xnu.git/blame - tools/tests/xnu_quick_test/README
xnu-2422.1.72.tar.gz
[apple/xnu.git] / tools / tests / xnu_quick_test / README
CommitLineData
2d21ac55
A
1xnu_quick_test - this tool will do a quick test of every (well, to be
2honest most) system calls we support in xnu.
3
4WARNING - this is not meant to be a full regression test of all the
5system calls. The intent is to have a quick test of each system call that
b0d623f7 6can be run very easily and quickly when a new kernel is built.
2d21ac55
A
7
8This tool is meant to grow as we find xnu problems that could have be
9caught before we submit to a build train. So please add more tests and
10make the existing ones better. Some of the original tests are nothing
11more than place holders and quite lame. Just keep in mind that the tool
12should run as fast as possible. If it gets too slow then most people
13will stop running it.
14
15LP64 testing tip - when adding or modifying tests, keep in mind the
16variants in the LP64 world. If xnu gets passed a structure the varies in
17size between 32 and 64-bit processes, try to test that a field in the
b0d623f7 18structure contains valid data. For example, if we know foo structure
2d21ac55
A
19looks like:
20struct foo {
21 int an_int;
22 long a_long;
23 int another_int;
24}
25And if we know what another_int should contain then test for the known
26value since it's offset will vary depending on whether the calling process
27is 32 or 64 bits.
28
29NOTE - we have several workarounds and test exceptions for some
30outstanding bugs in xnu. All the workarounds are marked with "todo" and
6d2010ae 31some comments noting the radar number of the offending bug. Do a search
2d21ac55
A
32for "todo" in the source files for this project to locate which tests have
33known failures. And please tag any new exceptions you find with "todo"
34in the comment and the radar number of the bug.
35
6d2010ae 36To build a fat binary, export ARCH="i386 x86_64". This will work
2d21ac55
A
37for any architectures that Apple gcc recognizes.
38
6d2010ae 39Added four defines which you can use at the compile line to build variants.
2d21ac55
A
40DEBUG
41 turn on additional printfs
42CONFORMANCE_TESTS_IN_XNU
43 when conformance tests are in xnu, set this to 1
44TEST_SYSTEM_CALLS
45 test system calls (doesn't compile; a different bug)
6d2010ae
A
46RUN_UNDER_TESTBOTS
47 when running under testbots, set this to 1
48by default, all four are set to 0, i.e. disabled. To build, export
2d21ac55
A
49MORECFLAGS with the values you want set, e.g.
50 export MORECFLAGS="-D DEBUG=1 -D CONFORMANCE_TESTS_IN_XNU=1"
51
52todo:
53-- have folks with area expertise fix lame tests
54 (most of the networking related tests are pretty lame)
55-- mach system calls support
56
57
58USAGE: xnu_quick_test -target TARGET_PATH
59
60 -f[ailures] MAX_FAILS_ALLOWED # number of test cases that may fail before we give up. defaults to 0
61 -l[ist] # list all the tests this tool performs
62 -r[un] 1, 3, 10 - 19 # run specific tests. enter individual test numbers and/or range of numbers. use -list to list tests.
63 -s[kip] # skip setuid tests
6d2010ae 64 -t[arget] TARGET_PATH # path to directory where tool will create test files. defaults to "/tmp/"
39236c6e 65 -testbot # output results in CoreOS TestBot compatible format
2d21ac55
A
66
67examples:
68--- Place all test files and directories at the root of volume "test_vol" ---
69xnu_quick_test -t /Volumes/test_vol/
70
71--- Run the tool for tests 10 thru 15, test 18 and test 20 ---
72xnu_quick_test -r 10-15, 18, 20
73
74
75--- example of running the tool to list all the tests it currently supports ---
76xnu_quick_test -l
77List of all tests this tool performs...
78 1 syscall
79 2 fork, wait4, exit
80 3 fsync, ftruncate, lseek, pread, pwrite, read, readv, truncate, write, writev
81 4 close, fpathconf, fstat, open, pathconf
82 5 link, stat, unlink
83 6 chdir, fchdir
84 7 access, chmod, fchmod
85 8 chown, fchown, lchown, lstat, readlink, symlink
86 9 fstatfs, getattrlist, getfsstat, statfs
87 10 getpid, getppid, pipe
b0d623f7 88 11 getauid, gettid, getuid, geteuid, issetugid, setaudit_addr, seteuid, settid, settid_with_pid, setuid
2d21ac55
A
89 12 mkdir, rmdir, umask
90 13 mknod, sync
91 14 fsync, getsockopt, poll, select, setsockopt, socketpair
b0d623f7 92 15 accept, bind, connect, getpeername, getsockname, listen, socket, recvmsg, sendmsg, sendto, sendfile
2d21ac55
A
93 16 chflags, fchflags
94 17 kill, vfork, execve
95 18 getegid, getgid, getgroups, setegid, setgid, setgroups
96 19 dup, dup2, getdtablesize
97 20 getrusage, profil
98 21 getitimer, setitimer, sigaction, sigpending, sigprocmask, sigsuspend, sigwait
99 22 acct
100 23 ioctl
101 24 chroot
102 25 madvise, mincore, minherit, mlock, mlock, mmap, mprotect, msync, munmap
103 26 getpgrp, getpgid, getsid, setpgid, setpgrp, setsid
104 27 fcntl
105 28 getlogin, setlogin
106 29 getpriority, setpriority
107 30 futimes, gettimeofday, settimeofday, utimes
108 31 rename, stat
109 32 flock
110 33 mkfifo, read, write
111 34 quotactl
112 35 getrlimit, setrlimit
113 36 getattrlist, getdirentries, getdirentriesattr, setattrlist
114 37 exchangedata
115 38 searchfs
116 39 sem_close, sem_open, sem_post, sem_trywait, sem_unlink, sem_wait
117 40 semctl, semget, semop
118 41 shm_open, shm_unlink
119 42 shmat, shmctl, shmdt, shmget
120 43 fgetxattr, flistxattr, fremovexattr, fsetxattr, getxattr, listxattr, removexattr, setxattr
121 44 aio_cancel, aio_error, aio_read, aio_return, aio_suspend, aio_write, fcntl, lio_listio
122 45 kevent, kqueue
123 46 msgctl, msgget, msgrcv, msgsnd
124
125
126--- example of a full test run ---
127cottje% ./BUILD/dst/xnu_quick_test
128created test directory at "/tmp/xnu_quick_test-1660251855"
129Will allow 0 failures before testing is aborted
130
131Begin testing - Tue Dec 13 15:56:50 2005
132
133test #1 - syscall
134test #2 - fork, wait4, exit
135test #3 - fsync, ftruncate, lseek, pread, pwrite, read, readv, truncate, write, writev
136test #4 - close, fpathconf, fstat, open, pathconf
137test #5 - link, stat, unlink
138test #6 - chdir, fchdir
139test #7 - access, chmod, fchmod
140test #8 - chown, fchown, lchown, lstat, readlink, symlink
141test #9 - fstatfs, getattrlist, getfsstat, statfs
142test #10 - getpid, getppid, pipe
143test #11 - getauid, gettid, getuid, geteuid, issetugid, setauid, seteuid, settid, settid_with_pid, setuid
144test #12 - mkdir, rmdir, umask
145test #13 - mknod, sync
146test #14 - fsync, getsockopt, poll, select, setsockopt, socketpair
147test #15 - accept, bind, connect, getpeername, getsockname, listen, socket, recvmsg, sendmsg, sendto
148test #16 - chflags, fchflags
149test #17 - kill, vfork, execve
150test #18 - getegid, getgid, getgroups, setegid, setgid, setgroups
151test #19 - dup, dup2, getdtablesize
152test #20 - getrusage, profil
153test #21 - ktrace
154test #22 - getitimer, setitimer, sigaction, sigpending, sigprocmask, sigsuspend, sigwait
155test #23 - acct
156test #24 - ioctl
157test #25 - chroot
158test #26 - madvise, mincore, minherit, mlock, mlock, mmap, mprotect, msync, munmap
159test #27 - getpgrp, getpgid, getsid, setpgid, setpgrp, setsid
160test #28 - fcntl
161test #29 - getlogin, setlogin
162test #30 - getpriority, setpriority
163test #31 - futimes, gettimeofday, settimeofday, utimes
164test #32 - rename, stat
165test #33 - flock
166test #34 - mkfifo, read, write
167test #35 - quotactl
168test #36 - getrlimit, setrlimit
169test #37 - getattrlist, getdirentries, getdirentriesattr, setattrlist
170test #38 - exchangedata
171test #39 - searchfs
172test #40 - sem_close, sem_open, sem_post, sem_trywait, sem_unlink, sem_wait
173test #41 - semctl, semget, semop
174test #42 - shm_open, shm_unlink
175test #43 - shmat, shmctl, shmdt, shmget
176test #44 - fgetxattr, flistxattr, fremovexattr, fsetxattr, getxattr, listxattr, removexattr, setxattr
177test #45 - aio_cancel, aio_error, aio_read, aio_return, aio_suspend, aio_write, fcntl, lio_listio
178test #46 - kevent, kqueue
179test #47 - msgctl, msgget, msgrcv, msgsnd
180
181End testing - Tue Dec 13 15:57:08 2005