• Home
  • History
  • Annotate
  • only in this directory
NameDateSize

..22-Sep-201416

32bit_inode_tests.cH A D09-Sep-20118.9 KiB

atomic_fifo_queue_test.cH A D05-Aug-2010905

commpage_tests.cH A D09-Sep-20118.1 KiB

content_protection_test.cH A D21-Jan-201326.3 KiB

helpers/H22-Sep-20146

kqueue_tests.cH A D02-Aug-201019 KiB

machvm_tests.cH A D02-Aug-201010.5 KiB

main.cH A D19-Mar-201320.6 KiB

makefileH A D01-Aug-20138.3 KiB

memory_tests.cH A D07-Mar-201310.1 KiB

misc.cH A D22-Sep-201411.6 KiB

pipes_tests.cH A D14-Nov-201223.5 KiB

READMEH A D05-Nov-20127.8 KiB

sched_tests.cH A D15-Feb-20115.6 KiB

sema_tests.cH A D09-Jan-20084.7 KiB

shared_memory_tests.cH A D06-Mar-20144.4 KiB

socket_tests.cH A D22-Sep-201419 KiB

tests.cH A D22-Sep-2014159.5 KiB

tests.hH A D18-Jan-20124.9 KiB

xattr_tests.cH A D03-Feb-20115.7 KiB

README

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
6can be run very easily and quickly when a new kernel is built.
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 
18structure contains valid data.  For example, if we know foo structure
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
31some comments noting the radar number of the offending bug.  Do a search
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
36To build a fat binary, export ARCH="i386 x86_64". This will work
37for any architectures that Apple gcc recognizes.
38
39Added four defines which you can use at the compile line to build variants.
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)
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
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   
64         -t[arget] TARGET_PATH           # path to directory where tool will create test files.  defaults to "/tmp/"  
65         -testbot                        # output results in CoreOS TestBot compatible format
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 
88 11        getauid, gettid, getuid, geteuid, issetugid, setaudit_addr, seteuid, settid, settid_with_pid, setuid 
89 12        mkdir, rmdir, umask 
90 13        mknod, sync 
91 14        fsync, getsockopt, poll, select, setsockopt, socketpair 
92 15        accept, bind, connect, getpeername, getsockname, listen, socket, recvmsg, sendmsg, sendto, sendfile
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
182