Changeset 877 for tests

Show
Ignore:
Timestamp:
08/06/07 18:40:58 (1 year ago)
Author:
cesar
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tests/cache/cherokee/cache_obj.c

    r691 r877  
    3232        obj->usage       = 0; 
    3333        obj->last_access = 0; 
     34        obj->clean_up_func   = NULL; 
     35         
     36        return ret_ok; 
     37} 
     38 
     39 
     40ret_t 
     41cherokee_cache_obj_mrproper (cherokee_cache_obj_t *obj) 
     42{ 
     43        obj->usage       = 0; 
     44        obj->last_access = 0; 
     45        obj->clean_up_func   = NULL; 
    3446 
    3547        return ret_ok; 
    3648} 
    3749 
     50ret_t  
     51cherokee_cache_obj_clean_up (cherokee_cache_obj_t *obj) 
     52{ 
     53        ret_t ret;  
     54         
     55        /* Sanity check 
     56         */ 
     57        if (obj->clean_up_func == NULL) 
     58                return ret_error;  
     59        /* Clean up func by concrete obj 
     60         */ 
     61        ret = obj->clean_up_func(obj);  
     62        return ret; 
     63} 
    3864 
    39 ret_t  
    40 cherokee_cache_obj_mrproper (cherokee_cache_obj_t *obj) 
    41 { 
    42         return ret_ok; 
    43 } 
  • tests/cache/cherokee/cache_obj.h

    r694 r877  
    3232 
    3333#include <cherokee/common.h> 
    34 #include <cherokee/buffer.h> 
    3534 
    3635CHEROKEE_BEGIN_DECLS 
     36 
     37struct cherokee_cache_obj;  
     38 
     39typedef ret_t (* cherokee_obj_clean_up_func_t)    (struct cherokee_cache_obj *cache_obj); 
    3740 
    3841struct cherokee_cache_obj { 
    3942        /* Accessing data 
    4043         */      
    41         cuint_t     usage;  
    42         time_t      last_access;  
     44        cuint_t                      usage;  
     45        time_t                       last_access; 
     46        cherokee_obj_clean_up_func_t clean_up_func;  
    4347}; 
    4448typedef struct cherokee_cache_obj cherokee_cache_obj_t; 
     
    4953ret_t cherokee_cache_obj_init     (cherokee_cache_obj_t *obj); 
    5054ret_t cherokee_cache_obj_mrproper (cherokee_cache_obj_t *obj); 
     55ret_t cherokee_cache_obj_clean_up (cherokee_cache_obj_t *obj); 
    5156 
    5257CHEROKEE_END_DECLS 
  • tests/cache/cherokee/cache_obj_http.c

    r694 r877  
    2626#include "cache_obj_http.h" 
    2727 
    28  
    2928/* Implements _new and _free methods 
    3029 */ 
     
    3231CHEROKEE_ADD_FUNC_FREE (cache_obj_http); 
    3332 
     33 
     34ret_t  
     35cherokee_cache_obj_http_mrproper (cherokee_cache_obj_http_t *obj) 
     36{ 
     37        ret_t ret;  
     38         
     39        /* First, destroy parent  
     40         */ 
     41        cherokee_cache_obj_mrproper (CACHE_OBJ(obj)); 
     42        CACHE_OBJ(obj)->clean_up_func =  NULL;  
     43 
     44        ret = cherokee_buffer_mrproper (&obj->id); 
     45        if (unlikely (ret != ret_ok)) return ret_error; 
     46 
     47        ret = cherokee_buffer_mrproper (&obj->body);  
     48        if (unlikely (ret != ret_ok)) return ret_error;  
     49         
     50        return ret_ok; 
     51} 
    3452 
    3553ret_t  
     
    4159         */ 
    4260        cherokee_cache_obj_init (CACHE_OBJ(obj)); 
     61        CACHE_OBJ(obj)->clean_up_func = (cherokee_obj_clean_up_func_t *) cherokee_cache_obj_http_free; 
    4362 
    4463        /* Init object properties 
     
    5271        return ret_ok; 
    5372} 
    54  
    55  
    56 ret_t  
    57 cherokee_cache_obj_http_mrproper (cherokee_cache_obj_http_t *obj) 
    58 { 
    59         ret_t ret;  
    60       
    61         /* Destroy the objecj properties 
    62          */ 
    63         ret = cherokee_buffer_mrproper (&obj->id);  
    64         if (unlikely (ret != ret_ok)) return ret_error;  
    65  
    66         ret = cherokee_buffer_mrproper (&obj->body);  
    67         if (unlikely (ret != ret_ok)) return ret_error;  
    68  
    69         /* Call its parent destructor 
    70          */ 
    71         cherokee_cache_obj_mrproper (CACHE_OBJ(obj)); 
    72         return ret_ok; 
    73 } 
  • tests/cache/cherokee/cache_table.c

    r695 r877  
    2525#include <cherokee/common.h> 
    2626#include <cherokee/buffer.h> 
    27 #include "common-internal.h" 
     27#include <cherokee/common-internal.h> 
    2828#include "cache_table.h" 
    2929#include "cache_obj.h" 
     30 
     31#define ENTRIES "cache_table" 
    3032 
    3133static ret_t 
     
    3335{ 
    3436        ret_t ret; 
     37         
     38        CHEROKEE_RWLOCK_WRITER(&CACHE_TABLE(cache)->lock_table); 
     39        ret = cherokee_avl_add (&CACHE_TABLE(cache)->objs, key, (void **)item); 
     40        CHEROKEE_RWLOCK_UNLOCK(&CACHE_TABLE(cache)->lock_table); 
     41         
     42        TRACE(ENTRIES, "%d:%i\n", key->buf, ret);  
     43         
     44        return ret; 
     45} 
    3546 
    36         ret = cherokee_table_add (&CACHE_TABLE(cache)->objs, key->buf, (void **)item); 
    37         if (unlikely (ret != ret_ok)) return ret; 
    38  
    39         return ret_ok; 
    40 } 
    4147 
    4248static ret_t 
     
    4551        ret_t ret; 
    4652 
    47         ret = cherokee_table_get (&CACHE_TABLE(cache)->objs, key->buf, (void **)item); 
    48         if (unlikely (ret != ret_ok)) return ret; 
     53        CHEROKEE_RWLOCK_READER(&CACHE_TABLE(cache)->lock_table); 
     54        ret = cherokee_avl_get (&CACHE_TABLE(cache)->objs, key, (void **)item); 
     55        CHEROKEE_RWLOCK_UNLOCK(&CACHE_TABLE(cache)->lock_table); 
     56         
     57        return ret; 
     58
    4959 
    50         return ret_ok; 
    51 } 
    5260 
    5361static ret_t 
     
    5664        ret_t ret; 
    5765 
    58         ret = cherokee_table_del (&CACHE_TABLE(cache)->objs, key->buf, (void **)item); 
    59         if (unlikely (ret != ret_ok)) return ret; 
     66        CHEROKEE_RWLOCK_WRITER(&CACHE_TABLE(cache)->lock_table); 
     67        ret = cherokee_avl_del (&CACHE_TABLE(cache)->objs, key, (void **)item); 
     68        CHEROKEE_RWLOCK_UNLOCK(&CACHE_TABLE(cache)->lock_table); 
    6069 
    61         return ret_ok
     70        return ret
    6271} 
    6372 
     
    6574static ret_t 
    6675clean_up (cherokee_cache_t *cache) 
    67 
    68         /* cherokee_cache_obj_mrproper doesn't know the concrete mrproper needed here,  
    69          * It should be available in cherokee_cache_obj_*_t 
    70          */ 
     76{                
     77        ret_t ret;  
     78 
     79        CHEROKEE_RWLOCK_WRITER(&CACHE_TABLE(cache)->lock_table); 
     80        ret = cherokee_avl_mrproper(&CACHE_TABLE(cache)->objs,          
     81                                    (cherokee_func_free_t)  
     82                                    cherokee_cache_obj_clean_up); 
     83        CHEROKEE_RWLOCK_UNLOCK(&CACHE_TABLE(cache)->lock_table); 
    7184         
    72         return ret_ok
     85        return ret
    7386} 
     87 
    7488 
    7589static ret_t 
     
    87101        cuint_t g; 
    88102        cint_t c; 
    89  
    90         CHEROKEE_NEW(n,buffer); 
    91  
    92         cherokee_buffer_init(n); 
     103         
     104        cherokee_buffer_t *n; 
     105        cherokee_buffer_new(&n); 
    93106 
    94107        for (s = buf->buf; buf->buf + buf->len >= s; s++) { 
     
    107120 
    108121        *key = n; 
    109  
    110         TRACE(ENTRIES, "url:%s, key: %s\n", buf->buf, BUF(n)->buf); 
    111122        return ret_ok; 
    112123 
    113124} 
    114  
    115  
    116125 
    117126ret_t  
     
    133142        CACHE(cache)->clean_up = (cherokee_cache_func_clean_up_t) clean_up; 
    134143 
     144        ret = cherokee_avl_init(&CACHE_TABLE(cache)->objs); 
     145        if (unlikely (ret != ret_ok)) return ret_error; 
     146 
    135147        INIT_LIST_HEAD(&CACHE_TABLE(cache)->to_delete); 
    136148 
    137         ret = cherokee_table_init_case(&CACHE_TABLE(cache)->objs); 
    138         if (unlikely (ret != ret_ok)) return ret_error; 
     149        CHEROKEE_RWLOCK_INIT (&CACHE_TABLE(cache)->lock_table, NULL); 
    139150 
    140151        return ret_ok; 
     
    154165        /* cache->objs already deleted by _clean_up() 
    155166         */ 
     167        CHEROKEE_RWLOCK_DESTROY (&CACHE_TABLE(cache)->lock_table); 
     168 
    156169        cherokee_list_del (&cache->to_delete); 
    157170         
  • tests/cache/cherokee/cache_table.h

    r695 r877  
    3030#define CHEROKEE_CACHE_TABLE_H 
    3131 
     32#include <cherokee/avl.h> 
     33#include <cherokee/list.h> 
    3234#include <cherokee/cache.h> 
    33 #include <cherokee/table.h> 
    34 #include <cherokee/list.h> 
    3535 
    3636CHEROKEE_BEGIN_DECLS 
    3737 
    3838typedef struct { 
    39         cherokee_cache_t parent;        
     39        cherokee_cache_t parent; 
    4040 
    4141        /* Objects collection 
    4242         */ 
    43         cherokee_table_t   objs;         /* cherokee_cache_obj_ts */ 
     43        cherokee_avl_t     objs;         /* cherokee_cache_obj_ts */ 
    4444        cherokee_list_t    to_delete; 
    45 }cherokee_cache_table_t; 
     45        CHEROKEE_RWLOCK_T(lock_table);           
     46} cherokee_cache_table_t; 
    4647 
    4748#define CACHE_TABLE(c) ((cherokee_cache_table_t *)(c)) 
  • tests/cache/cherokee/test.c

    r695 r877  
    2424 
    2525#include "common-internal.h" 
    26  
    2726#include "cache_file.h" 
    2827#include "cache_obj_file.h" 
    29  
    3028#include "cache_table.h" 
    3129#include "cache_obj_http.h" 
     
    3634int test_table (); 
    3735 
    38  
    3936int  
    4037main () 
    4138{ 
    4239        ret_t ret; 
     40 
    4341        printf("Cherokee cache_table test:\n");  
    4442        ret = test_table(); 
    4543        if (ret != ret_ok) 
    4644                fprintf(stderr, "test_file failed\n"); 
     45/* 
    4746 
    4847        printf("Cherokee cache_file test:\n"); 
     
    5049        if (ret != ret_ok) 
    5150                fprintf(stderr, "test_file failed\n"); 
    52  
     51*/ 
    5352        return ret_ok;  
    5453} 
     
    5756int test_table() 
    5857{ 
    59         cuint_t            i; 
    60         ret_t              ret; 
     58        cuint_t            i; 
     59        ret_t              ret; 
     60         
     61        cherokee_buffer_t buf;  
     62        cherokee_buffer_t *key;  
    6163 
    62         CHEROKEE_NEW_STRUCT(key, buffer); 
    63         CHEROKEE_NEW_STRUCT(buf, buffer);  
     64        cherokee_cache_obj_http_t *obj;  
     65       cherokee_cache_table_t    cache;  
    6466 
    65         CHEROKEE_NEW_STRUCT(obj, cache_obj_http); 
    66         CHEROKEE_NEW_STRUCT(obj2, cache_obj_http); 
     67        cherokee_cache_table_init (&cache); 
    6768         
    68         CHEROKEE_NEW_STRUCT(cache, cache_table);         
    69         cherokee_cache_table_init (cache); 
     69        /* Store some stuff  
     70         */ 
     71        for (i=0; i<NUM_OBJS; i++) { 
     72                 
     73                cherokee_cache_obj_http_new (&obj); 
    7074 
    71         /* Store some stuff   
    72          */ 
    73         for (i=0; i<NUM_OBJS; i++) { 
     75                cherokee_buffer_add_va (&obj->id, "info-%d", i); 
     76                cherokee_cache_gen_key (CACHE(&cache), &key, &obj->id); 
     77                cherokee_buffer_add_va (&obj->body, "<html>%d</html>", i); 
     78                 
     79                ret = cherokee_cache_add (CACHE(&cache), key, CACHE_OBJ(obj)); 
     80                if (ret != ret_ok) 
     81                        fprintf(stderr, "Error Writing\n"); 
     82                 
     83                cherokee_buffer_free(key); 
     84        } 
     85         
     86        /* Read the stuff 
     87         */ 
     88        cherokee_cache_obj_http_init (obj); 
    7489 
    75                 cherokee_cache_obj_http_new (&obj); 
    76                 cherokee_buffer_init(buf); 
    77  
    78                 //CHEROKEE_RWLOCK_WRITER(&obj->lock);  
    79                 cherokee_buffer_add_va (buf, "info-%d", i); 
    80  
    81                 cherokee_cache_gen_key (CACHE(cache), &key, buf);  
    82                 cherokee_buffer_swap_buffers (&obj->id, key); 
    83                 cherokee_buffer_add_va (&obj->body, "<html>%d</html>", i); 
    84  
    85                 cherokee_cache_add (CACHE(cache), &obj->id, CACHE_OBJ(obj)); 
    86                 //CHEROKEE_RWLOCK_UNLOCK(&obj->lock); 
    87  
    88                 cherokee_buffer_mrproper(buf); 
    89                 cherokee_buffer_free(key); 
    90         } 
    91  
    92         /* Read the stuff 
    93          */ 
    94         for (i=0; i<NUM_OBJS+3; i++) { 
    95                 cherokee_buffer_init(buf); 
    96                  
    97                 cherokee_buffer_add_va (buf, "info-%d", i); 
    98                 cherokee_cache_gen_key (CACHE(cache), &key, buf); 
    99                 cherokee_buffer_swap_buffers(&obj->id, key); 
    100  
    101                 ret = cherokee_cache_get(CACHE(cache), &obj->id, CACHE_OBJ(&obj2)); 
    102                 if (ret != ret_ok) 
    103                         printf("%s Not found\n", obj->id.buf); 
    104                 //else 
    105                 //           printf("found %s\n", CACHE_OBJ_HTTP(obj2)->id.buf); 
    106  
    107                 cherokee_buffer_mrproper(buf); 
    108         } 
    109  
    110         cherokee_cache_clean_up (CACHE(cache)); 
    111         cherokee_cache_table_mrproper (cache); 
    112  
    113         return ret_ok; 
     90        for (i=0; i<NUM_OBJS+3; i++) { 
     91                cherokee_buffer_init(&buf); 
     92                 
     93                cherokee_buffer_add_va (&buf, "info-%d", i); 
     94                cherokee_cache_gen_key (CACHE(&cache), &key, &buf); 
     95                 
     96                ret = cherokee_cache_get(CACHE(&cache), key, (cherokee_cache_obj_t **)(&obj)); 
     97                if (ret != ret_ok) 
     98                        fprintf(stderr, "%s Not found\n", key->buf); 
     99                //else 
     100                //           fprintf(stderr, "found %s\n", CACHE_OBJ_HTTP(obj)->id.buf); 
     101                 
     102                cherokee_buffer_mrproper(&buf); 
     103                cherokee_buffer_free(key);  
     104        } 
     105         
     106        cherokee_cache_clean_up (CACHE(&cache)); 
     107        cherokee_cache_table_mrproper (&cache); 
     108         
     109        return ret_ok; 
    114110} 
    115111 
     
    162158                ret = cherokee_cache_get (CACHE(&cache), &name, (cherokee_cache_obj_t **)&obj); 
    163159 
    164                 printf ("%s -> %p (ret=%d)\n", name.buf, obj, ret); 
     160                fprintf (stderr, "%s -> %p (ret=%d)\n", name.buf, obj, ret); 
    165161                cherokee_buffer_mrproper (&name); 
    166162        } 
    167          
    168  
    169163        cherokee_cache_mrproper (CACHE(&cache)); 
    170164        cherokee_cache_obj_mrproper (CACHE_OBJ(&obj));