Why were the apr_file_printf switched to printf? printf isn't portable or even supported by APR (so says Ryan). I'd rather we ate our own dog food here. -- justin
On Wed, Jun 06, 2001 at 10:25:45PM -0000, [EMAIL PROTECTED] wrote: > dreid 01/06/06 15:25:44 > > Modified: test testlock.c > Log: > Bring testlock in line with the rest of the test apps and change the order > of the tests to have the least implemented at the end. Also now has better > output and errors are preserved shown. > > Revision Changes Path > 1.3 +63 -49 apr/test/testlock.c > > Index: testlock.c > =================================================================== > RCS file: /home/cvs/apr/test/testlock.c,v > retrieving revision 1.2 > retrieving revision 1.3 > diff -u -r1.2 -r1.3 > --- testlock.c 2001/06/06 18:21:57 1.2 > +++ testlock.c 2001/06/06 22:25:43 1.3 > @@ -60,13 +60,13 @@ > #include "errno.h" > #include <stdio.h> > #include <stdlib.h> > +#include "test_apr.h" > > #if !APR_HAS_THREADS > int main(void) > { > - fprintf(stderr, > - "This program won't work on this platform because there is no " > - "support for threads.\n"); > + printf("This program won't work on this platform because there is no " > + "support for threads.\n"); > return 0; > } > #else /* !APR_HAS_THREADS */ > @@ -74,8 +74,12 @@ > #define MAX_ITER 40000 > > void * APR_THREAD_FUNC thread_rw_func(void *data); > -void * APR_THREAD_FUNC thread_func(void *data); > +void * APR_THREAD_FUNC thread_function(void *data); > +apr_status_t test_exclusive(void); > +apr_status_t test_rw(void); > +apr_status_t test_multiple_locking(void); > > + > apr_file_t *in, *out, *err; > apr_lock_t *thread_rw_lock, *thread_lock; > apr_pool_t *pool; > @@ -106,15 +110,16 @@ > return NULL; > } > > -void * APR_THREAD_FUNC thread_func(void *data) > +void * APR_THREAD_FUNC thread_function(void *data) > { > int exitLoop = 1; > > + /* slight delay to allow things to settle */ > + apr_sleep (1); > + > while (1) > { > apr_lock_acquire(thread_lock); > - if (apr_lock_acquire(thread_lock) != APR_SUCCESS) > - printf("Failed!\n"); > if (i == MAX_ITER) > exitLoop = 0; > else > @@ -123,7 +128,6 @@ > x++; > } > apr_lock_release(thread_lock); > - apr_lock_release(thread_lock); > > if (!exitLoop) > break; > @@ -136,91 +140,93 @@ > apr_thread_t *t1, *t2, *t3, *t4; > apr_status_t s1, s2, s3, s4; > > - apr_file_printf(out, "Initializing the rw lock."); > - s1 = apr_lock_create(&thread_rw_lock, APR_READWRITE, APR_INTRAPROCESS, > - "lock.file", pool); > + printf("RW Lock Tests\n"); > + printf("%-60s", " Initializing the RW lock"); > + s1 = apr_lock_create(&thread_rw_lock, APR_READWRITE, APR_INTRAPROCESS, > + "lock.file", pool); > if (s1 != APR_SUCCESS) { > - apr_file_printf(err, "Could not create lock\n"); > + printf("Failed!\n"); > return s1; > } > - apr_file_printf(out, " OK\n"); > + printf("OK\n"); > > i = 0; > x = 0; > > - apr_file_printf(out, "Starting all the threads......."); > + printf("%-60s"," Starting all the threads"); > s1 = apr_thread_create(&t1, NULL, thread_rw_func, NULL, pool); > s2 = apr_thread_create(&t2, NULL, thread_rw_func, NULL, pool); > s3 = apr_thread_create(&t3, NULL, thread_rw_func, NULL, pool); > s4 = apr_thread_create(&t4, NULL, thread_rw_func, NULL, pool); > if (s1 != APR_SUCCESS || s2 != APR_SUCCESS || > s3 != APR_SUCCESS || s4 != APR_SUCCESS) { > - apr_file_printf(err, "Error starting threads\n"); > + printf("Failed!\n"); > return s1; > } > - apr_file_printf(out, "OK\n"); > + printf("OK\n"); > > - apr_file_printf(out, "Waiting for threads to exit......."); > + printf("%-60s", " Waiting for threads to exit"); > apr_thread_join(&s1, t1); > apr_thread_join(&s2, t2); > apr_thread_join(&s3, t3); > apr_thread_join(&s4, t4); > - apr_file_printf(out, "OK\n"); > + printf("OK\n"); > > - apr_file_printf(out, "OK\n"); > if (x != MAX_ITER) { > - apr_file_printf(err, "The locks didn't work???? %d\n", x); > + fprintf(stderr, "RW locks didn't work as expected. x = %d instead > of %d\n", > + x, MAX_ITER); > } > else { > - apr_file_printf(out, "Everything is working!\n"); > + printf("Test passed\n"); > } > > return APR_SUCCESS; > } > > -int test_exclusive(void) > +apr_status_t test_exclusive(void) > { > apr_thread_t *t1, *t2, *t3, *t4; > apr_status_t s1, s2, s3, s4; > > - apr_file_printf(out, "Initializing the lock."); > + printf("Exclusive lock test\n"); > + printf("%-60s", " Initializing the lock"); > s1 = apr_lock_create(&thread_lock, APR_MUTEX, APR_INTRAPROCESS, > "lock.file", pool); > > if (s1 != APR_SUCCESS) { > - apr_file_printf(err, "Could not create lock\n"); > + printf("Failed!\n"); > return s1; > } > - apr_file_printf(out, " OK\n"); > + printf("OK\n"); > > i = 0; > x = 0; > > - apr_file_printf(out, "Starting all the threads......."); > - s1 = apr_thread_create(&t1, NULL, thread_func, NULL, pool); > - s2 = apr_thread_create(&t2, NULL, thread_func, NULL, pool); > - s3 = apr_thread_create(&t3, NULL, thread_func, NULL, pool); > - s4 = apr_thread_create(&t4, NULL, thread_func, NULL, pool); > + printf("%-60s", " Starting all the threads"); > + s1 = apr_thread_create(&t1, NULL, thread_function, NULL, pool); > + s2 = apr_thread_create(&t2, NULL, thread_function, NULL, pool); > + s3 = apr_thread_create(&t3, NULL, thread_function, NULL, pool); > + s4 = apr_thread_create(&t4, NULL, thread_function, NULL, pool); > if (s1 != APR_SUCCESS || s2 != APR_SUCCESS || > s3 != APR_SUCCESS || s4 != APR_SUCCESS) { > - apr_file_printf(err, "Error starting threads\n"); > + printf("Failed!\n"); > return s1; > } > - apr_file_printf(out, "OK\n"); > + printf("OK\n"); > > - apr_file_printf(out, "Waiting for threads to exit......."); > + printf("%-60s", " Waiting for threads to exit"); > apr_thread_join(&s1, t1); > apr_thread_join(&s2, t2); > apr_thread_join(&s3, t3); > apr_thread_join(&s4, t4); > - apr_file_printf(out, "OK\n"); > + printf("OK\n"); > > - apr_file_printf(out, "OK\n"); > if (x != MAX_ITER) { > - apr_file_printf(err, "The locks didn't work???? %d\n", x); > + fprintf(stderr, "Locks don't appear to work! x = %d instead of > %d\n", > + x, MAX_ITER); > } > else { > - apr_file_printf(out, "Everything is working!\n"); > + printf("Test passed\n"); > } > return APR_SUCCESS; > } > @@ -267,32 +273,40 @@ > } > printf("OK\n"); > > - printf("Multiple locking test completed\n"); > + printf("Test passed\n"); > return APR_SUCCESS; > } > > int main(void) > { > + apr_status_t rv; > + char errmsg[200]; > + > + printf("APR Locks Test\n==============\n\n"); > + > apr_initialize(); > atexit(apr_terminate); > > if (apr_pool_create(&pool, NULL) != APR_SUCCESS) > exit(-1); > > - apr_file_open_stdin(&in, pool); > - apr_file_open_stdout(&out, pool); > - apr_file_open_stderr(&err, pool); > - > - apr_file_printf(out, "OK\n"); > - > - if (test_rw() != APR_SUCCESS) > + if ((rv = test_exclusive()) != APR_SUCCESS) { > + fprintf(stderr,"Exclusive Lock test failed : [%d] %s\n", > + rv, apr_strerror(rv, (char*)errmsg, 200)); > exit(-2); > - > - if (test_exclusive() != APR_SUCCESS) > + } > + > + if ((rv = test_multiple_locking()) != APR_SUCCESS) { > + fprintf(stderr,"Multiple Locking test failed : [%d] %s\n", > + rv, apr_strerror(rv, (char*)errmsg, 200)); > exit(-3); > - > - if (test_multiple_locking() != APR_SUCCESS) > + } > + > + if ((rv = test_rw()) != APR_SUCCESS) { > + fprintf(stderr,"RW Lock test failed : [%d] %s\n", > + rv, apr_strerror(rv, (char*)errmsg, 200)); > exit(-4); > + } > > return 1; > } > > >