Changeset 695
- Timestamp:
- 04/03/07 12:33:15 (2 years ago)
- Files:
-
- tests/cache/cherokee/Makefile (modified) (2 diffs)
- tests/cache/cherokee/cache_obj_http.h (modified) (1 diff)
- tests/cache/cherokee/cache_table.c (modified) (5 diffs)
- tests/cache/cherokee/cache_table.h (modified) (1 diff)
- tests/cache/cherokee/test.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
tests/cache/cherokee/Makefile
r694 r695 1 1 CHEROKEE_PATH=../../../cherokee 2 CHEROKEE_DEPS=-lssl 2 CHEROKEE_DEPS=-lssl -lpthread 3 3 4 4 CC = gcc … … 9 9 PROG = test 10 10 11 .c.o: 11 .c.o: test.c cherkokee.h 12 12 $(CC) $(CFLAGS) -c -o $@ $< 13 13 tests/cache/cherokee/cache_obj_http.h
r694 r695 44 44 cherokee_buffer_t id; 45 45 cherokee_buffer_t body; 46 47 CHEROKEE_RWLOCK_T(lock); 46 48 } cherokee_cache_obj_http_t; 47 49 tests/cache/cherokee/cache_table.c
r694 r695 27 27 #include "common-internal.h" 28 28 #include "cache_table.h" 29 #include "cache_obj.h" 29 30 30 31 static ret_t … … 65 66 clean_up (cherokee_cache_t *cache) 66 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 */ 71 67 72 return ret_ok; 68 73 } … … 71 76 gen_key (cherokee_cache_t *cache, cherokee_buffer_t **key, cherokee_buffer_t *buf) 72 77 { 78 /* P. J. Weinberger's hash function, adapted from p. 436 of 79 * Compilers: Principles, Techniques, and Tools_, Aho, Sethi 80 * and U llman, Addison-Wesley, 1986, ISBN 0-201-10088-6 81 */ 82 83 ret_t ret; 84 85 const char *s; 86 cuint_t h = 0; 87 cuint_t g; 88 cint_t c; 89 90 CHEROKEE_NEW(n,buffer); 91 92 cherokee_buffer_init(n); 93 94 for (s = buf->buf; buf->buf + buf->len >= s; s++) { 95 c = *s; 96 if (isascii(c) && isupper(c)) 97 c = tolower(c); 98 h = ( h << 4 ) + c; 99 if ((g = ( h & 0xf0000000 )) != 0) { 100 h = h ^ (g >> 24); 101 h = h ^ g; 102 } 103 } 104 105 ret = cherokee_buffer_add_va (n, "%d", h); 106 if (unlikely (ret != ret_ok)) return ret_error; 107 108 *key = n; 109 110 TRACE(ENTRIES, "url:%s, key: %s\n", buf->buf, BUF(n)->buf); 73 111 return ret_ok; 112 74 113 } 75 114 … … 94 133 CACHE(cache)->clean_up = (cherokee_cache_func_clean_up_t) clean_up; 95 134 96 ret = cherokee_table_init_case(&CACHE_TABLE(cache)->objs); 135 INIT_LIST_HEAD(&CACHE_TABLE(cache)->to_delete); 136 137 ret = cherokee_table_init_case(&CACHE_TABLE(cache)->objs); 97 138 if (unlikely (ret != ret_ok)) return ret_error; 98 139 … … 113 154 /* cache->objs already deleted by _clean_up() 114 155 */ 115 156 cherokee_list_del (&cache->to_delete); 157 116 158 return ret_ok; 117 159 } 118 119 120 tests/cache/cherokee/cache_table.h
r688 r695 41 41 /* Objects collection 42 42 */ 43 cherokee_table_t objs; /* cherokee_cache_obj_ts */ 44 } cherokee_cache_table_t; 43 cherokee_table_t objs; /* cherokee_cache_obj_ts */ 44 cherokee_list_t to_delete; 45 }cherokee_cache_table_t; 45 46 46 47 #define CACHE_TABLE(c) ((cherokee_cache_table_t *)(c)) tests/cache/cherokee/test.c
r694 r695 24 24 25 25 #include "common-internal.h" 26 26 27 #include "cache_file.h" 28 #include "cache_obj_file.h" 29 30 #include "cache_table.h" 31 #include "cache_obj_http.h" 27 32 28 33 #define NUM_OBJS 20000 34 35 int test_file (); 36 int test_table (); 29 37 30 38 31 39 int 32 40 main () 41 { 42 ret_t ret; 43 printf("Cherokee cache_table test:\n"); 44 ret = test_table(); 45 if (ret != ret_ok) 46 fprintf(stderr, "test_file failed\n"); 47 48 printf("Cherokee cache_file test:\n"); 49 ret = test_file(); 50 if (ret != ret_ok) 51 fprintf(stderr, "test_file failed\n"); 52 53 return ret_ok; 54 } 55 56 57 int test_table() 58 { 59 cuint_t i; 60 ret_t ret; 61 62 CHEROKEE_NEW_STRUCT(key, buffer); 63 CHEROKEE_NEW_STRUCT(buf, buffer); 64 65 CHEROKEE_NEW_STRUCT(obj, cache_obj_http); 66 CHEROKEE_NEW_STRUCT(obj2, cache_obj_http); 67 68 CHEROKEE_NEW_STRUCT(cache, cache_table); 69 cherokee_cache_table_init (cache); 70 71 /* Store some stuff 72 */ 73 for (i=0; i<NUM_OBJS; i++) { 74 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; 114 } 115 116 int 117 test_file() 33 118 { 34 119 ret_t ret; … … 37 122 cherokee_cache_obj_file_t *obj; 38 123 cherokee_buffer_t name; 39 124 40 125 cherokee_buffer_init (&name); 41 126 cherokee_cache_file_init (&cache); 42 43 /* Store some stuff44 */127 128 /* Store some stuff 129 */ 45 130 for (i=0; i<NUM_OBJS; i++) { 46 131 cherokee_cache_obj_file_new (&obj); 47 132 48 133 /* Set the filename 49 134 */ … … 59 144 return -1; 60 145 } 61 }62 146 } 147 63 148 /* Remove a few objects 64 149 */