Blame 00TEST

Packit 6f02de
Packit 6f02de
			The Lsof Test Suite
Packit 6f02de
Packit 6f02de
			    Contents
Packit 6f02de
Packit 6f02de
		A.  Introduction
Packit 6f02de
		    1.  Test Suite Goals
Packit 6f02de
		    2.  Not a FAQ
Packit 6f02de
		    3.  Where have the tests been tested?
Packit 6f02de
		B.  Test Methodology
Packit 6f02de
		    1.  Test Limitations
Packit 6f02de
		    2.  Test Data Base and Scripts
Packit 6f02de
		    3.  The Makefile
Packit 6f02de
			3.1 The CkTestDB Script
Packit 6f02de
		    4.  The Lsof Executable and LT_LSOF_PATH
Packit 6f02de
		    5.  Automated Testing
Packit 6f02de
		C.  Configure Script Participation
Packit 6f02de
		    1.  config.cc
Packit 6f02de
		    2.  config.cflags
Packit 6f02de
			2.1  config.cflags Contents
Packit 6f02de
		    3.  config.ldflags
Packit 6f02de
		    4.  config.xobj
Packit 6f02de
		D.  Cleaning -- Quick or Spotless
Packit 6f02de
		E.  Test Libraries
Packit 6f02de
		    1.  LTlib.c
Packit 6f02de
		F.  The Individual Tests
Packit 6f02de
		    1.  LTbasic, a Basic Lsof Test
Packit 6f02de
		    2.  LTbigf, Test Sizes and Offsets for Large
Packit 6f02de
			(> 32 bit) Files
Packit 6f02de
		    3.  LTdnlc, Test the Kernel's Dynamic Name Lookup
Packit 6f02de
		        Cache
Packit 6f02de
		    4.  LTlock, Lock Tests
Packit 6f02de
		    5.  LTnfs, NFS Test
Packit 6f02de
		    6.  LTnlink, Link Count Test
Packit 6f02de
		    7.  LTsock, Test IPv4 Sockets
Packit 6f02de
		    8.  LTszoff, Test Sizes and Offsets for Small
Packit 6f02de
			(< 32 bit) Files
Packit 6f02de
		    9.  LTunix, Test UNIX Domain Sockets
Packit 6f02de
		Appendix A, Test Files
Packit 6f02de
		Appendix B, Test Validations
Packit 6f02de
		Appendix C, Test Failures
Packit 6f02de
Packit 6f02de
Packit 6f02de
A. Introduction
Packit 6f02de
===============
Packit 6f02de
Packit 6f02de
Lsof has an automated test suite whose components are located in
Packit 6f02de
the tests/ sub-directory of the lsof top-level directory.  Configuring,
Packit 6f02de
building and testing lsof can be done with these shell commands:
Packit 6f02de
Packit 6f02de
    $ Configure -n <dialect-abbreviation>
Packit 6f02de
    $ make
Packit 6f02de
    $ cd tests
Packit 6f02de
    $ make
