apr-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dr...@apache.org
Subject cvs commit: apr/test test_apr.h testproc.c
Date Sun, 13 May 2001 10:42:09 GMT
dreid       01/05/13 03:42:09

  Modified:    test     testproc.c
  Added:       test     test_apr.h
  Log:
  This has been on my list of things to do for a while, and as I had some time
  between 40West and 30West at 39,000' it seemed like a good idea.  This is still
  a starting point, but at least this commit shows what I'm thinking.  I'll try to
  adapt some of the other test apps soon.
  
  test_apr.h needs to be changed to use better error semantics (apr ones) but this
  was just a quick hack.
  
  Revision  Changes    Path
  1.27      +41 -77    apr/test/testproc.c
  
  Index: testproc.c
  ===================================================================
  RCS file: /home/cvs/apr/test/testproc.c,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- testproc.c	2001/02/16 04:16:10	1.26
  +++ testproc.c	2001/05/13 10:42:08	1.27
  @@ -65,6 +65,7 @@
   #include <stdlib.h>
   #include <signal.h>
   #include <string.h>
  +#include "test_apr.h"
   
   int test_filedel(void);
   int testdirs(void);
  @@ -76,7 +77,7 @@
   
   int main(int argc, char *argv[])
   {
  -    apr_pool_t *context;
  +    apr_pool_t *pool;
       apr_proc_t newproc;
       apr_procattr_t *attr;
       apr_file_t *testfile = NULL;
  @@ -85,108 +86,71 @@
       const char *args[3];
       char *teststr;
   
  -    if (apr_initialize() != APR_SUCCESS) {
  -        fprintf(stderr, "Couldn't initialize.");
  +    if (apr_initialize() != APR_SUCCESS){
  +        printf("Failed to initialize APR\n");
           exit(-1);
  -    }
  +    }   
       atexit(closeapr);
  -    apr_pool_create(&context, NULL);
  -
  +    apr_pool_create(&pool, NULL);
   
       if (argc > 1) {
  -        teststr = apr_palloc(context, 256);
  +        teststr = apr_palloc(pool, 256);
           teststr = fgets(teststr, 256, stdin);      
  -        fprintf(stdout, "%s", teststr);      
  +        printf("%s", teststr);      
           exit(1);
  -    }
  -    teststr = apr_pstrdup(context, "Whooo Hoooo\0");
  -
  -    fprintf(stdout, "Creating directory for later use.......");
  -    if (apr_dir_make("proctest", APR_UREAD | APR_UWRITE | APR_UEXECUTE, context) != APR_SUCCESS)
{
  -        fprintf(stderr, "Could not create dir\n");
  -        exit(-1);
  -    }
  -    fprintf(stdout, "OK\n");
  -
  -    fprintf(stdout, "Creating procattr.......");
  -    if (apr_procattr_create(&attr, context) != APR_SUCCESS) {
  -        fprintf(stderr, "Could not create attr\n");
  -        exit(-1);;
       }
  -    fprintf(stdout, "OK.\n");
  -
  -    fprintf(stdout, "Setting attr pipes, all three.......");
  -    if (apr_procattr_io_set(attr, APR_FULL_BLOCK, 
  -                          APR_CHILD_BLOCK, APR_NO_PIPE) != APR_SUCCESS) {
  -        fprintf(stderr, "Could not set pipes attr\n");
  -        exit(-1);
  -    }
  -    fprintf(stdout, "OK.\n");
  +    teststr = apr_pstrdup(pool, "Whooo Hoooo\0");
       
  -    fprintf(stdout, "Setting attr dir.......");
  -    if (apr_procattr_dir_set(attr, "proctest") != APR_SUCCESS) {
  -        fprintf(stderr, "Could not set directory attr\n");
  -        exit(-1);
  -    }
  -    fprintf(stdout, "OK.\n");
  -
  -    fprintf(stdout, "Setting attr cmd type.......");
  -    if (apr_procattr_cmdtype_set(attr, APR_PROGRAM) != APR_SUCCESS) {
  -        fprintf(stderr, "Could not set cmd type attr\n");
  -        exit(-1);
  -    }
  -    fprintf(stdout, "OK.\n");
  +    printf("APR Process Test\n================\n\n");
  +    
  +    STD_TEST_NEQ("Creating directory for later use", 
  +                 apr_dir_make("proctest", APR_UREAD | APR_UWRITE | APR_UEXECUTE, pool))
  +    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;
       
  -    fprintf(stdout, "Creating a new process.......");
  -    if (apr_proc_create(&newproc, "../testproc", args, NULL, attr, context) != APR_SUCCESS)
{
  -        fprintf(stderr, "Could not create the new process\n");
  -        exit(-1);
  -    }
  -    fprintf(stdout, "OK.\n");
  +    STD_TEST_NEQ("Creating a new process", apr_proc_create(&newproc,
  +                 "../testproc", args, NULL, attr, pool))
   
  -    fprintf(stdout, "Grabbing child's stdin.......");
  +    printf("%-60s","Grabbing child's stdin");
       testfile = newproc.in;
  -    fprintf(stdout, "OK.\n");
  +    printf("OK\n");
   
       length = 256;
  -    fprintf(stdout, "Writing the data to child.......");
  +    printf("%-60s", "Writing the data to child");
       if (apr_file_write(testfile, teststr, &length) == APR_SUCCESS) {
  -        fprintf(stdout,"OK\n");
  +        printf("OK\n");
       }
  -    else fprintf(stderr, "Write failed.\n");
  +    else printf("Write failed.\n");
   
  -    fprintf(stdout, "Grabbing child's stdout.......");
  +    printf("%-60s", "Grabbing child's stdout");
       testfile = newproc.out;
  -    fprintf(stdout, "OK.\n");
  +    printf("OK\n");
   
       length = 256;
  -    fprintf(stdout, "Checking the data read from pipe to child.......");
  -    buf = apr_pcalloc(context, length);
  +    printf("%-60s", "Checking the data read from pipe to child");
  +    buf = apr_pcalloc(pool, length);
       if (apr_file_read(testfile, buf, &length) == APR_SUCCESS) {
           if (!strcmp(buf, teststr))
  -            fprintf(stdout,"OK\n");
  -        else fprintf(stderr, "Uh-Oh\n");
  -    }
  -    else fprintf(stderr, "Read failed.\n");
  -
  -    fprintf(stdout, "Waiting for child to die.......");
  -    if (apr_proc_wait(&newproc, APR_WAIT) != APR_CHILD_DONE) {
  -        fprintf(stderr, "Wait for child failed\n");
  -        exit(-1);
  -    }
  -    fprintf(stdout, "OK\n");
  -    
  -    fprintf(stdout, "Removing directory.......");
  -    if (apr_dir_remove("proctest", context) != APR_SUCCESS) {
  -        fprintf(stderr, "Could not remove directory.\n");
  -        exit(-1);
  -    }
  -    fprintf(stdout, "OK\n");
  +            printf("OK\n");
  +        else {
  +            printf( "Uh-Oh\n", buf);
  +            printf("  (I actually got %s_\n", buf);
  +        }
  +    }
  +    else printf( "Read failed.\n");
  +
  +    TEST_NEQ("Waiting for child to die", apr_proc_wait(&newproc, APR_WAIT),
  +             APR_CHILD_DONE, "OK", "Failed")   
  +    STD_TEST_NEQ("Removing directory", apr_dir_remove("proctest", pool))
   
  +    printf("\nTest completed succesfully\n");
       return(1);
   }
   
  
  
  
  1.1                  apr/test/test_apr.h
  
  Index: test_apr.h
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000-2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /* Some simple functions to make the test apps easier to write and
   * a bit more consistent...
   *
   * These still need more work...
   *
   * It'd be nice to get proper error reporting in here...
   *
   */
   
  #include <string.h>
  
  #define TEST_EQ(str, func, value, good, bad) \
  	printf("%-60s", str); \
  	{ apr_status_t rv; \
  	    if ((rv = func) == value){ \
  	        printf("%s\n", bad); \
              printf("Error was %ld : %s\n", rv, strerror(rv)); \
  	        exit(-1); \
  	    } \
  	    printf("%s\n", good); \
  	}
  
  #define TEST_NEQ(str, func, value, good, bad) \
  	printf("%-60s", str); \
  	{ apr_status_t rv; \
  	    if ((rv = func) != value){ \
  	        printf("%s\n", bad); \
              printf("Error was %ld : %s\n", rv, strerror(rv)); \
  	        exit(-1); \
  	    } \
  	    printf("%s\n", good); \
  	}
  
  #define STD_TEST(str, func) \
  	TEST_NEQ(str, func, APR_SUCCESS, "OK", "Failed");
  
  

Mime
View raw message