From cvs-return-4379-apmail-apr-cvs-archive=apr.apache.org@apr.apache.org Tue Nov 26 16:02:39 2002 Return-Path: Delivered-To: apmail-apr-cvs-archive@apr.apache.org Received: (qmail 5512 invoked by uid 500); 26 Nov 2002 16:02:38 -0000 Mailing-List: contact cvs-help@apr.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Reply-To: dev@apr.apache.org Delivered-To: mailing list cvs@apr.apache.org Received: (qmail 5500 invoked from network); 26 Nov 2002 16:02:38 -0000 Date: 26 Nov 2002 16:02:37 -0000 Message-ID: <20021126160237.97636.qmail@icarus.apache.org> From: rbb@apache.org To: apr-cvs@apache.org Subject: cvs commit: apr/test Makefile.in test_apr.h testall.c testproc.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N rbb 2002/11/26 08:02:37 Modified: test Makefile.in test_apr.h testall.c testproc.c Log: Migrate testproc to the new test suite. Revision Changes Path 1.115 +9 -17 apr/test/Makefile.in Index: Makefile.in =================================================================== RCS file: /home/cvs/apr/test/Makefile.in,v retrieving revision 1.114 retrieving revision 1.115 diff -u -r1.114 -r1.115 --- Makefile.in 26 Nov 2002 10:25:11 -0000 1.114 +++ Makefile.in 26 Nov 2002 16:02:37 -0000 1.115 @@ -12,7 +12,6 @@ server@EXEEXT@ \ testnames@EXEEXT@ \ testflock@EXEEXT@ \ - testproc@EXEEXT@ \ testsock@EXEEXT@ \ testthread@EXEEXT@ \ testlock@EXEEXT@ \ @@ -21,12 +20,10 @@ testshmproducer@EXEEXT@ \ testshmconsumer@EXEEXT@ \ testpipe@EXEEXT@ \ - testoc@EXEEXT@ \ testsockopt@EXEEXT@ \ testpoll@EXEEXT@ \ testhash@EXEEXT@ \ testuser@EXEEXT@ \ - testdup@EXEEXT@ \ testatomic@EXEEXT@ \ testmutexscope@EXEEXT@ \ testall@EXEEXT@ @@ -39,7 +36,7 @@ LOCAL_LIBS=../lib@APR_LIBNAME@.la -CLEAN_TARGETS = testfile.tmp testdso@EXEEXT@ mod_test.slo +CLEAN_TARGETS = testfile.tmp mod_test.slo proc_child@EXEEXT@ INCDIR=../include INCLUDES=-I$(INCDIR) @@ -64,12 +61,12 @@ testflock@EXEEXT@: testflock.lo $(LOCAL_LIBS) $(LINK) testflock.lo $(LOCAL_LIBS) $(ALL_LIBS) -testdso@EXEEXT@: testdso.lo mod_test.la libmod_test.la $(LOCAL_LIBS) - $(LINK) testdso.lo $(LOCAL_LIBS) $(ALL_LIBS) - occhild@EXEEXT@: occhild.lo $(LOCAL_LIBS) $(LINK) occhild.lo $(LOCAL_LIBS) $(ALL_LIBS) +proc_child@EXEEXT@: proc_child.lo $(LOCAL_LIBS) + $(LINK) proc_child.lo $(LOCAL_LIBS) $(ALL_LIBS) + # FIXME: -prefer-pic is only supported with libtool-1.4+ mod_test.slo: mod_test.c $(LIBTOOL) --mode=compile $(COMPILE) -prefer-pic -c mod_test.c && touch $@ @@ -83,9 +80,6 @@ testargs@EXEEXT@: testargs.lo $(LOCAL_LIBS) $(LINK) testargs.lo $(LOCAL_LIBS) $(ALL_LIBS) -testproc@EXEEXT@: testproc.lo $(LOCAL_LIBS) - $(LINK) testproc.lo $(LOCAL_LIBS) $(ALL_LIBS) - testthread@EXEEXT@: testthread.lo $(LOCAL_LIBS) $(LINK) testthread.lo $(LOCAL_LIBS) $(ALL_LIBS) @@ -140,22 +134,20 @@ testatomic@EXEEXT@: testatomic.lo $(LOCAL_LIBS) $(LINK) testatomic.lo $(LOCAL_LIBS) $(ALL_LIBS) -testdup@EXEEXT@: testdup.lo $(LOCAL_LIBS) - $(LINK) testdup.lo $(LOCAL_LIBS) $(ALL_LIBS) - testmutexscope@EXEEXT@: testmutexscope.lo $(LOCAL_LIBS) $(LINK) testmutexscope.lo $(LOCAL_LIBS) $(ALL_LIBS) testall: testall.lo testtime.lo teststr.lo testvsn.lo testipsub.lo \ testmmap.lo testud.lo testtable.lo testsleep.lo testpools.lo \ testfmt.lo testfile.lo testdir.lo testfileinfo.lo testrand.lo \ - testdso.lo testoc.lo testdup.lo testsockets.lo CuTest.lo mod_test.la \ - libmod_test.la occhild@EXEEXT@ $(LOCAL_LIBS) + testdso.lo testoc.lo testdup.lo testsockets.lo testproc.lo \ + CuTest.lo mod_test.la libmod_test.la occhild@EXEEXT@ \ + proc_child@EXEEXT@ $(LOCAL_LIBS) $(LINK) testall.lo testtime.lo teststr.lo testvsn.lo testipsub.lo \ testmmap.lo testud.lo testtable.lo testsleep.lo testpools.lo \ testfmt.lo testfile.lo testdir.lo testfileinfo.lo testrand.lo \ - testdso.lo testoc.lo testdup.lo testsockets.lo CuTest.lo \ - $(LOCAL_LIBS) $(ALL_LIBS) + testdso.lo testoc.lo testdup.lo testsockets.lo testproc.lo \ + CuTest.lo $(LOCAL_LIBS) $(ALL_LIBS) # DO NOT REMOVE 1.27 +1 -0 apr/test/test_apr.h Index: test_apr.h =================================================================== RCS file: /home/cvs/apr/test/test_apr.h,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- test_apr.h 24 Nov 2002 06:54:55 -0000 1.26 +++ test_apr.h 26 Nov 2002 16:02:37 -0000 1.27 @@ -84,6 +84,7 @@ CuSuite *testoc(void); CuSuite *testdup(void); CuSuite *testsockets(void); +CuSuite *testproc(void); 1.25 +1 -0 apr/test/testall.c Index: testall.c =================================================================== RCS file: /home/cvs/apr/test/testall.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- testall.c 24 Nov 2002 06:54:55 -0000 1.24 +++ testall.c 26 Nov 2002 16:02:37 -0000 1.25 @@ -82,6 +82,7 @@ {"testdso", testdso}, {"testoc", testoc}, {"testsockets", testsockets}, + {"testproc", testproc}, {"LastTest", NULL} }; 1.38 +110 -174 apr/test/testproc.c Index: testproc.c =================================================================== RCS file: /home/cvs/apr/test/testproc.c,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- testproc.c 11 Oct 2002 12:21:42 -0000 1.37 +++ testproc.c 26 Nov 2002 16:02:37 -0000 1.38 @@ -57,19 +57,8 @@ #include "apr_general.h" #include "apr_lib.h" #include "apr_strings.h" -#include -#if APR_HAVE_UNISTD_H -#include -#endif -#include -#include -#include -#include #include "test_apr.h" -int test_filedel(void); -int testdirs(void); - /* XXX I'm sure there has to be a better way to do this ... */ #ifdef WIN32 #define EXTENSION ".exe" @@ -77,197 +66,144 @@ #define EXTENSION #endif -int main(int argc, char *argv[]) +#define TESTSTR "This is a test" + +static apr_proc_t newproc; + +static void test_create_proc(CuTest *tc) { - apr_pool_t *pool; - apr_proc_t newproc; + const char *args[2]; apr_procattr_t *attr; apr_file_t *testfile = NULL; - apr_file_t *testout = NULL; - apr_file_t *testerr = NULL; + apr_status_t rv; apr_size_t length; - apr_off_t offset; char *buf; - char msgbuf[120]; - const char *args[3]; - char *teststr; - apr_status_t rv; - if (apr_initialize() != APR_SUCCESS){ - printf("Failed to initialize APR\n"); - exit(-1); - } - atexit(apr_terminate); - apr_pool_create(&pool, NULL); - - if (argc > 1) { - teststr = apr_palloc(pool, 256); - teststr = fgets(teststr, 256, stdin); - printf("%s", teststr); - if (!strcmp("--to-stderr", argv[1])) - fprintf(stderr, "%s", teststr); - exit(1); - } - teststr = apr_pstrdup(pool, "Whooo Hoooo\n"); - - printf("APR Process Test\n================\n\n"); - - STD_TEST_NEQ("Creating directory \"proctest\" for later use", - apr_dir_make("proctest", APR_UREAD | APR_UWRITE | APR_UEXECUTE, pool)) + rv = apr_procattr_create(&attr, p); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + + rv = apr_procattr_io_set(attr, APR_FULL_BLOCK, APR_FULL_BLOCK, + APR_NO_PIPE); + CuAssertIntEquals(tc, APR_SUCCESS, rv); - /* =================================================================== */ + rv = apr_procattr_dir_set(attr, "data"); + CuAssertIntEquals(tc, APR_SUCCESS, rv); - printf("\nTesting process pipes ...\n\n"); + rv = apr_procattr_cmdtype_set(attr, APR_PROGRAM); + CuAssertIntEquals(tc, APR_SUCCESS, rv); - STD_TEST_NEQ("Creating procattr", apr_procattr_create(&attr, pool)) - STD_TEST_NEQ("Setting attr pipes, all three", apr_procattr_io_set(attr, APR_FULL_BLOCK, - APR_CHILD_BLOCK, APR_NO_PIPE)) - STD_TEST_NEQ("Setting attr dir", apr_procattr_dir_set(attr, "proctest")) - STD_TEST_NEQ("Setting attr cmd type", apr_procattr_cmdtype_set(attr, APR_PROGRAM)) - - args[0] = "testproc"; - args[1] = "-X"; - args[2] = NULL; + args[0] = "proc_child"; + args[1] = NULL; - STD_TEST_NEQ("Creating a new process", apr_proc_create(&newproc, - "../testproc" EXTENSION, args, NULL, attr, pool)) + rv = apr_proc_create(&newproc, "../proc_child" EXTENSION, args, NULL, + attr, p); + CuAssertIntEquals(tc, APR_SUCCESS, rv); - printf("%-60s","Grabbing child's stdin"); testfile = newproc.in; - printf("OK\n"); - length = strlen(teststr); - printf("%-60s", "Writing the data to child"); - if ((rv = apr_file_write(testfile, teststr, &length)) == APR_SUCCESS) { - printf("OK\n"); - } - else { - printf("Write failed: (%d) %s.\n", - rv, apr_strerror(rv, msgbuf, sizeof msgbuf)); - } + length = strlen(TESTSTR); + rv = apr_file_write(testfile, TESTSTR, &length); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + CuAssertIntEquals(tc, strlen(TESTSTR), length); - printf("%-60s", "Grabbing child's stdout"); testfile = newproc.out; - printf("OK\n"); - length = 256; - printf("%-60s", "Checking the data read from pipe to child"); - buf = apr_pcalloc(pool, length); - if ((rv = apr_file_read(testfile, buf, &length)) == APR_SUCCESS) { - if (!strcmp(buf, teststr)) - printf("OK\n"); - else { - printf( "Uh-Oh\n"); - printf(" (I actually got %s)\n", buf); - } - } - else { - printf("Read failed - (%d) %s\n", - rv, apr_strerror(rv, msgbuf, sizeof msgbuf)); - } - - TEST_NEQ("Waiting for child to die", - apr_proc_wait(&newproc, NULL, NULL, APR_WAIT), - APR_CHILD_DONE, "OK", "Failed") + buf = apr_pcalloc(p, length); + rv = apr_file_read(testfile, buf, &length); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + CuAssertStrEquals(tc, TESTSTR, buf); +} - /* =================================================================== */ +static void test_proc_wait(CuTest *tc) +{ + apr_status_t rv; - printf("\nTesting file redirection ...\n\n"); + rv = apr_proc_wait(&newproc, NULL, NULL, APR_WAIT); + CuAssertIntEquals(tc, APR_CHILD_DONE, rv); +} + +static void test_file_redir(CuTest *tc) +{ + apr_file_t *testout = NULL; + apr_file_t *testerr = NULL; + apr_off_t offset; + apr_status_t rv; + const char *args[2]; + apr_procattr_t *attr; + apr_file_t *testfile = NULL; + apr_size_t length; + char *buf; testfile = NULL; - STD_TEST_NEQ("Creating input file", - apr_file_open(&testfile, "proctest/stdin", - APR_READ | APR_WRITE | APR_CREATE | APR_EXCL, - APR_OS_DEFAULT, pool)) - STD_TEST_NEQ("Creating output file", - apr_file_open(&testout, "proctest/stdout", - APR_READ | APR_WRITE | APR_CREATE | APR_EXCL, - APR_OS_DEFAULT, pool)) - STD_TEST_NEQ("Creating error file", - apr_file_open(&testerr, "proctest/stderr", - APR_READ | APR_WRITE | APR_CREATE | APR_EXCL, - APR_OS_DEFAULT, pool)) - - length = strlen(teststr); - STD_TEST_NEQ("Writing input file", - apr_file_write(testfile, teststr, &length)) + rv = apr_file_open(&testfile, "data/stdin", + APR_READ | APR_WRITE | APR_CREATE | APR_EXCL, + APR_OS_DEFAULT, p); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + rv = apr_file_open(&testout, "data/stdout", + APR_READ | APR_WRITE | APR_CREATE | APR_EXCL, + APR_OS_DEFAULT, p); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + rv = apr_file_open(&testerr, "data/stderr", + APR_READ | APR_WRITE | APR_CREATE | APR_EXCL, + APR_OS_DEFAULT, p); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + + length = strlen(TESTSTR); + apr_file_write(testfile, TESTSTR, &length); offset = 0; - STD_TEST_NEQ("Rewinding input file", - apr_file_seek(testfile, APR_SET, &offset)) + rv = apr_file_seek(testfile, APR_SET, &offset); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + CuAssertIntEquals(tc, 0, offset); + + rv = apr_procattr_create(&attr, p); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + rv = apr_procattr_child_in_set(attr, testfile, NULL); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + rv = apr_procattr_child_out_set(attr, testout, NULL); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + rv = apr_procattr_child_err_set(attr, testerr, NULL); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + rv = apr_procattr_dir_set(attr, "data"); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + rv = apr_procattr_cmdtype_set(attr, APR_PROGRAM); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + + args[0] = "proc_child"; + args[1] = NULL; + + rv = apr_proc_create(&newproc, "../proc_child" EXTENSION, args, NULL, + attr, p); + CuAssertIntEquals(tc, APR_SUCCESS, rv); - STD_TEST_NEQ("Creating procattr", apr_procattr_create(&attr, pool)) - STD_TEST_NEQ("Setting attr input file", - apr_procattr_child_in_set(attr, testfile, NULL)) - STD_TEST_NEQ("Setting attr output file", - apr_procattr_child_out_set(attr, testout, NULL)) - STD_TEST_NEQ("Setting attr error file", - apr_procattr_child_err_set(attr, testerr, NULL)) - STD_TEST_NEQ("Setting attr dir", apr_procattr_dir_set(attr, "proctest")) - STD_TEST_NEQ("Setting attr cmd type", apr_procattr_cmdtype_set(attr, APR_PROGRAM)) - - args[0] = "testproc"; - args[1] = "--to-stderr"; - args[2] = NULL; - - STD_TEST_NEQ("Creating a new process", apr_proc_create(&newproc, - "../testproc" EXTENSION, args, NULL, attr, pool)) - - TEST_NEQ("Waiting for child to die", - apr_proc_wait(&newproc, NULL, NULL, APR_WAIT), - APR_CHILD_DONE, "OK", "Failed") + rv = apr_proc_wait(&newproc, NULL, NULL, APR_WAIT); + CuAssertIntEquals(tc, APR_CHILD_DONE, rv); offset = 0; - STD_TEST_NEQ("Rewinding output file", - apr_file_seek(testout, APR_SET, &offset)) - length = 256; - printf("%-60s", "Checking the data read from child's stdout"); - buf = apr_pcalloc(pool, length); - if ((rv = apr_file_read(testout, buf, &length)) == APR_SUCCESS) { - if (!strcmp(buf, teststr)) - printf("OK\n"); - else { - printf( "Uh-Oh\n"); - printf(" (I actually got %s_\n", buf); - } - } - else { - printf("Read failed - (%d) %s\n", - rv, apr_strerror(rv, msgbuf, sizeof msgbuf)); - } + rv = apr_file_seek(testout, APR_SET, &offset); + CuAssertIntEquals(tc, APR_SUCCESS, rv); - offset = 0; - STD_TEST_NEQ("Rewinding error file", - apr_file_seek(testerr, APR_SET, &offset)) length = 256; - printf("%-60s", "Checking the data read from child's stderr"); - buf = apr_pcalloc(pool, length); - if ((rv = apr_file_read(testerr, buf, &length)) == APR_SUCCESS) { - if (!strcmp(buf, teststr)) - printf("OK\n"); - else { - printf( "Uh-Oh\n"); - printf(" (I actually got %s_\n", buf); - } - } - else { - printf("Read failed - (%d) %s\n", - rv, apr_strerror(rv, msgbuf, sizeof msgbuf)); - } - - STD_TEST_NEQ("Closing input file", apr_file_close(testfile)); - STD_TEST_NEQ("Closing output file", apr_file_close(testout)); - STD_TEST_NEQ("Closing error file", apr_file_close(testerr)); - - STD_TEST_NEQ("Removing input file", apr_file_remove("proctest/stdin", pool)); - STD_TEST_NEQ("Removing output file", apr_file_remove("proctest/stdout", pool)); - STD_TEST_NEQ("Removing error file", apr_file_remove("proctest/stderr", pool)); + buf = apr_pcalloc(p, length); + rv = apr_file_read(testout, buf, &length); + CuAssertIntEquals(tc, APR_SUCCESS, rv); + CuAssertStrEquals(tc, TESTSTR, buf); + + rv = apr_file_remove("data/stdin", p);; + CuAssertIntEquals(tc, APR_SUCCESS, rv); + rv = apr_file_remove("data/stdout", p);; + CuAssertIntEquals(tc, APR_SUCCESS, rv); + rv = apr_file_remove("data/stderr", p);; + CuAssertIntEquals(tc, APR_SUCCESS, rv); +} - /* =================================================================== */ +CuSuite *testproc(void) +{ + CuSuite *suite = CuSuiteNew("Process control"); - printf("\n"); - STD_TEST_NEQ("Removing directory", apr_dir_remove("proctest", pool)) + SUITE_ADD_TEST(suite, test_create_proc); + SUITE_ADD_TEST(suite, test_proc_wait); + SUITE_ADD_TEST(suite, test_file_redir); - printf("\nTest completed succesfully\n"); - return 0; + return suite; }