You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by tr...@apache.org on 2003/12/10 19:46:01 UTC

cvs commit: apr-util/test testreslist.c

trawick     2003/12/10 10:46:01

  Modified:    test     testreslist.c
  Log:
  add test for reslist timeout
  
  Revision  Changes    Path
  1.5       +47 -0     apr-util/test/testreslist.c
  
  Index: testreslist.c
  ===================================================================
  RCS file: /home/cvs/apr-util/test/testreslist.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- testreslist.c	15 Apr 2003 14:51:37 -0000	1.4
  +++ testreslist.c	10 Dec 2003 18:46:01 -0000	1.5
  @@ -158,6 +158,51 @@
       return APR_SUCCESS;
   }
   
  +static void test_timeout(apr_reslist_t *rl)
  +{
  +    apr_status_t rv;
  +    my_resource_t *resources[RESLIST_HMAX];
  +    my_resource_t *res;
  +    int i;
  +
  +    printf("Setting timeout to 1000us: ");
  +    apr_reslist_timeout_set(rl, 1000);
  +    fprintf(stdout, "OK\n");
  +
  +    /* deplete all possible resources from the resource list 
  +     * so that the next call will block until timeout is reached 
  +     * (since there are no other threads to make a resource 
  +     * available)
  +     */
  +
  +    for (i = 0; i < RESLIST_HMAX; i++) {
  +        rv = apr_reslist_acquire(rl, (void**)&resources[i]);
  +        if (rv != APR_SUCCESS) {
  +            fprintf(stderr, "couldn't acquire resource: %d\n", rv);
  +            exit(1);
  +        }
  +    }
  +
  +    /* next call will block until timeout is reached */
  +    rv = apr_reslist_acquire(rl, (void **)&res);
  +    if (!APR_STATUS_IS_TIMEUP(rv)) {
  +        fprintf(stderr, "apr_reslist_acquire()->%d instead of TIMEUP\n", 
  +                rv);
  +        exit(1);
  +    }
  +
  +    /* release the resources; otherwise the destroy operation
  +     * will blow
  +     */
  +    for (i = 0; i < RESLIST_HMAX; i++) {
  +        rv = apr_reslist_release(rl, &resources[i]);
  +        if (rv != APR_SUCCESS) {
  +            fprintf(stderr, "couldn't release resource: %d\n", rv);
  +            exit(1);
  +        }
  +    }
  +}
  +
   static apr_status_t test_reslist(apr_pool_t *parpool)
   {
       apr_status_t rv;
  @@ -223,6 +268,8 @@
           }
       }
       printf("\nDone!\n");
  +
  +    test_timeout(rl);
   
       printf("Destroying resource list.................");
       rv = apr_reslist_destroy(rl);