Packit 6f02de
Packit 6f02de
That's all there is to it!
Packit 6f02de
Packit 6f02de
But read on for more dirty details.
Packit 6f02de
Packit 6f02de
A.1. Test Suite Goals
Packit 6f02de
=====================
Packit 6f02de
Packit 6f02de
The lsof test suite attempts to test basic lsof features.  It does
Packit 6f02de
not promise to test every lsof feature for every supported dialect.
Packit 6f02de
(That's a nearly impossible goal.)
Packit 6f02de
Packit 6f02de
As a result, the test suite cannot promise that every lsof feature
Packit 6f02de
works as documented.  At best the test suite gives some assurance
Packit 6f02de
that basic, standard and some optional lsof features work.
Packit 6f02de
Packit 6f02de
A.2. Not a FAQ
Packit 6f02de
==============
Packit 6f02de
Packit 6f02de
One caution: this is not a frequently asked questions (FAQ) file
Packit 6f02de
for the lsof test suite.  FAQs on the lsof test suite will be found
Packit 6f02de
in the one and only lsof FAQ in file 00FAQ of the lsof distribution,
Packit 6f02de
or on-line at:
Packit 6f02de
Packit 6f02de
    ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
Packit 6f02de
Packit 6f02de
A.3. Where have the tests been tested?
Packit 6f02de
======================================
Packit 6f02de
Packit 6f02de
OK, I just said this isn't an FAQ and here comes a question and
Packit 6f02de
answer that looks like an FAQ.  Consider it a very frequently asked
Packit 6f02de
question and indulge me -- let me answer it here.
Packit 6f02de
Packit 6f02de
The lsof test suite hasn't been tested everywhere it might be
Packit 6f02de
possible to build lsof successfully.  That "everywhere" includes
Packit 6f02de
dialect versions -- e.g., Solaris < 2.6 -- to which I no longer
Packit 6f02de
have access.  On some dialect versions to which I have access, some
Packit 6f02de
tests won't run because the test system lacks support.
Packit 6f02de
Packit 6f02de
In "Appendix B, Test Validations" I've tried to list where I compiled
Packit 6f02de
and tested the test suite and information on any tests I was unable
Packit 6f02de
to run.  In "Appendix C, Test Failures" I list where the test suite
Packit 6f02de
fails and why it failed.
Packit 6f02de
Packit 6f02de
A.4 Where are the tests?
Packit 6f02de
========================
Packit 6f02de
Packit 6f02de
This is another FAQ whose answer is that the tests are in the tests/
Packit 6f02de
sub-directory of the main lsof source directory.
Packit 6f02de
Packit 6f02de
Packit 6f02de
B. Test Methodology
Packit 6f02de
===================
Packit 6f02de
Packit 6f02de
The test suite is made up of individual C programs.  Test setup is
Packit 6f02de
performed by the lsof Configure script itself, which writes a set
Packit 6f02de
of dialect configuration files in the tests/ subdirectory.  (See
Packit 6f02de
"C. Configure Script Participation.")
Packit 6f02de
Packit 6f02de
Each program or script performs a specialized tests.  Those tests
Packit 6f02de
are described below in "F. The Individual Tests".
Packit 6f02de
Packit 6f02de
Each test measures lsof functionality by putting a specific lsof
Packit 6f02de
command execution at the end of an in-bound (to the test) pipe.
Packit 6f02de
The caller asks lsof to write its results to the pipe in field
Packit 6f02de
output form.  (See the -F option in the lsof man page.)
Packit 6f02de
Packit 6f02de
Using an in-bound lsof pipe allows the tests to measure a great
Packit 6f02de
deal of lsof functionality, including as an interesting side effect,
Packit 6f02de
the performance of field output.  Consequently, there's no special
Packit 6f02de
field output test.
Packit 6f02de
Packit 6f02de
B.1. Test Limitations
Packit 6f02de
=====================
Packit 6f02de
Packit 6f02de
One limitation of the tests is that they don't measure lsof formatted
Packit 6f02de
output -- i.e., the output normally see when lsof is run.  There
Packit 6f02de
are just too many variants of lsof output produced across the range
Packit 6f02de
of dialects where lsof runs, so field output is a more consistent
Packit 6f02de
way to process lsof output.
Packit 6f02de
Packit 6f02de
But using field output does mean that the test suite doesn't check
Packit 6f02de
for lsof formatting problems, except in the field output itself.
Packit 6f02de
Packit 6f02de
B.2. Test Data Base and Scripts
Packit 6f02de
===============================
Packit 6f02de
Packit 6f02de
The TestDB file contains a simple data base that describes where
Packit 6f02de
the tests have been validated.  Entries are formed from a combination
Packit 6f02de
of the lines in the config.cflags file produced by the lsof Configure
Packit 6f02de
script.  The entries can be considered "lsof dialect footprints,"
Packit 6f02de
hereafter simply called "dialect footprints" or just "footprints."
Packit 6f02de
Packit 6f02de
Two shell scripts support TestDB.  The first, Add2TestDB, will add
Packit 6f02de
a footprint to TestDB.  I don't recommend you use this script.
Packit 6f02de
Mostly it's for my use when I find that the test suite has been
Packit 6f02de
validated on a new dialect.
Packit 6f02de
Packit 6f02de
It's also possible to add a footprint to TestDB by simply editing
Packit 6f02de
TestDB and pasting into it a copy of the footprint reported by a
Packit 6f02de
failed Makefile rule.  I don't generally recommend this be done,
Packit 6f02de
either.
Packit 6f02de
Packit 6f02de
There are Makefile rules that use (and avoid) the CkTestDB script.
Packit 6f02de
(See "B.3 The Makefile".)
Packit 6f02de
Packit 6f02de
The default (i.e., "all") Makefile rule uses the CkTestDB script
Packit 6f02de
to look for the footprint in TestDB. If no footprint is found, the
Packit 6f02de
script issues a warning, displays the unfound footprint, and asks
Packit 6f02de
if running the test suite should continue.
Packit 6f02de
Packit 6f02de
The "auto" Makefile rule also uses CkTestDB, but with a special
Packit 6f02de
call that causes CkTestDB to look in TestDB for the footprint,
Packit 6f02de
report it when it can't be found, and then fail.  That CkTestDB
Packit 6f02de
failure causes the "auto" rule to fail, too.
Packit 6f02de
Packit 6f02de
The "silent" Makefile rule doesn't use CkTestDB to look in TestDB
Packit 6f02de
for the footprint.  It runs the standard and basic tests as silently
Packit 6f02de
as possible, then returns a failure or success exit code that
Packit 6f02de
signals the result of the running of the tests.  (Use the "silent"
Packit 6f02de
rule carefully, because it will skip proving the tests have previously
Packit 6f02de
run on the dialect.)
Packit 6f02de
Packit 6f02de
B.3. The Makefile
Packit 6f02de
=======================
Packit 6f02de
Packit 6f02de
The Makefile runs the tests in the test suite.  It has these rules.
Packit 6f02de
Packit 6f02de
    all         runs the basic test and the standard tests,
Packit 6f02de
		interacting with the caller should the footprint
Packit 6f02de
		not be found in TestDB.
Packit 6f02de
Packit 6f02de
		(This is the default rule.)
Packit 6f02de
Packit 6f02de
    auto        runs the basic test and the standard tests on a
Packit 6f02de
		previously validated system as silently as possible.
Packit 6f02de
Packit 6f02de
		The footprint must be found in TestDB for this rule
Packit 6f02de
		to succeed.  (See the "silent" rule for one that
Packit 6f02de
		avoids checking TestDB.)
Packit 6f02de
Packit 6f02de
		This rule is designed for lsof build scripts that
Packit 6f02de
		want a quick noiseless test to make sure what they
Packit 6f02de
		built works as it previously did.
Packit 6f02de
Packit 6f02de
		This rule calls CkTestDB in a way that inhibits
Packit 6f02de
		its normal go-ahead request. (See "B.2.1 The CkTestDB
Packit 6f02de
		Script".)  If CkTestDB finds the footprint and all
Packit 6f02de
		tests succeed, this rule returns a zero exit code
Packit 6f02de
		(success).  If the footprint isn't found or if any
Packit 6f02de
		test fails, a non-zero exit code (failure) is
Packit 6f02de
		returned.
Packit 6f02de
Packit 6f02de
    ckDB        calls the CkTestDB script to look for a footprint.
Packit 6f02de
		If none is found, the way CkTestDB was called (See
Packit 6f02de
		"B.3.1 The CkTestDB Script".) causes it to return
Packit 6f02de
		a non-zero exit code (failure) to this rule, and
Packit 6f02de
		the rule then returns a non-zero exit code (failure)
Packit 6f02de
		itself.
Packit 6f02de
Packit 6f02de
		This rule is used by the "auto" rule.  If this rule
Packit 6f02de
		succeeds (zero exit code), the "auto" rule then
Packit 6f02de
		uses the "silent" rule.
Packit 6f02de
Packit 6f02de
    clean       removes test and compiler output.  (See the "D.
Packit 6f02de
		Cleaning -- Quick or Spotless" section.)
Packit 6f02de
Packit 6f02de
    opt		runs the optional tests.
Packit 6f02de
    optional
Packit 6f02de
Packit 6f02de
    silent      runs the lsof basic and standard tests as silently
Packit 6f02de
		as possible (as the "auto" rule does), but without
Packit 6f02de
		using CkTestDB to look for a footprint.  If all
Packit 6f02de
		tests succeed, the rule returns a zero exit code
Packit 6f02de
		(success).  If any test fails, the rule returns a
Packit 6f02de
		non-zero exit code (failure).
Packit 6f02de
Packit 6f02de
		Use the "silent" rule carefully, because it will
Packit 6f02de
		skip proving the tests have previously run on the
Packit 6f02de
		dialect.
Packit 6f02de
Packit 6f02de
    spotless    does what the clean rule does and also removes the
Packit 6f02de
		config.* files created by ../Configure.  (See the
Packit 6f02de
		"D. Cleaning -- Quick or Spotless" section.)
Packit 6f02de
Packit 6f02de
    std		runs the basic test and the standard tests.
Packit 6f02de
    standard
Packit 6f02de
Packit 6f02de
The Makefile cleaning rules are further described in "D.  Cleaning
Packit 6f02de
-- Quick or Spotless."
Packit 6f02de
Packit 6f02de
B.3.1 The CkTestDB Script
Packit 6f02de
=========================
Packit 6f02de
Packit 6f02de
Some Makefile rules (e.g., "all" and "auto") use the CkTestDB script
Packit 6f02de
to make sure the tests have been run previously on the dialect.
Packit 6f02de
CkTestDB does that by looking for the dialect's footprint in TestDB.
Packit 6f02de
Packit 6f02de
If no footprint is found, and if standard input is a TTY, CkTestDB
Packit 6f02de
asks for a go-ahead signal.  If standard input isn't a TTY, CkTestDB
Packit 6f02de
aborts the test run.  (See "B.2. Test Data Base and Scripts".)
Packit 6f02de
Packit 6f02de
The Makefile "silent" rule does not call CkTestDB.  use the "silent"
Packit 6f02de
rule carefully, because it will skip proving the tests have previously
Packit 6f02de
run on the dialect.
Packit 6f02de
Packit 6f02de
B.4. The Lsof Executable and LT_LSOF_PATH
Packit 6f02de
=========================================
Packit 6f02de
Packit 6f02de
Normally the programs in the test suite use the lsof executable in
Packit 6f02de
their parent directory, ../lsof.  Usually that lsof has just been
Packit 6f02de
built and testing it is the next logical step.
Packit 6f02de
Packit 6f02de
Be careful that ../lsof has sufficient permission to access the
Packit 6f02de
necessary kernel resources -- e.g., /dev/kmem, /dev/mem, /proc,
Packit 6f02de
etc.  If it doesn't the tests will fail.  (The tests do check to
Packit 6f02de
see if they can open /dev/mem and /dev/kmem for read access if
Packit 6f02de
LT_KMEM is defined in config.cflags and if the path to the lsof
Packit 6f02de
executable is ../lsof.)
Packit 6f02de
Packit 6f02de
Here are two possible ways you can make sure the lsof being tested
Packit 6f02de
has sufficient permission: 1) use chmod and chgrp to enable its
Packit 6f02de
running and put its path in LT_LSOF_PATH, thus disabling the check
Packit 6f02de
in the tests for kernel memory access; or 2) run the tests (and
Packit 6f02de
hence the lsof being tested) under a login that has sufficient
Packit 6f02de
permission -- e.g., is in a group that can read /dev/kmem.
Packit 6f02de
Packit 6f02de
You can direct the tests to use a different lsof executable by
Packit 6f02de
specifying its path in the LT_LSOF_PATH environment variable.  To
Packit 6f02de
test an lsof executable already installed in /usr/local/etc --
Packit 6f02de
provided that lsof is at revision 4.63 or higher -- do this:
Packit 6f02de
Packit 6f02de
    $ LT_LSOF_PATH=/usr/local/etc/lsof
