summaryrefslogtreecommitdiff
path: root/qa/README
diff options
context:
space:
mode:
Diffstat (limited to 'qa/README')
-rw-r--r--qa/README227
1 files changed, 227 insertions, 0 deletions
diff --git a/qa/README b/qa/README
new file mode 100644
index 0000000..8bb9edd
--- /dev/null
+++ b/qa/README
@@ -0,0 +1,227 @@
+Notes on using the PCP QA Suite
+===============================
+
+Preliminaries
+-------------
+
+ PCP needs to be installed on the local host, with pmcd operational.
+ The sample PMDA needs to be installed.
+
+Basic getting started
+---------------------
+
+ There is some local configuration needed ... check the file
+ "common.config" ... this script uses heuristics to set a number of
+ interesting variables, specifically:
+
+ $PCPQA_CLOSE_X_SERVER
+ The $DISPLAY setting for an X server that is willing to accept
+ connections from X clients running on the local machine.
+
+ $PCPQA_FAR_PMCD
+ The hostname for a host running pmcd, but the host is preferably a
+ long way away (over a WAN) for timing test.
+
+ $PCPQA_HYPHEN_HOST
+ The hostname for a host running pmcd, with a hyphen (-) in the
+ hostname.
+
+ Next, mk.qa_hosts is a script that includes heuristics for selecting and
+ sorting the list of potential remote PCP QA hosts (qa_hosts.master).
+ Refer to the comments in qa_hosts.master, and make appropriate changes.
+
+ For each of the potential remote PCP QA hosts, the following must be
+ set up:
+
+ (a) PCP installed,
+ (b) pmcd(1) running,
+ (c) a login for the user "pcpqa" needs to be created, and then set
+ up in such a way that ssh/scp will work without the need for any
+ password, i.e. these sorts of commands
+ $ ssh pcpqa@pcp-qa-host some-command
+ $ scp some-file pcpqa@pcp-qa-host:some-dir
+ must work correctly when run from the local host.
+ The "pcpqa" user's environment must also be initialized
+ so that their shell's path includes all of the PCP binary
+ directories, so that all PCP commands are executable without
+ full pathnames. Of most concern would be auxilliary directory
+ (usually /usr/pcp/bin, /usr/share/pcp/bin or /usr/libexec/pcp/bin)
+ where commands like pmlogger(1), pmhostname(1), mkaf(1), etc.) are
+ installed.
+
+ Once you've modified common.config and qa_hosts.master, then run
+ "chk.setup" to validate the settings.
+
+ For test 051 we need five local hostnames that are valid, although
+ PCP does not need to be installed there, nor pmcd(1) running. The
+ five hosts listed in 051.hosts (the comments at the start of this
+ file explain what is required) should suffice for most installations.
+
+ The PCP QA tests are designed to be run by a non-root user. Where
+ root privileges are needed, e.g. to stop or start pmcd, install/remove
+ PMDAs, etc. the "sudo" application is used. When using sudo for QA,
+ your local or pcpqa user needs to be able to execute commands as root
+ without being prompted for a password. This can be achieved by adding
+ the following line to the /etc/sudoers file (or in more recent versions
+ of sudo, a /etc/sudoers.d/pcpqa file):
+
+ pcpqa ALL=(ALL) NOPASSWD: ALL
+
+ Some tests are graphical, and wish to make use of your display.
+ For authentication to success, you may find you need to perform
+ some access list updates, e.g. "xhost +local:" for such tests to
+ pass (e.g. test 325).
+
+ You can now verify your QA setup, by running:
+
+ ./check 000
+
+ The first time you run "check" (see below) it will descend into the
+ src directory (see below) and make all of the QA test programs and
+ dynamic PCP archives, so some patience may be required.
+
+ If test 000 fails, it may be that you have locally developed PMDAs or
+ optional PMDAs installed. Edit common.filter, and modify the
+ _filter_top_pmns() procedure to strip the top-level name components for
+ any new metric names (there are lots of examples already there) ... if
+ these are distributed PMDAs, you should send patches back to
+ pcp@mail.performancecopilot.org.
+
+
+Doing the Real Work
+-------------------
+
+
+ check ...
+ This script runs tests and verifies the output. In general,
+ test NNN is expected to terminate with an exit status of 0,
+ no core file and produce output that matches that in the file
+ NNN.out ... failures leave the current output in NNN.out.bad,
+ and may leave a more verbose trace that is useful for diagnosing
+ failures in NNN.full.
+
+ The command line options to check are:
+
+ NNN run test NNN (leading zeros will be added as necessary
+ to the test sequence number, so 00N and N are equivalent)
+
+ NNN- all tests >= NNN
+
+ NNN-MMM all tests in the range NNN ... MMM
+
+ -l diffs in line mode (the default is to use xdiff or similar)
+
+ -n show me, do not run any tests
+
+ -q quick mode, by-pass the initial setup integrity checks
+ (recommended that you do not use this the first time, nor
+ if the last run test failed)
+
+ -g xxx include tests from a named group (xxx) ... refer to the
+ "groups" file
+
+ -x xxx exclude tests from a named group (xxx) ... refer to the
+ "groups" file
+
+ If none of the NNN variants or -g is specified, then the default
+ is to run all tests.
+
+ Each of the NNN scripts that may be run by check follows the
+ same basic scheme:
+
+ - include some optional shell procedures and set variables to
+ define the local configuration options
+ - optionally, check the run-time environment to see if it makes
+ sense to run the test at all, and if not echo the reason to the
+ file NNN.notrun and exit ... check will notice the NNN.notrun
+ file and skip any testing of the exit status or comparison
+ of output
+ - define $tmp as a prefix to be used for all temporary files, and
+ install a trap handler to remove temporary files when the scipt
+ exits
+ - optionally, check the run-time environment to choose one of
+ a number of expected output formats, and link the selected
+ file to NNN.out ... if the same output is expected in all
+ environments, the NNN.out file will already exist as part of
+ the PCP QA distribution
+ - run the test
+ - optionally save all the output in the file NNN.full ... this
+ is only useful for debugging test failures
+ - filter the output to produce deterministic output that will
+ match NNN.out if the test has been successful
+
+ remake NNN
+ This script creates a new NNN.out file. Since the NNN.out files
+ are precious, and reflect the state of the qualified and expected
+ output, they should typically not be changed unless some change
+ has been made to the NNN script or the filters it uses.
+
+ new
+ Make sure "group" is writeable, then run "new" to
+ create the skeletal framework of a new test.
+
+ It is strongly suggested that you base your test on an existing test
+ ... pay particular attention to making the output deterministic so
+ the test uses the "not run" protocols (see 009 and check for
+ examples) to avoid running the test (and hence failing) if an
+ optional application, feature or platform is not available, and uses
+ appropriate filters (see common.filter for lots of useful filters
+ already packaged as shell procedures).
+
+ show-me ...
+ Report differences between the NNN.out and NNN.out.bad files.
+ By default, uses all of the NNN.out.bad files in the current
+ directory, but can also specify test numbers or ranges of test
+ numbers on the command line.
+
+ Other options may be used to fetch good and bad output files from
+ various exotic remote locations (refer to the script).
+
+
+Make in the src Directory
+-----------------------------
+
+ The src directory contains a number of test applications that are
+ designed to exercise some of the more exotic corners of the PCP
+ functionality.
+
+ In making these applications, you may see this ...
+
+ Error: trace_dev.h and ../../src/include/trace_dev.h are different!
+ make: [trace_dev.h] Error 1 (ignored)
+
+ this is caused by the source for the pcp_trace library being out of sync
+ with the src applications. If this happens, please ...
+
+ 1. cd src
+ 2. diff -u trace_dev.h ../../src/include/trace_dev.h
+ and mail the differences to pcp@mail.performancecopilot.org so we can
+ refine the Makefiles to avoid cosmetic differences
+ 3. mv trace_dev.h trace_dev.h.orig
+ cp ../../src/include/trace_dev.h trace_dev.h
+ 4. make
+
+
+008 Issues
+----------
+
+ Test 008 depends on the local disk configuration, so you need to make
+ your own 008.out file (or rather a variant that 008 will link to 008.out
+ when the test is run). Refer to the 008 script, but here is the basic
+ recipe:
+
+ $ touch touch 008.out.`hostname`
+ $ remake 008
+ $ mv 008.out 008.out.`hostname`
+
+ Be aware that it can be adversely influenced by temporary disks like USB
+ sticks, mobile phones, or other transient storage that may come and go in
+ your test systems.
+
+
+Fixes
+-----
+
+ If you find something that does not work, and fix it, or create additional
+ QA tests, please send the details to pcp@mail.performancecopilot.org.
+