mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-12-30 04:33:01 +00:00
Original GNO code for kill tests from Dave Tribby
This commit is contained in:
parent
de6388b9b9
commit
888214a8bd
10
bin/kill/tests/Makefile
Normal file
10
bin/kill/tests/Makefile
Normal file
@ -0,0 +1,10 @@
|
||||
#
|
||||
# This makefile is intended for use with dmake(1) on Apple IIGS
|
||||
# $Id: Makefile,v 1.1 1998/02/08 23:47:08 tribby Exp $
|
||||
#
|
||||
# Created by Dave Tribby, January 1998
|
||||
|
||||
PROG= handlesigs
|
||||
|
||||
CFLAGS = -v
|
||||
.INCLUDE : /src/gno/prog.mk
|
100
bin/kill/tests/dotests
Normal file
100
bin/kill/tests/dotests
Normal file
@ -0,0 +1,100 @@
|
||||
# Tests for kill command; invoked by command file "fulltests"
|
||||
# Written by Dave Tribby (January 1998)
|
||||
# $Id: dotests,v 1.1 1998/02/08 23:47:10 tribby Exp $
|
||||
|
||||
# Location of the kill command to be tested
|
||||
set testcmd="../kill"
|
||||
|
||||
# Record starting time
|
||||
echo -n "Testing command $testcmd beginning at"
|
||||
date
|
||||
|
||||
set cmp="sigout.list"
|
||||
set dest="/tmp/$cmp"
|
||||
set cmdname="/tmp/testsigs"
|
||||
set testprog="./handlesigs"
|
||||
echo "Starting process ($testprog) that will handle signals"
|
||||
echo "### NOTE: The non-error tests cannot be run because gsh will not"
|
||||
echo "### put the test program ($testprog) in the background."
|
||||
echo "### The following steps do work if run manually..."
|
||||
echo "### $testprog $testcmd $cmdname > $dest & "
|
||||
echo "### sleep 10"
|
||||
### echo "Sending all legal signals to $testprog via script $cmdname"
|
||||
echo "### chtyp -l exec $cmdname"
|
||||
echo "### $cmdname"
|
||||
### echo "Checking results against control file $cmp (no differences expected)"
|
||||
echo "### cmp $cmp $dest"
|
||||
### echo " Completion status = $status"
|
||||
echo "### Completion status = cannot run test from gsh ###"
|
||||
echo ""
|
||||
|
||||
set cmp="signame.list"
|
||||
set dest="/tmp/$cmp"
|
||||
echo "Getting list of legal signal names"
|
||||
$testcmd -l > $dest
|
||||
echo "Checking results against control file $cmp (no differences expected)"
|
||||
cmp $cmp $dest
|
||||
echo " Completion status = $status"
|
||||
echo ""
|
||||
|
||||
set cmp="signames.list"
|
||||
set dest="/tmp/$cmp"
|
||||
echo "Getting list of legal signal names, one at a time"
|
||||
$testcmd -l 1 > $dest
|
||||
$testcmd -l 2 >> $dest
|
||||
$testcmd -l 3 >> $dest
|
||||
$testcmd -l 4 >> $dest
|
||||
$testcmd -l 5 >> $dest
|
||||
$testcmd -l 6 >> $dest
|
||||
$testcmd -l 7 >> $dest
|
||||
$testcmd -l 8 >> $dest
|
||||
$testcmd -l 9 >> $dest
|
||||
$testcmd -l 10 >> $dest
|
||||
$testcmd -l 11 >> $dest
|
||||
$testcmd -l 12 >> $dest
|
||||
$testcmd -l 13 >> $dest
|
||||
$testcmd -l 14 >> $dest
|
||||
$testcmd -l 15 >> $dest
|
||||
$testcmd -l 16 >> $dest
|
||||
$testcmd -l 17 >> $dest
|
||||
$testcmd -l 18 >> $dest
|
||||
$testcmd -l 19 >> $dest
|
||||
$testcmd -l 20 >> $dest
|
||||
$testcmd -l 21 >> $dest
|
||||
$testcmd -l 22 >> $dest
|
||||
$testcmd -l 23 >> $dest
|
||||
$testcmd -l 24 >> $dest
|
||||
$testcmd -l 25 >> $dest
|
||||
$testcmd -l 26 >> $dest
|
||||
$testcmd -l 27 >> $dest
|
||||
$testcmd -l 28 >> $dest
|
||||
$testcmd -l 29 >> $dest
|
||||
$testcmd -l 30 >> $dest
|
||||
$testcmd -l 31 >> $dest
|
||||
echo "Checking results against control file $cmp (no differences expected)"
|
||||
cmp $cmp $dest
|
||||
echo " Completion status = $status"
|
||||
echo ""
|
||||
|
||||
|
||||
echo "***** Error Messages *****"
|
||||
|
||||
echo ""
|
||||
echo "Expected error: unknown signal (number)"
|
||||
$testcmd -500 123
|
||||
echo " Error completion status = $status (expected: 1)"
|
||||
|
||||
echo ""
|
||||
echo "Expected error: unknown signal (number)"
|
||||
$testcmd -l 500
|
||||
echo " Error completion status = $status (expected: 1)"
|
||||
|
||||
echo ""
|
||||
echo "Expected error: unknown signal (name)"
|
||||
$testcmd -bogus 123
|
||||
echo " Error completion status = $status (expected: 1)"
|
||||
|
||||
echo ""
|
||||
echo "Expected error: illegal process id"
|
||||
$testcmd -1 bad_id
|
||||
echo " Error completion status = $status (expected: 1)"
|
29
bin/kill/tests/fulltests
Normal file
29
bin/kill/tests/fulltests
Normal file
@ -0,0 +1,29 @@
|
||||
# gsh script to run tests and collect results
|
||||
# Written by Dave Tribby * August 1997
|
||||
# $Id: fulltests,v 1.1 1998/02/08 23:47:12 tribby Exp $
|
||||
|
||||
# Name of gsh script containing test cases
|
||||
set command="dotests"
|
||||
# Sometimes the file type is modified by editing; make it executable
|
||||
chtyp -l exec $command
|
||||
|
||||
# Filenames for raw and modified results
|
||||
set raw_file="/tmp/rawlist"
|
||||
set result_file="test.list"
|
||||
|
||||
# Location of tr command that knows how to handle classes
|
||||
set trcmd="/src/gno/usr.bin/tr/tr"
|
||||
|
||||
# --- Begin the tests ---
|
||||
|
||||
echo -n "Executing test script \"$command\" from directory "
|
||||
pwd
|
||||
|
||||
# Create a new gsh invocation and record all I/O
|
||||
echo "$command ; exit" | script $raw_file
|
||||
|
||||
# Cleanup control chars using either of the following...
|
||||
echo "Done with tests. Removing control characters from results file"
|
||||
$trcmd -c -ds '[:print:]\r' '\r' < $raw_file > $result_file
|
||||
|
||||
echo "Tests results have been saved as \"$result_file\""
|
122
bin/kill/tests/handlesigs.c
Normal file
122
bin/kill/tests/handlesigs.c
Normal file
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* handlesigs: a test program for GNO that waits for signals.
|
||||
* It is designed to be run in the background and takes two optional
|
||||
* parameters: location of kill command and name of test script to be
|
||||
* created. From the shell do something like this:
|
||||
*
|
||||
* handlesigs ../kill /tmp/testsigs > /tmp/siglist &
|
||||
* sleep 10
|
||||
* chtyp -l exec /tmp/testsigs
|
||||
* /tmp/testsigs
|
||||
* cat /tmp/siglist
|
||||
*
|
||||
* (See the script /src/gno/bin/kill/tests/dotests.)
|
||||
*
|
||||
* Written by Dave Tribby beginning January 20, 1998
|
||||
* $Id: handlesigs.c,v 1.1 1998/02/08 23:47:13 tribby Exp $
|
||||
*/
|
||||
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
#include <gno/gno.h>
|
||||
#include <unistd.h>
|
||||
|
||||
/* Program name */
|
||||
char *prog_name;
|
||||
/* GNO process ID */
|
||||
pid_t process_id;
|
||||
/* Received signal */
|
||||
int received_sig=0;
|
||||
|
||||
|
||||
/*
|
||||
* GNO Signal handler routine
|
||||
*/
|
||||
#pragma databank 1
|
||||
void SigHandler(int sig, int code)
|
||||
{
|
||||
/* Keep it simple: just set global variable */
|
||||
received_sig = sig;
|
||||
}
|
||||
#pragma databank 0
|
||||
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
/* Command-line parameters and their default values */
|
||||
char *def_cmdname="../kill", *cmdname=def_cmdname;
|
||||
char *def_cmdfile="/tmp/killtest", *cmdfile=def_cmdfile;
|
||||
|
||||
int i;
|
||||
sig_t *sig_rtnval;
|
||||
FILE *cf;
|
||||
|
||||
/* Get parameters: program name, location of kill command, */
|
||||
/* and name of command script to be created. */
|
||||
prog_name = argv[0];
|
||||
if (argc > 1)
|
||||
cmdname = argv[1];
|
||||
if (argc > 2)
|
||||
cmdfile = argv[2];
|
||||
|
||||
/* Are we running under the GNO kernel? */
|
||||
if ( !needsgno() ) {
|
||||
fprintf(stderr, "ERROR: %s can only run under the GNO kernel!\n", prog_name);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Install the GNO signal handler for all possible signals */
|
||||
fprintf(stderr,"Installing GNO signal handler routine for all interrupts...\n");
|
||||
for (i = 1; i < NSIG; i++) {
|
||||
sig_rtnval = signal(i, SigHandler);
|
||||
}
|
||||
|
||||
/* Get process ID */
|
||||
process_id = getpid();
|
||||
|
||||
/* Create file to send test signals */
|
||||
fprintf(stderr, "Creating test command file %s\n", cmdfile);
|
||||
if ((cf = fopen(cmdfile, "w")) == NULL)
|
||||
err(1, "%s", cmdfile);
|
||||
|
||||
/* Send the default signal (15) */
|
||||
fprintf(cf, "%s %d\n", cmdname,process_id);
|
||||
/* Send all the legal signals, using alternate formats for first two */
|
||||
for (i = 1; i < NSIG; i++) {
|
||||
switch (i) {
|
||||
case 1:
|
||||
fprintf(cf, "%s -s %s %d\n", cmdname,sys_signame[i],process_id);
|
||||
break;
|
||||
case 2:
|
||||
fprintf(cf, "%s -%s %d\n", cmdname,sys_signame[i],process_id);
|
||||
/* Leave out the signals that mess up the tests! */
|
||||
case 9:
|
||||
case 17:
|
||||
case 18:
|
||||
case 19:
|
||||
break;
|
||||
default:
|
||||
fprintf(cf, "%s -%d %d\n", cmdname,i,process_id);
|
||||
}
|
||||
}
|
||||
/* Make KILL (9) the last signal sent */
|
||||
fprintf(cf, "%s -s KILL %d\n", cmdname,process_id);
|
||||
fclose(cf);
|
||||
|
||||
/* Hang around waiting for a signal */
|
||||
fprintf(stderr, "Waiting for a signal to occur. To terminate, use\n");
|
||||
fprintf(stderr, " kill -s KILL %d\n", process_id);
|
||||
while (1) {
|
||||
procreceive();
|
||||
printf("Program %s received signal %2d", prog_name, received_sig);
|
||||
if (received_sig <= NSIG) printf(" (%s)", sys_signame[received_sig]);
|
||||
printf("\n");
|
||||
received_sig = 0;
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
30
bin/kill/tests/handlesigs.rez
Normal file
30
bin/kill/tests/handlesigs.rez
Normal file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Resources for version and comment
|
||||
* $Id: handlesigs.rez,v 1.1 1998/02/08 23:47:14 tribby Exp $
|
||||
*/
|
||||
#define PROG "handlesigs"
|
||||
#define DESC "Report when signals are detected."
|
||||
|
||||
#include "Types.rez"
|
||||
|
||||
/*
|
||||
* Version
|
||||
*/
|
||||
resource rVersion (1, purgeable3) {
|
||||
{ 1, 0, 0, /* Version 1.0.0 */
|
||||
development, /* development|alpha|beta|final|release */
|
||||
0 }, /* non-final release number */
|
||||
verUS, /* Country */
|
||||
PROG, /* Program name */
|
||||
DESC " Not for release; used for GNO/ME testing."
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Comment
|
||||
*/
|
||||
resource rComment (1, purgeable3) {
|
||||
PROG " v1.0 (January 1998)\n"
|
||||
"GNO utility: " DESC "\n"
|
||||
"Written by Dave Tribby."
|
||||
};
|
2
bin/kill/tests/signame.list
Normal file
2
bin/kill/tests/signame.list
Normal file
@ -0,0 +1,2 @@
|
||||
hup int quit ill trap abrt emt fpe kill bus segv sys pipe alrm term urg
|
||||
stop tstp cont chld ttin ttou io xcpu xfsz vtalrm prof winch info usr1 usr2
|
31
bin/kill/tests/signames.list
Normal file
31
bin/kill/tests/signames.list
Normal file
@ -0,0 +1,31 @@
|
||||
hup
|
||||
int
|
||||
quit
|
||||
ill
|
||||
trap
|
||||
abrt
|
||||
emt
|
||||
fpe
|
||||
kill
|
||||
bus
|
||||
segv
|
||||
sys
|
||||
pipe
|
||||
alrm
|
||||
term
|
||||
urg
|
||||
stop
|
||||
tstp
|
||||
cont
|
||||
chld
|
||||
ttin
|
||||
ttou
|
||||
io
|
||||
xcpu
|
||||
xfsz
|
||||
vtalrm
|
||||
prof
|
||||
winch
|
||||
info
|
||||
usr1
|
||||
usr2
|
28
bin/kill/tests/sigout.list
Normal file
28
bin/kill/tests/sigout.list
Normal file
@ -0,0 +1,28 @@
|
||||
Program ./handlesigs received signal 15 (term)
|
||||
Program ./handlesigs received signal 1 (hup)
|
||||
Program ./handlesigs received signal 2 (int)
|
||||
Program ./handlesigs received signal 3 (quit)
|
||||
Program ./handlesigs received signal 4 (ill)
|
||||
Program ./handlesigs received signal 5 (trap)
|
||||
Program ./handlesigs received signal 6 (abrt)
|
||||
Program ./handlesigs received signal 7 (emt)
|
||||
Program ./handlesigs received signal 8 (fpe)
|
||||
Program ./handlesigs received signal 10 (bus)
|
||||
Program ./handlesigs received signal 11 (segv)
|
||||
Program ./handlesigs received signal 12 (sys)
|
||||
Program ./handlesigs received signal 13 (pipe)
|
||||
Program ./handlesigs received signal 14 (alrm)
|
||||
Program ./handlesigs received signal 15 (term)
|
||||
Program ./handlesigs received signal 16 (urg)
|
||||
Program ./handlesigs received signal 20 (chld)
|
||||
Program ./handlesigs received signal 21 (ttin)
|
||||
Program ./handlesigs received signal 22 (ttou)
|
||||
Program ./handlesigs received signal 23 (io)
|
||||
Program ./handlesigs received signal 24 (xcpu)
|
||||
Program ./handlesigs received signal 25 (xfsz)
|
||||
Program ./handlesigs received signal 26 (vtalrm)
|
||||
Program ./handlesigs received signal 27 (prof)
|
||||
Program ./handlesigs received signal 28 (winch)
|
||||
Program ./handlesigs received signal 29 (info)
|
||||
Program ./handlesigs received signal 30 (usr1)
|
||||
Program ./handlesigs received signal 31 (usr2)
|
Loading…
Reference in New Issue
Block a user