Packit 6f02de
    $ export LT_LSOF_PATH
Packit 6f02de
    $ cd .../lsof_<version>/tests
Packit 6f02de
    $ make
Packit 6f02de
Packit 6f02de
When you specify an alternate executable path via LT_LSOF_PATH,
Packit 6f02de
that also prevents the tests from checking to see if they have
Packit 6f02de
kernel memory access.
Packit 6f02de
Packit 6f02de
B.5 Automated Testing
Packit 6f02de
=====================
Packit 6f02de
Packit 6f02de
Normally the lsof test suite is wordy and may require interaction.
Packit 6f02de
When you want to avoid those interferences, use the Makefile "auto"
Packit 6f02de
or "silent" rules.  (See the description of the "auto" and "silent"
Packit 6f02de
rules in "B.3 The Makefile".)
Packit 6f02de
Packit 6f02de
The footprint must be present in TestDB in order to use the "auto"
Packit 6f02de
rule.  If it is not, the "auto" rule will fail and report the
Packit 6f02de
missing footprint.  Footprints in TestDB proclaim that the tests
Packit 6f02de
have previously succeeded on the dialect.
Packit 6f02de
Packit 6f02de
The footprint need not be present in TestDB in order to use the
Packit 6f02de
"silent" rule.  Use the "silent" rule carefully, because it will
Packit 6f02de
skip proving the tests have previously run on the dialect.
Packit 6f02de
Packit 6f02de
Packit 6f02de
C. Configure Script Participation
Packit 6f02de
=================================
Packit 6f02de
Packit 6f02de
An important step in setting up the test suite is performed by the
Packit 6f02de
Configure script in the lsof home directory (the parent to tests/.)
Packit 6f02de
Packit 6f02de
Configure writes four files in tests/ that describe how the tests
Packit 6f02de
are to be compiled, configured and loaded.  The files also describe
Packit 6f02de
options that Configure selected that are important to the test
Packit 6f02de
suite.
Packit 6f02de
Packit 6f02de
C.1. config.cc
Packit 6f02de
==============
Packit 6f02de
Packit 6f02de
This file, config.cc, contains the name of or the path to the C
Packit 6f02de
compiler used to compile lsof.  The Makefile uses this file in
Packit 6f02de
place of the standard make(1) CC string with a shell in-place
Packit 6f02de
execution statement -- i.e., `cat config.cc`.
Packit 6f02de
Packit 6f02de
If the LSOF_CC environment variable is supplied to the lsof Configure
Packit 6f02de
script, its value will appear in the config.cc file.
Packit 6f02de
Packit 6f02de
C.2. config.cflags
Packit 6f02de
==================
Packit 6f02de
Packit 6f02de
This file, config.cflags, contains C compiler flags that Makefile
Packit 6f02de
uses to compile the C programs in the test suite.  As with the
Packit 6f02de
compiler file, config.cc, the make rules incorporate the contents
Packit 6f02de
of this file into C compiler options with `cat config.cflags`.
Packit 6f02de
Packit 6f02de
This file is also used by the Add2TestDB and CkTestDB shell scripts
Packit 6f02de
to build and match footprints.  (See "B.2. Test Data Base and
Packit 6f02de
Scripts.")
Packit 6f02de
Packit 6f02de
C.2.1 config.cflags Contents
Packit 6f02de
============================
Packit 6f02de
Packit 6f02de
The config.cflags file may contain the following C compiler flags.
Packit 6f02de
Packit 6f02de
Packit 6f02de
    -DLT_AIXA               is present if lsof was built for AIX.
Packit 6f02de
			    It contains the AIX architecture flag.
Packit 6f02de
			    (See the lsof Configure script or
Packit 6f02de
			    dialects/aix/dlsof.h for more information
Packit 6f02de
			    on the AIX architecture flag.)
Packit 6f02de
Packit 6f02de
    -DLT_BIGF		    is present if lsof was built for a dialect
Packit 6f02de
			    that has large file (sizes and offsets >
Packit 6f02de
			    32 bits).
Packit 6f02de
Packit 6f02de
    -DLT_CC		    is present if the lsof compiler is cc.
Packit 6f02de
Packit 6f02de
    -DLT_DEV64		    is present if the FreeBSD dialect uses a 64
Packit 6f02de
			    devite type.
Packit 6f02de
Packit 6f02de
Packit 6f02de
    -DLT_DIAL_	    always ends in (the  part) the
Packit 6f02de
			    "canonical" -- i.e., usually the most
Packit 6f02de
			    common abbreviation by which the dialect
Packit 6f02de
			    is known.
Packit 6f02de
Packit 6f02de
			    Example: -DLT_DIAL_solaris
Packit 6f02de
Packit 6f02de
    -DLT_GCC		    is present if the lsof compiler is gcc.
Packit 6f02de
Packit 6f02de
    -DLT_K64		    is present if lsof has been built for a
Packit 6f02de
			    64 bit kernel
Packit 6f02de
Packit 6f02de
    -DLT_KMEM		    is present if lsof has been built to
Packit 6f02de
			    use /dev/kmem to obtain kernel values.
Packit 6f02de
Packit 6f02de
    -DLT_VERS=<vn>	    contains the version number for the
Packit 6f02de
			    dialect, as used in lsof pre-processor
Packit 6f02de
			    tests.
Packit 6f02de
Packit 6f02de
			    Example for Solaris 10: -DLT_VERS=100000
Packit 6f02de
Packit 6f02de
    -DLT_VPATH		    is present if the dialect has the v_path
Packit 6f02de
			    member in the vnode structure (e.g., some
Packit 6f02de
			    versions of Solaris 10).
Packit 6f02de
Packit 6f02de
The config.cflags file may also contain dialect-specific compiler
Packit 6f02de
flags needed to activate a specific feature on the dialect.  For
Packit 6f02de
example, for HP-UX config.cflags might contain:
Packit 6f02de
Packit 6f02de
    -D_LARGEFILE64_SOURCE   This compiler flag enables the use of
Packit 6f02de
			    large-file system library functions
Packit 6f02de
			    --e.g., open64().
Packit 6f02de
Packit 6f02de
			    The lsof Configure script stanzas for
Packit 6f02de
			    the dialects select these options.
Packit 6f02de
Packit 6f02de
Packit 6f02de
C.3. config.ldflags
Packit 6f02de
===================
Packit 6f02de
Packit 6f02de
This file, config.ldflags, contains the dialect loader flags --
Packit 6f02de
i.e., the equivalent to make(1) LFLAGS -- for loading the test
Packit 6f02de
programs.
Packit 6f02de
Packit 6f02de
Example for Solaris: -lsocket           this adds the socket library
Packit 6f02de
					to the loading of the lsof
Packit 6f02de
					test programs.
Packit 6f02de
Packit 6f02de
Example for UnixWare: -lsocket -lnsl    this adds the socket and
Packit 6f02de
					name server libraries to
Packit 6f02de
					the loading of the lsof
Packit 6f02de
					test programs.
Packit 6f02de
Packit 6f02de
Packit 6f02de
C.4. config.xobj
Packit 6f02de
================
Packit 6f02de
Packit 6f02de
This file, config.xobj, contains the paths to any extra object
Packit 6f02de
files (.o's) that must be loaded when the test suite C programs
Packit 6f02de
are loaded.  Like config.cc and config.cflags, it's incorporated
Packit 6f02de
into the loader statements of the Makefile's rules with `cat
Packit 6f02de
config.xobj`.
Packit 6f02de
Packit 6f02de
Examples for DEC OSF/1 and NEXTSTEP:
Packit 6f02de
Packit 6f02de
    ../lib/snpf.o       this loads the private lsof object file
Packit 6f02de
			that contains an snprintf() function.  (The
Packit 6f02de
			DEC OSF/1 4.0 and NEXTSTEP 3.1 C libraries
Packit 6f02de
			don't have snprintf().)
Packit 6f02de
Packit 6f02de
Packit 6f02de
D. Cleaning -- Quick or Spotless
Packit 6f02de
================================
Packit 6f02de
Packit 6f02de
There are two Makefile rules that clean the tests/ subdirectory --
Packit 6f02de
"clean" and "spotless".  They cause different degrees of cleaning.
Packit 6f02de
Packit 6f02de
    clean       a "quick" clean that removes compiled object files,
Packit 6f02de
		executables and test files.  It does NOT remove
Packit 6f02de
		the configuration files that ../Configure and the
Packit 6f02de
		config.perl rule wrote.
Packit 6f02de
Packit 6f02de
    spotless    cleans out everything clean does -- plus the
Packit 6f02de
		configuration files that ../Configure and the
Packit 6f02de
		config.perl rule wrote.
Packit 6f02de
Packit 6f02de
		This is the rule used when `./Configure -clean` is
Packit 6f02de
		specified.  If this rule is used, `../Configure -n
Packit 6f02de
		` and `../make`) must be run again before
Packit 6f02de
		the test suite can be used.
Packit 6f02de
Packit 6f02de
Packit 6f02de
E. Test Library
Packit 6f02de
===============
Packit 6f02de
Packit 6f02de
The lsof test suite provides a C library.
Packit 6f02de
Packit 6f02de
E.1. LTlib.c
Packit 6f02de
============
Packit 6f02de
Packit 6f02de
This is a C library of common functions used by tests.  Configured
Packit 6f02de
at compile time by the contents of config.cflags, it uses the single
Packit 6f02de
header file LsofTest.h.  LsofTest.h tailors its definitions to the
Packit 6f02de
dialect at compile time, using the LT_DIAL_* definitions in
Packit 6f02de
config.cflags.
Packit 6f02de
Packit 6f02de
Two particularly useful functions in the library are: ExecLsof(),
Packit 6f02de
which will execute an lsof child process; and RdFromLsof(), which
Packit 6f02de
will read from the in-bound lsof pipe, and decode the fields into
Packit 6f02de
structures that are easy for C programs to process.
Packit 6f02de
Packit 6f02de
This library is a good model for processing field output in a C
Packit 6f02de
program from an in-bound lsof pipe.
Packit 6f02de
Packit 6f02de
The source for the library, LTlib.c, contains more documentation.
Packit 6f02de
Packit 6f02de
Packit 6f02de
F. The Individual Tests
Packit 6f02de
=======================
Packit 6f02de
Packit 6f02de
The individual tests are listed in this section.  The listings
Packit 6f02de
explain what the tests do, a few errors they might report, and how
Packit 6f02de
to use options and environment variables to customize the tests.
Packit 6f02de
Packit 6f02de
The test descriptions are listed in this section in alphabetical
Packit 6f02de
order, not in the order they are run by Makefile.
Packit 6f02de
Packit 6f02de
The Makefile runs the tests in three groups, basic tests, standard
Packit 6f02de
tests, and optional tests.  The default make "all" rule runs the
Packit 6f02de
basic and standard tests.  (The "standard", "std", and "test"
Packit 6f02de
Makefile rules are synonyms to "all".) If the standard tests succeed,
Packit 6f02de
Makefile suggests running the optional tests with the "opt" (or
Packit 6f02de
"optional") rule.
Packit 6f02de
Packit 6f02de
The Makefile "auto" and "silent" rules run only the basic and
Packit 6f02de
standard tests.  They do not run or suggest you run the optional
Packit 6f02de
tests.
Packit 6f02de
Packit 6f02de
    The basic test:
Packit 6f02de
	LTbasic
Packit 6f02de
Packit 6f02de
    Standard tests:
Packit 6f02de
	LTnlink
Packit 6f02de
	LTsock
Packit 6f02de
	LTszoff
Packit 6f02de
	LTunix
Packit 6f02de
Packit 6f02de
    Optional tests:
Packit 6f02de
	LTbigf
Packit 6f02de
	LTdnlc
Packit 6f02de
	LTlock
Packit 6f02de
	LTnfs
Packit 6f02de
Packit 6f02de
The basic and standard tests should all succeed on all dialects,
Packit 6f02de
although LTnlink may warn that it can't perform its unlink test on
Packit 6f02de
an NFS file system.
Packit 6f02de
Packit 6f02de
The optional tests may run, they may be disabled for specific
Packit 6f02de
dialects, or they may fail because of special resource needs --
Packit 6f02de
e.g., LTbigf will run only on UNIX dialects where it knows how to
Packit 6f02de
handle files whose lengths exceed 32 bits, and LTnfs needs access
Packit 6f02de
to an NFS file system mounted from a remote NFS server.
Packit 6f02de
Packit 6f02de
Tests that need special resources usually provide a hint about the
Packit 6f02de
resources when they fail.  Information about special resource needs
Packit 6f02de
may also be found in the following sections about the individual
Packit 6f02de
tests.
Packit 6f02de
Packit 6f02de
G.1. LTbasic, a Basic Lsof Test
Packit 6f02de
===============================
Packit 6f02de
Packit 6f02de
This is the basic lsof test.  If it doesn't run, it's not likely
Packit 6f02de
any other tests will run, either.  Hence, if it fails, no Makefile
Packit 6f02de
rule runs any other tests.
Packit 6f02de
Packit 6f02de
This test uses lsof to locate files in the lsof process, including
Packit 6f02de
current working directory, the lsof executable, and the /dev/kmem
Packit 6f02de
open file.
Packit 6f02de
Packit 6f02de
Finding the lsof executable may not be possible on AIX if lsof was
Packit 6f02de
compiled without support for its -X option.
Packit 6f02de
Packit 6f02de
Finding /dev/kmem use by lsof is only possible on dialects where
Packit 6f02de
lsof uses /dev/kmem.  The -DLT_KMEM define indicates that.
Packit 6f02de
Packit 6f02de
Run this test:
Packit 6f02de
Packit 6f02de
    $ ./LTbasic
Packit 6f02de
Packit 6f02de
Environment variables: LT_LSOF_PATH defines the path to the lsof
Packit 6f02de
		       executable.  (The default is ../lsof.)
Packit 6f02de
Packit 6f02de
G.2. LTbigf, Test Sizes and Offsets for Large (> 32 bit) Files
Packit 6f02de
==============================================================
Packit 6f02de
Packit 6f02de
This is a test in the optional test group.
Packit 6f02de
Packit 6f02de
This test is effective only when ../Configure has put -DLT_BIGF in
Packit 6f02de
config.cflags.  Without that definition this test simply reports
Packit 6f02de
that the dialect doesn't support large files.  That report is
Packit 6f02de
accompanied by a successful test exit code, so that the runner of
Packit 6f02de
the test (e.g., the Makefile) won't believe the test failed.
Packit 6f02de
Packit 6f02de
When a dialect does support large files, the test attempts to create
Packit 6f02de
a file that looks very large -- e.g., has a length as reported by
Packit 6f02de
ls(1) of 0x140000000 bytes.  However, the file really has only a
Packit 6f02de
small amount of data in it, the rest of the file consists of a
Packit 6f02de
large standard UNIX file system "hole."
Packit 6f02de
Packit 6f02de
By default the test file is named config.LTbigf<PID>, where PID is
Packit 6f02de
the Process ID of the LTbigf process.
Packit 6f02de
Packit 6f02de
When that file is not on a file system enabled for large files, or
Packit 6f02de
when the process that runs LTbigf can't create a big file, LTbigf
Packit 6f02de
will report an error.  The error will be accompanied by hints that
Packit 6f02de
the -p option may need to be used to define a path where the test
Packit 6f02de
can write a large file, or the process ulimit file block size may
Packit 6f02de
need to be raised -- e.g., to "unlimited."
Packit 6f02de
Packit 6f02de
LTbigf can't test file offset reporting on Linux kernels below
Packit 6f02de
2.6.22, because the /proc file systems of those kernels don't make
Packit 6f02de
file offsets available to lsof.
Packit 6f02de
Packit 6f02de
Run this test:
Packit 6f02de
Packit 6f02de
    $ ./LTbigf [-p <path>]
Packit 6f02de
Packit 6f02de
Environment variables: LT_LSOF_PATH defines the path to the lsof
Packit 6f02de
		       executable.  (The default is ../lsof.)
Packit 6f02de
Packit 6f02de
G.3. LTdnlc, Test the Kernel's Dynamic Name Lookup Cache
Packit 6f02de
========================================================
Packit 6f02de
Packit 6f02de
This is a test in the optional test group.
Packit 6f02de
Packit 6f02de
This test asks lsof to locate the current working directory of its
Packit 6f02de
own process and report the path it has assembled from the components
Packit 6f02de
it found in the kernel's Dynamic Name Lookup Cache (DNLC) or via
Packit 6f02de
other dialect-specific methods.  (E.g., Linux, HP-UX 11.11, and
Packit 6f02de
some Tru64 UNIX versions have private name lookup methods.)
Packit 6f02de
Packit 6f02de
The test checks what lsof reports as the current working directory
Packit 6f02de
path for any missing components and counts the number of full paths
Packit 6f02de
returned.  (Symbolic link complications prevent testing for exact
Packit 6f02de
path matches.)  The test is repeated.  If full paths are returned
Packit 6f02de
at least half the time, the test considers itself successful.
Packit 6f02de
Packit 6f02de
This test can't be run on AIX, because lsof can't access the DNLC
Packit 6f02de
there.  It can't be run on Apple Darwin versions below 8.0, either,
Packit 6f02de
because insufficiently reliable DNLC information is available there.
Packit 6f02de
This test may fail on other dialects when the file system -- e.g., NFS.
Packit 6f02de
/tmp, loopback -- doesn't fully participate in the dialect's DNLC.
Packit 6f02de
Packit 6f02de
Run this test:
Packit 6f02de
Packit 6f02de
    $ ./LTdnlc
Packit 6f02de
Packit 6f02de
Environment variables: LT_LSOF_PATH defines the path to the lsof
Packit 6f02de
		       executable.  (The default is ../lsof.)
Packit 6f02de
Packit 6f02de
G.4. LTlock, Lock Tests
Packit 6f02de
=======================
Packit 6f02de
Packit 6f02de
This is a test in the optional test group.
Packit 6f02de
Packit 6f02de
This test uses flock() and fcntl() to set and clear file locks,
Packit 6f02de
and measures lsof's ability to report them.  The choice of system
Packit 6f02de
lock call is based on the dialect.  (There are LT_DIAL_* pre-processor
Packit 6f02de
tests in LTlock.c.)
Packit 6f02de
Packit 6f02de
This test can't be run on an NFS client file system, because NFS
Packit 6f02de
lock information is kept on the server.  Lsof on the client can't
Packit 6f02de
see that server kernel data.
Packit 6f02de
Packit 6f02de
By default the test attempts to create a file named config.LTlock<PID>,
Packit 6f02de
where PID is the Process ID of the locking test process.  It uses
Packit 6f02de
lsof to determine if the file is on a client NFS file system.  If
Packit 6f02de
it is, the test aborts, hinting that the -p option can be used to
Packit 6f02de
specify a non-client-NFS test file path.
Packit 6f02de
Packit 6f02de
This test can't be run on Darwin, because insufficient file system
Packit 6f02de
lock information is available to lsof there.
Packit 6f02de
Packit 6f02de
Run this test:
Packit 6f02de
Packit 6f02de
    $ ./LTlock [-p <path>]
Packit 6f02de
Packit 6f02de
Environment variables: LT_LSOF_PATH defines the path to the lsof
Packit 6f02de
		       executable.  (The default is ../lsof.)
Packit 6f02de
Packit 6f02de
G.6. LTnfs, NFS Test
Packit 6f02de
====================
Packit 6f02de
Packit 6f02de
This is a test in the optional test group.
Packit 6f02de
Packit 6f02de
This test verifies that lsof can locate files mounted on a client
Packit 6f02de
NFS system from an NFS server.
Packit 6f02de
Packit 6f02de
By default it creates a test file, config.LTnfs<PID>, where PID is
Packit 6f02de
the Process ID of the test process.  The test then uses lsof to
Packit 6f02de
find the file on an NFS file system.
Packit 6f02de
Packit 6f02de
If lsof can't find the file the test warns that the test file might
Packit 6f02de
not be on an NFS file system and hints that the -p option may be
Packit 6f02de
used to specify the path of an NFS file, provided the test can have
Packit 6f02de
read access to it there.  The test warning also states that the
Packit 6f02de
file at the path specified with -p must be a regular file, not a
Packit 6f02de
directory.
Packit 6f02de
Packit 6f02de
This test can't be run on Darwin versions below 8.0, because
Packit 6f02de
insufficient NFS file information is available to lsof there.
Packit 6f02de
Packit 6f02de
Run this test:
Packit 6f02de
Packit 6f02de
    $ ./LTnfs [-p <path>]
Packit 6f02de
Packit 6f02de
Environment variables: LT_LSOF_PATH defines the path to the lsof
Packit 6f02de
		       executable.  (The default is ../lsof.)
Packit 6f02de
Packit 6f02de
G.7. LTnlink, Link Count Test
Packit 6f02de
=============================
Packit 6f02de
Packit 6f02de
This is a test in the standard test group.
Packit 6f02de
Packit 6f02de
The test checks lsof's reporting of link count (nlink in UNIX
Packit 6f02de
argot.)
Packit 6f02de
Packit 6f02de
It creates a test file in the current working directory named
Packit 6f02de
config.LTnlink<PID>, where  PID is the Process ID of the test
Packit 6f02de
process.  It then uses stat(2) and lsof to measure the link count
Packit 6f02de
of the file.
Packit 6f02de
Packit 6f02de
If LTnlink creates the test file in the current working directory
Packit 6f02de
and it is on an NFS file system, LTnlink won't be able to perform
Packit 6f02de
one section of its test.  In that section the test file is unlinked
Packit 6f02de
so its link count will be zero and lsof is asked to find it among
Packit 6f02de
the set of files whose link counts are zero.
Packit 6f02de
Packit 6f02de
When an NFS file is unlinked its link count isn't reduced until
Packit 6f02de
the last open instance is closed on either the NFS clients or the
Packit 6f02de
NFS.  That's a consequence of NFS statelessness and leads to the
Packit 6f02de
occasional presence of files with names of the form .nfsxxxx.
Packit 6f02de
Packit 6f02de
Should LTnlink find its test file on an NFS file system, it disables
Packit 6f02de
the unlink section of its tests and issues a warning.  It also
Packit 6f02de
issues a hint that the test file path can be named via the -p option
Packit 6f02de
to give a test file location that isn't on an NFS file system.
Packit 6f02de
Packit 6f02de
This test can't be run on Darwin, because insufficient file system link
Packit 6f02de
count information is available to lsof there.
Packit 6f02de
Packit 6f02de
Because some UNIX dialects delay the reporting of a link count
Packit 6f02de
update after a file has been unlinked, LTnlink may not get its
Packit 6f02de
expected response from lsof for a while after the test file has
Packit 6f02de
been unlinked.  In that cause LTnlink may delay for up to a minute,
Packit 6f02de
calling lsof once every two seconds and displaying a "waiting for
Packit 6f02de
link count update: ..." message.
Packit 6f02de
Packit 6f02de
Some file systems -- e.g., ZFS on Solaris 11 -- don't allow LTnlink to
Packit 6f02de
unlink its test file, because LTnlink has the file open.  LTnlink
Packit 6f02de
explains that failure and suggests that it be run with path of the "-p
Packit 6f02de
path" option set to a file on /tmp.  See 00FAQ for more information.
Packit 6f02de
Packit 6f02de
Run this test:
Packit 6f02de
Packit 6f02de
    $ ./LTnlink [-p <path>]
Packit 6f02de
Packit 6f02de
Environment variables: LT_LSOF_PATH defines the path to the lsof
Packit 6f02de
		       executable.  (The default is ../lsof.)
Packit 6f02de
Packit 6f02de
G.7. LTsock, Test IPv4 Sockets
Packit 6f02de
==============================
Packit 6f02de
Packit 6f02de
This is a test in the standard test group.
Packit 6f02de
Packit 6f02de
This test uses lsof to locate open IPv4 socket files that the test
Packit 6f02de
has created itself.  The test opens a server socket, then forks a
Packit 6f02de
child process to connect to that socket.  After both are running,
Packit 6f02de
the test uses lsof to find the open socket files at their known
Packit 6f02de
host and port addresses.
Packit 6f02de
Packit 6f02de
Run this test:
Packit 6f02de
Packit 6f02de
    $ ./LTsock
Packit 6f02de
Packit 6f02de
Environment variables: LT_LSOF_PATH defines the path to the lsof
Packit 6f02de
		       executable.  (The default is ../lsof.)
Packit 6f02de
Packit 6f02de
G.8. LTszoff, Test Sizes and Offsets for Small (< 32 bit) Files
Packit 6f02de
===============================================================
Packit 6f02de
Packit 6f02de
This is a test in the standard test group.
Packit 6f02de
Packit 6f02de
This test checks lsof's reporting of file size and offset for small
Packit 6f02de
(< 32 bits) files.
Packit 6f02de
Packit 6f02de
It creates a test file in the current working directory named
Packit 6f02de
config.LTszoff<PID>.  PID is the Process ID of the test process.
Packit 6f02de
Packit 6f02de
LTszoff can't test file offset reporting on Linux kernels below
Packit 6f02de
2.6.22, because the /proc file systems of those kernels don't make
Packit 6f02de
file offsets available to lsof.
Packit 6f02de
Packit 6f02de
Run this test:
Packit 6f02de
Packit 6f02de
    $ ./LTszoff [-p <path>]
Packit 6f02de
Packit 6f02de
Environment variables: LT_LSOF_PATH defines the path to the lsof
Packit 6f02de
		       executable.  (The default is ../lsof.)
Packit 6f02de
Packit 6f02de
G.9.  LTunix, Test UNIX Domain Sockets
Packit 6f02de
======================================
Packit 6f02de
Packit 6f02de
This is a test in the standard test group.
Packit 6f02de
Packit 6f02de
This test checks lsof's reporting of UNIX domain sockets.
Packit 6f02de
Packit 6f02de
The test creates a pair of UNIX domain sockets and uses bind(2) to
Packit 6f02de
associate the file system names config.LT0U<PID> (client) and
Packit 6f02de
config.LT1U<PID> (server) with them.  (PID is the test process ID.)
Packit 6f02de
The test then uses lsof to find the two open UNIX domain socket
Packit 6f02de
files.
Packit 6f02de
Packit 6f02de
Run this test:
Packit 6f02de
Packit 6f02de
    $ ./LTunix
Packit 6f02de
Packit 6f02de
Environment variables: LT_LSOF_PATH defines the path to the lsof
Packit 6f02de
		       executable.  (The default is ../lsof.)
Packit 6f02de
Packit 6f02de
Packit 6f02de
Appendix A, Test Files
Packit 6f02de
======================
Packit 6f02de
Packit 6f02de
These files may be created by suite tests.
Packit 6f02de
Packit 6f02de
			Created
Packit 6f02de
    ./tests Name	by Test	    Use
Packit 6f02de
    ============	=======	    ===
Packit 6f02de
Packit 6f02de
    config.LTbifg**     LTbigf      to test lsof's large file size
Packit 6f02de
				    and offset reporting
Packit 6f02de
Packit 6f02de
    config.LTlock*	LTlock	    for locking tests
Packit 6f02de
Packit 6f02de
    config.LTnfs*	LTnfs	    for NFS tests
Packit 6f02de
Packit 6f02de
    config.LTnlink*	LTnlink	    for link count tests
Packit 6f02de
Packit 6f02de
    config.LTszoff*     LTszoff     for small file size and and
Packit 6f02de
				    offset reporting
Packit 6f02de
Packit 6f02de
    config.LT[01]U*     LTunix      two UNIX domain sockets, used
Packit 6f02de
				    to determine if lsof can report
Packit 6f02de
				    their open instances properly
Packit 6f02de
Packit 6f02de
Packit 6f02de
Appendix B, Test Validations
Packit 6f02de
============================
Packit 6f02de
Packit 6f02de
This appendix lists the UNIX dialects and their versions where I
Packit 6f02de
have validated the test suite.  The list indicates the particular
Packit 6f02de
tests I was unable to run, mostly LTnfs because the test systems
Packit 6f02de
I used had no NFS file systems mounted.
Packit 6f02de
Packit 6f02de
The information in the following table is encoded in a test data
Packit 6f02de
base file, TestDB, as footprints, using the tests compiler options
Packit 6f02de
written to config.cflags by the lsof Configure script.  See "B.2.
Packit 6f02de
Test Data Base and Scripts" for more information on the test data
Packit 6f02de
base, footprints, and the scripts that support them.
Packit 6f02de
Packit 6f02de
    UNIX
Packit 6f02de
    Dialect	  Dialect Description		Untested Tests
Packit 6f02de
    ======= 	  ===================		==============
Packit 6f02de
    AIX		  4.3.3, Power, cc
Packit 6f02de
		  5.1, Power-32, cc
Packit 6f02de
		  5.1, Power-32, gcc
Packit 6f02de
		  5.1, Power-64, cc
Packit 6f02de
		  5.2, Power-32, cc
Packit 6f02de
		  5.2, Power-32, gcc
Packit 6f02de
		  5.2, Power-64, cc
Packit 6f02de
		  5.2, Power-64, gcc
Packit 6f02de
		  5.3, Power-64, cc
Packit 6f02de
    Darwin        1.4, 5.5, 6.x, 7.x gcc	Darwin lsof doesn't
Packit 6f02de
						have adequate support
Packit 6f02de
						to allow the LTbigf,
Packit 6f02de
						Ltdnlc, LTlock, LTnfs,
Packit 6f02de
						and LTnlink tests to
Packit 6f02de
						run.
Packit 6f02de
		  8.0, gcc			Darwin lsof doesn't
Packit 6f02de
						have adequate support
Packit 6f02de
						to allow the LTbigf,
Packit 6f02de
						LTlock and LTnlink
Packit 6f02de
						tests to run.
Packit 6f02de
		  9.0, gcc			Darwin lsof doesn't
Packit 6f02de
						have adequate support
Packit 6f02de
						to allow the LTlock
Packit 6f02de
						test to run.
Packit 6f02de
		  10.0, gcc			Darwin lsof doesn't
Packit 6f02de
						have adequate support
Packit 6f02de
						to allow the LTlock test
Packit 6f02de
						to run.
Packit 6f02de
		  11.0, gcc			Darwin lsof doesn't
Packit 6f02de
						have adequate support
Packit 6f02de
						to allow the LTlock test
Packit 6f02de
						to run.
Packit 6f02de
    FreeBSD       4.5, i386, gcc
Packit 6f02de
		  4.6, i386, gcc
Packit 6f02de
		  4.7, i386, gcc
Packit 6f02de
		  4.8, i386, gcc
Packit 6f02de
		  4.9, i386, gcc
Packit 6f02de
		  4.10, i386 gcc
Packit 6f02de
		  5.0, Alpha, gcc
Packit 6f02de
		  5.0, Sparc, gcc
Packit 6f02de
		  5.0, i386, gcc
Packit 6f02de
		  5.1, Alpha, gcc
Packit 6f02de
		  5.1, Amd64, gcc
Packit 6f02de
		  5.1, Sparc, gcc
Packit 6f02de
		  5.1, i386, gcc
Packit 6f02de
		  5.2, i386, gcc
Packit 6f02de
		  5.2, Alpha, gcc
Packit 6f02de
		  5.2, Amd64, gcc
Packit 6f02de
		  5.2, Sparc, gcc
Packit 6f02de
		  5.3, Alpha, gcc
Packit 6f02de
		  5.4, Alpha, gcc
Packit 6f02de
		  5.5, Alpha, gcc
Packit 6f02de
		  6.0, Alpha, gcc
Packit 6f02de
		  6.0, Amd64, gcc
Packit 6f02de
		  6.0, Sparc, gcc
Packit 6f02de
		  6.1, i386, gcc
Packit 6f02de
		  6.4, i386, gcc
Packit 6f02de
		  7.0 Alpha, gcc
Packit 6f02de
		  7.0 Amd64, gcc
Packit 6f02de
		  7.1 Amd64, gcc
Packit 6f02de
		  7.2 Amd64, gcc
Packit 6f02de
		  7.3 Amd64, gcc
Packit 6f02de
		  7.4 Amd64, gcc
Packit 6f02de
		  8.0 Amd64, gcc
Packit 6f02de
		  8.2 Amd64, gcc
Packit 6f02de
		  8.3 Amd64, gcc
Packit 6f02de
		  8.4 Amd64, gcc
Packit 6f02de
		  9.0 Amd64, gcc
Packit 6f02de
		 10.0 Amd64, gcc
Packit 6f02de
		 10.0 Amd64, clang
Packit 6f02de
		 11.0 Amd64, clang
Packit 6f02de
		 12.0 Amd64, clang
Packit 6f02de
    DEC OSF/1	  4.0, cc
Packit 6f02de
    HP-UX	  10.20, cc			LTbigf
Packit 6f02de
		  10.20, gcc (1)		LTbigf
Packit 6f02de
		  11.00-32, ANSI-C		LTbigf, LTnfs
Packit 6f02de
		  11.00-64, ANSI-C
Packit 6f02de
		  11.11, ANSI-C
Packit 6f02de
		  11.23, ANSI-C
Packit 6f02de
    Linux         2.4.12-686            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.4.18-686            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.4.21-686            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.4.23-686            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.4.24-686            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.4.25-686            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.4.26-686            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.4.27-686            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.4.28-686            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.4.29-686            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.4.30-686            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.6.1-rc2	            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.6.18-686	            	LTbigf, no offset tests
Packit 6f02de
						LTszoff, no offset tests
Packit 6f02de
		  2.6.22-686			(Note: this Linux kernel
Packit 6f02de
						 supplies file offsets to
Packit 6f02de
						 lsof.)
Packit 6f02de
		  2.6.32-686			(Note: this Linux kernel
Packit 6f02de
						 supplies file offsets to
Packit 6f02de
						 lsof.)
Packit 6f02de
		  2.6.38-686
Packit 6f02de
		  3.10.004
Packit 6f02de
		  3.10.08
Packit 6f02de
		  4.14.14
Packit 6f02de
		  3.10.0-229.1.2.el7
Packit 6f02de
    NEXTSTEP      3.1, gcc                   	LTnfs
Packit 6f02de
    NetBSD        1.4.1, Alpha, gcc          	LTnfs
Packit 6f02de
		  1.5x, x86, gcc           	LTnfs
Packit 6f02de
		  1.6x, Alpha, gcc		LTnfs
Packit 6f02de
		  1.6x, x86, gcc		LTnfs
Packit 6f02de
		  2.0x, alpha, gcc		LTnfs
Packit 6f02de
		  2.0x, sparc64, gcc		LTnfs
Packit 6f02de
		  2.0x, x86, gcc		LTnfs
Packit 6f02de
		  2.99.9, x86, gcc		LTnfs
Packit 6f02de
		  2.99.10, x86, gcc		LTnfs
Packit 6f02de
		  2.99.11, x86, gcc		LTnfs
Packit 6f02de
		  2.99.12, x86, gcc		LTnfs
Packit 6f02de
		  3.99., x86, gcc		LTnfs
Packit 6f02de
    OpenBSD       3.0, gcc
Packit 6f02de
		  3.1, gcc
Packit 6f02de
		  3.2, gcc
Packit 6f02de
		  3.3, gcc
Packit 6f02de
		  3.4, gcc
Packit 6f02de
		  3.5, gcc
Packit 6f02de
		  3.6, gcc
Packit 6f02de
		  3.7, gcc
Packit 6f02de
		  3.9, gcc
Packit 6f02de
    OPENSTEP	  4.2, gcc			LTnfs
Packit 6f02de
    OSR           5.04, cc              	LTnfs
Packit 6f02de
		  5.06, cc              	LTnfs
Packit 6f02de
    Solaris       2.6, cc			LTnfs
Packit 6f02de
		  2.6, gcc			LTnfs
Packit 6f02de
		  7-32, cc
Packit 6f02de
		  7-32, gcc			LTnfs
Packit 6f02de
		  8-32, cc
Packit 6f02de
		  8-32, gcc
Packit 6f02de
		  8-64, cc
Packit 6f02de
		  8-64, gcc
Packit 6f02de
		  9-64, Beta-Refresh, cc
Packit 6f02de
		  9-64, Beta-Refresh, gcc
Packit 6f02de
		  9-64, FCS, cc
Packit 6f02de
		  9-64, FCS, gcc
Packit 6f02de
		  10-32, i86pc, gcc
Packit 6f02de
		  10-32, i86pc, cc
Packit 6f02de
		  10-64, Sparc, cc
Packit 6f02de
		  10-64, Sparc, gcc
Packit 6f02de
		  11-64, Amd64, cc
Packit 6f02de
    Tru64 UNIX    5.0, cc
Packit 6f02de
    Tru64 UNIX    5.0, cc
Packit 6f02de
		  5.1, cc
Packit 6f02de
    UnixWare      7.1.1, NSC, cc            	LTnfs
Packit 6f02de
		  7.1.3, cc
Packit 6f02de
		  7.1.4, cc
Packit 6f02de
Packit 6f02de
If you are able to run the test suite on dialect versions other
Packit 6f02de
than the ones listed above, please send e-mail to <abe@purdue.edu>,
Packit 6f02de
indicating the dialect version where you were able to run the test
Packit 6f02de
suite.  Please send me the footprint formed by CkTestDB, or run
Packit 6f02de
the Add2TestDB script and send me the footprint it reports.
Packit 6f02de
Packit 6f02de
If you encounter problems compiling the tests or running them on
Packit 6f02de
a dialect version listed above, please send e-mail to <abe@purdue.edu>,
Packit 6f02de
naming the dialect version and providing the output from the lsof
Packit 6f02de
Configure script and make operation.
Packit 6f02de
Packit 6f02de
1) John Dzubera did the HP-UX 10.20 gcc testing and provided its
Packit 6f02de
   footprint.
Packit 6f02de
Packit 6f02de
Packit 6f02de
Appendix C, Test Failures
Packit 6f02de
=========================
Packit 6f02de
Packit 6f02de
I was unable to make the test suite run on the following dialects.
Packit 6f02de
Packit 6f02de
    UNIX Dialect
Packit 6f02de
    and Description	 Failure
Packit 6f02de
    ===============	 =======
Packit 6f02de
    HP-UX 11-64, gcc     64 bit gcc 3.0 didn't compile the LTsock
Packit 6f02de
			 test correctly on my 64 bit HP-UX 11 test
Packit 6f02de
			 system.
Packit 6f02de
Packit 6f02de
Packit 6f02de
Vic Abell <abe@purdue.edu>
Packit 6f02de
February 14, 2018