⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testmemcache.c

📁 Apache官方在今天放出产品系列2.2的最新版本2.2.11的源码包 最流行的HTTP服务器软件之一
💻 C
📖 第 1 页 / 共 2 页
字号:
 char *result; apr_size_t len;  rv = apr_memcache_create(pool, 1, 0, &memcache);  ABTS_ASSERT(tc, "memcache create failed", rv == APR_SUCCESS);    rv = apr_memcache_server_create(pool, HOST, PORT, 0, 1, 1, 60, &server);  ABTS_ASSERT(tc, "server create failed", rv == APR_SUCCESS);    rv = apr_memcache_add_server(memcache, server);  ABTS_ASSERT(tc, "server add failed", rv == APR_SUCCESS);    tdata = apr_hash_make(p);  create_test_hash(pool, tdata);  for (hi = apr_hash_first(p, tdata); hi; hi = apr_hash_next(hi)) {    const void *k;    void *v;    const char *key;    apr_hash_this(hi, &k, NULL, &v);    key = k;    /* doesn't exist yet, fail */    rv = apr_memcache_replace(memcache, key, v, strlen(v) - 1, 0, 27);    ABTS_ASSERT(tc, "replace should have failed", rv != APR_SUCCESS);        /* doesn't exist yet, succeed */    rv = apr_memcache_add(memcache, key, v, strlen(v), 0, 27);    ABTS_ASSERT(tc, "add failed", rv == APR_SUCCESS);    /* exists now, succeed */    rv = apr_memcache_replace(memcache, key, "new", sizeof("new") - 1, 0, 27);    ABTS_ASSERT(tc, "replace failed", rv == APR_SUCCESS);    /* make sure its different */    rv = apr_memcache_getp(memcache, pool, key, &result, &len, NULL);    ABTS_ASSERT(tc, "get failed", rv == APR_SUCCESS);    ABTS_STR_NEQUAL(tc, result, "new", 3);    /* exists now, fail */    rv = apr_memcache_add(memcache, key, v, strlen(v), 0, 27);    ABTS_ASSERT(tc, "add should have failed", rv != APR_SUCCESS);    /* clean up */    rv = apr_memcache_delete(memcache, key, 0);    ABTS_ASSERT(tc, "delete failed", rv == APR_SUCCESS);  }}/* basic tests of the increment and decrement commands */static void test_memcache_incrdecr(abts_case * tc, void *data){ apr_pool_t *pool = p; apr_status_t rv; apr_memcache_t *memcache; apr_memcache_server_t *server; apr_uint32_t new; char *result; apr_size_t len; apr_uint32_t i;  rv = apr_memcache_create(pool, 1, 0, &memcache);  ABTS_ASSERT(tc, "memcache create failed", rv == APR_SUCCESS);    rv = apr_memcache_server_create(pool, HOST, PORT, 0, 1, 1, 60, &server);  ABTS_ASSERT(tc, "server create failed", rv == APR_SUCCESS);    rv = apr_memcache_add_server(memcache, server);  ABTS_ASSERT(tc, "server add failed", rv == APR_SUCCESS);  rv = apr_memcache_set(memcache, prefix, "271", sizeof("271") - 1, 0, 27);  ABTS_ASSERT(tc, "set failed", rv == APR_SUCCESS);    for( i = 1; i <= TDATA_SIZE; i++) {    apr_uint32_t expect;    rv = apr_memcache_getp(memcache, pool, prefix, &result, &len, NULL);    ABTS_ASSERT(tc, "get failed", rv == APR_SUCCESS);    expect = i + atoi(result);    rv = apr_memcache_incr(memcache, prefix, i, &new);    ABTS_ASSERT(tc, "incr failed", rv == APR_SUCCESS);    ABTS_INT_EQUAL(tc, expect, new);    rv = apr_memcache_decr(memcache, prefix, i, &new);    ABTS_ASSERT(tc, "decr failed", rv == APR_SUCCESS);    ABTS_INT_EQUAL(tc, atoi(result), new);  }  rv = apr_memcache_getp(memcache, pool, prefix, &result, &len, NULL);  ABTS_ASSERT(tc, "get failed", rv == APR_SUCCESS);  ABTS_INT_EQUAL(tc, 271, atoi(result));  rv = apr_memcache_delete(memcache, prefix, 0);  ABTS_ASSERT(tc, "delete failed", rv == APR_SUCCESS);}/* test the multiget functionality */static void test_memcache_multiget(abts_case * tc, void *data){  apr_pool_t *pool = p;  apr_pool_t *tmppool;  apr_status_t rv;  apr_memcache_t *memcache;  apr_memcache_server_t *server;  apr_hash_t *tdata, *values;  apr_hash_index_t *hi;  apr_uint32_t i;  rv = apr_memcache_create(pool, 1, 0, &memcache);  ABTS_ASSERT(tc, "memcache create failed", rv == APR_SUCCESS);    rv = apr_memcache_server_create(pool, HOST, PORT, 0, 1, 1, 60, &server);  ABTS_ASSERT(tc, "server create failed", rv == APR_SUCCESS);    rv = apr_memcache_add_server(memcache, server);  ABTS_ASSERT(tc, "server add failed", rv == APR_SUCCESS);    values = apr_hash_make(p);  tdata = apr_hash_make(p);    create_test_hash(pool, tdata);  for (hi = apr_hash_first(p, tdata); hi; hi = apr_hash_next(hi)) {    const void *k;    void *v;    const char *key;    apr_hash_this(hi, &k, NULL, &v);    key = k;    rv = apr_memcache_set(memcache, key, v, strlen(v), 0, 27);    ABTS_ASSERT(tc, "set failed", rv == APR_SUCCESS);  }    rv = apr_pool_create(&tmppool, pool);  for (i = 0; i < TDATA_SET; i++)    apr_memcache_add_multget_key(pool,                                 apr_pstrcat(pool, prefix,                                             apr_itoa(pool, i), NULL),                                 &values);      rv = apr_memcache_multgetp(memcache,                             tmppool,                             pool,                             values);    ABTS_ASSERT(tc, "multgetp failed", rv == APR_SUCCESS);  ABTS_ASSERT(tc, "multgetp returned too few results",              apr_hash_count(values) == TDATA_SET);    for (hi = apr_hash_first(p, tdata); hi; hi = apr_hash_next(hi)) {    const void *k;    const char *key;        apr_hash_this(hi, &k, NULL, NULL);    key = k;    rv = apr_memcache_delete(memcache, key, 0);    ABTS_ASSERT(tc, "delete failed", rv == APR_SUCCESS);  }  }/* test setting and getting */static void test_memcache_setget(abts_case * tc, void *data){    apr_pool_t *pool = p;    apr_status_t rv;    apr_memcache_t *memcache;    apr_memcache_server_t *server;    apr_hash_t *tdata, *values;    apr_hash_index_t *hi;    char *result;    apr_size_t len;    rv = apr_memcache_create(pool, 1, 0, &memcache);    ABTS_ASSERT(tc, "memcache create failed", rv == APR_SUCCESS);    rv = apr_memcache_server_create(pool, HOST, PORT, 0, 1, 1, 60, &server);    ABTS_ASSERT(tc, "server create failed", rv == APR_SUCCESS);    rv = apr_memcache_add_server(memcache, server);    ABTS_ASSERT(tc, "server add failed", rv == APR_SUCCESS);    tdata = apr_hash_make(pool);    values = apr_hash_make(pool);    create_test_hash(pool, tdata);    for (hi = apr_hash_first(p, tdata); hi; hi = apr_hash_next(hi)) {	const void *k;	void *v;        const char *key;	apr_hash_this(hi, &k, NULL, &v);        key = k;	rv = apr_memcache_set(memcache, key, v, strlen(v), 0, 27);	ABTS_ASSERT(tc, "set failed", rv == APR_SUCCESS);	rv = apr_memcache_getp(memcache, pool, key, &result, &len, NULL);	ABTS_ASSERT(tc, "get failed", rv == APR_SUCCESS);    }    rv = apr_memcache_getp(memcache, pool, "nothere3423", &result, &len, NULL);    ABTS_ASSERT(tc, "get should have failed", rv != APR_SUCCESS);    for (hi = apr_hash_first(p, tdata); hi; hi = apr_hash_next(hi)) {	const void *k;	const char *key;	apr_hash_this(hi, &k, NULL, NULL);	key = k;	rv = apr_memcache_delete(memcache, key, 0);	ABTS_ASSERT(tc, "delete failed", rv == APR_SUCCESS);    }}/* use apr_socket stuff to see if there is in fact a memcached server  * running on PORT.  */apr_status_t check_mc(void){  apr_pool_t *pool = p;  apr_status_t rv;  apr_socket_t *sock = NULL;  apr_sockaddr_t *sa;  struct iovec vec[2];  apr_size_t written;  char buf[128];  apr_size_t len;  rv = apr_socket_create(&sock, APR_INET, SOCK_STREAM, 0, pool);  if(rv != APR_SUCCESS) {    return rv;  }  rv = apr_sockaddr_info_get(&sa, HOST, APR_INET, PORT, 0, pool);  if(rv != APR_SUCCESS) {    return rv;  }  rv = apr_socket_timeout_set(sock, 1 * APR_USEC_PER_SEC);  if (rv != APR_SUCCESS) {    return rv;  }  rv = apr_socket_connect(sock, sa);  if (rv != APR_SUCCESS) {    return rv;  }  rv = apr_socket_timeout_set(sock, -1);  if (rv != APR_SUCCESS) {    return rv;  }  vec[0].iov_base = "version";  vec[0].iov_len  = sizeof("version") - 1;  vec[1].iov_base = "\r\n";  vec[1].iov_len  = sizeof("\r\n") -1;  rv = apr_socket_sendv(sock, vec, 2, &written);  if (rv != APR_SUCCESS) {    return rv;  }  len = sizeof(buf);  rv = apr_socket_recv(sock, buf, &len);  if(rv != APR_SUCCESS) {    return rv;  }  if(strncmp(buf, "VERSION", sizeof("VERSION")-1) != 0) {    rv = APR_EGENERAL;  }  apr_socket_close(sock);  return rv;}abts_suite *testmemcache(abts_suite * suite){    apr_status_t rv;    suite = ADD_SUITE(suite);    /* check for a running memcached on the typical port before      * trying to run the tests. succeed silently if we don't find one.     */    rv = check_mc();    if(rv == APR_SUCCESS) {      abts_run_test(suite, test_memcache_create, NULL);      abts_run_test(suite, test_memcache_user_funcs, NULL);      abts_run_test(suite, test_memcache_meta, NULL);      abts_run_test(suite, test_memcache_setget, NULL);      abts_run_test(suite, test_memcache_multiget, NULL);      abts_run_test(suite, test_memcache_addreplace, NULL);      abts_run_test(suite, test_memcache_incrdecr, NULL);    }    return suite;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -