[serf] r1866 committed - * test/server/test_server.c...

2 views
Skip to first unread message

se...@googlecode.com

unread,
May 20, 2013, 11:40:05 AM5/20/13
to serf...@googlegroups.com
Revision: 1866
Author: lieven....@gmail.com
Date: Mon May 20 08:39:41 2013
Log: * test/server/test_server.c
* test/server/test_server.h
* test/server/test_sslserver.c
* test/test_context.c
* test/test_serf.h
* test/test_util.c:
Move around and rename the functions related to managing the lifecycle
of
the test servers for clarification and improved compactness.

http://code.google.com/p/serf/source/detail?r=1866

Modified:
/trunk/test/server/test_server.c
/trunk/test/server/test_server.h
/trunk/test/server/test_sslserver.c
/trunk/test/test_context.c
/trunk/test/test_serf.h
/trunk/test/test_util.c

=======================================
--- /trunk/test/server/test_server.c Mon May 20 04:13:29 2013
+++ /trunk/test/server/test_server.c Mon May 20 08:39:41 2013
@@ -24,8 +24,10 @@
#include "test_server.h"


-apr_status_t test_server_destroy(serv_ctx_t *servctx)
+/* Cleanup callback for a server. */
+static apr_status_t cleanup_server(void *baton)
{
+ serv_ctx_t *servctx = baton;
apr_status_t status;

status = apr_socket_close(servctx->serv_sock);
@@ -33,22 +35,9 @@
if (servctx->client_sock) {
apr_socket_close(servctx->client_sock);
}
-
- if (servctx->ssl_ctx)
- cleanup_ssl_context(servctx);

return status;
}
-
-/* Cleanup callback for a server. */
-static apr_status_t cleanup_server(void *baton)
-{
- serv_ctx_t *serv_ctx = baton;
-
- test_server_destroy(serv_ctx);
-
- return APR_SUCCESS;
-}

/* Replay support functions */
static void next_message(serv_ctx_t *servctx)
@@ -220,7 +209,7 @@
return status;
}

-apr_status_t test_server_run(serv_ctx_t *servctx,
+apr_status_t run_test_server(serv_ctx_t *servctx,
apr_short_interval_time_t duration,
apr_pool_t *pool)
{
@@ -315,7 +304,7 @@
message_list is a list of expected requests.
action_list is the list of responses to be returned in order.
*/
-void test_setup_server(serv_ctx_t **servctx_p,
+void setup_test_server(serv_ctx_t **servctx_p,
apr_sockaddr_t *address,
test_server_message_t *message_list,
apr_size_t message_count,
@@ -351,35 +340,7 @@
*servctx_p = servctx;
}

-void test_setup_https_server(serv_ctx_t **servctx_p,
- apr_sockaddr_t *address,
- test_server_message_t *message_list,
- apr_size_t message_count,
- test_server_action_t *action_list,
- apr_size_t action_count,
- apr_int32_t options,
- const char *keyfile,
- const char **certfiles,
- const char *client_cn,
- apr_pool_t *pool)
-{
- serv_ctx_t *servctx;
-
- test_setup_server(servctx_p, address, message_list,
- message_count, action_list, action_count,
- options, pool);
-
- servctx = *servctx_p;
-
- servctx->handshake = ssl_handshake;
- /* Override with SSL encrypt/decrypt functions */
- servctx->read = ssl_socket_read;
- servctx->send = ssl_socket_write;
-
- init_ssl_context(servctx, keyfile, certfiles, client_cn);
-}
-
-apr_status_t test_start_server(serv_ctx_t *servctx)
+apr_status_t start_test_server(serv_ctx_t *servctx)
{
apr_status_t status;
apr_socket_t *serv_sock;
=======================================
--- /trunk/test/server/test_server.h Mon May 20 04:13:29 2013
+++ /trunk/test/server/test_server.h Mon May 20 08:39:41 2013
@@ -97,7 +97,7 @@
apr_status_t bio_read_status;
};

-void test_setup_server(serv_ctx_t **servctx_p,
+void setup_test_server(serv_ctx_t **servctx_p,
apr_sockaddr_t *address,
test_server_message_t *message_list,
apr_size_t message_count,
@@ -106,7 +106,7 @@
apr_int32_t options,
apr_pool_t *pool);

-void test_setup_https_server(serv_ctx_t **servctx_p,
+void setup_https_test_server(serv_ctx_t **servctx_p,
apr_sockaddr_t *address,
test_server_message_t *message_list,
apr_size_t message_count,
@@ -118,24 +118,12 @@
const char *client_cn,
apr_pool_t *pool);

-apr_status_t test_start_server(serv_ctx_t *serv_ctx);
+apr_status_t start_test_server(serv_ctx_t *serv_ctx);

-apr_status_t test_server_run(serv_ctx_t *servctx,
+apr_status_t run_test_server(serv_ctx_t *servctx,
apr_short_interval_time_t duration,
apr_pool_t *pool);

-apr_status_t test_server_destroy(serv_ctx_t *servctx);
-
-apr_status_t init_ssl_context(serv_ctx_t *serv_ctx,
- const char *keyfile,
- const char **certfiles,
- const char *client_cn);
-apr_status_t ssl_handshake(serv_ctx_t *servctx);
-apr_status_t ssl_socket_write(serv_ctx_t *serv_ctx, const char *data,
- apr_size_t *len);
-apr_status_t ssl_socket_read(serv_ctx_t *serv_ctx, char *data, apr_size_t
*len);
-void cleanup_ssl_context(serv_ctx_t *serv_ctx);
-

#ifndef APR_VERSION_AT_LEAST /* Introduced in APR 1.3.0 */
#define APR_VERSION_AT_LEAST(major,minor,patch) \
=======================================
--- /trunk/test/server/test_sslserver.c Mon May 20 04:25:39 2013
+++ /trunk/test/server/test_sslserver.c Mon May 20 08:39:41 2013
@@ -151,10 +151,11 @@
return preverify_ok;
}

-apr_status_t init_ssl_context(serv_ctx_t *serv_ctx,
- const char *keyfile,
- const char **certfiles,
- const char *client_cn)
+static apr_status_t
+init_ssl_context(serv_ctx_t *serv_ctx,
+ const char *keyfile,
+ const char **certfiles,
+ const char *client_cn)
{
ssl_context_t *ssl_ctx = apr_pcalloc(serv_ctx->pool, sizeof(*ssl_ctx));
serv_ctx->ssl_ctx = ssl_ctx;
@@ -221,7 +222,7 @@
return APR_SUCCESS;
}

-apr_status_t ssl_handshake(serv_ctx_t *serv_ctx)
+static apr_status_t ssl_handshake(serv_ctx_t *serv_ctx)
{
ssl_context_t *ssl_ctx = serv_ctx->ssl_ctx;
int result;
@@ -288,7 +289,7 @@
return APR_EAGAIN;
}

-apr_status_t
+static apr_status_t
ssl_socket_write(serv_ctx_t *serv_ctx, const char *data,
apr_size_t *len)
{
@@ -306,7 +307,7 @@
return SERF_ERROR_ISSUE_IN_TESTSUITE;
}

-apr_status_t
+static apr_status_t
ssl_socket_read(serv_ctx_t *serv_ctx, char *data,
apr_size_t *len)
{
@@ -339,10 +340,45 @@
return SERF_ERROR_ISSUE_IN_TESTSUITE;
}

-void cleanup_ssl_context(serv_ctx_t *serv_ctx)
+static apr_status_t cleanup_https_server(void *baton)
{
- ssl_context_t *ssl_ctx = serv_ctx->ssl_ctx;
+ serv_ctx_t *servctx = baton;
+ ssl_context_t *ssl_ctx = servctx->ssl_ctx;

- SSL_clear(ssl_ctx->ssl);
- SSL_CTX_free(ssl_ctx->ctx);
+ if (ssl_ctx) {
+ SSL_clear(ssl_ctx->ssl);
+ SSL_CTX_free(ssl_ctx->ctx);
+ }
+
+ return APR_SUCCESS;
+}
+
+void setup_https_test_server(serv_ctx_t **servctx_p,
+ apr_sockaddr_t *address,
+ test_server_message_t *message_list,
+ apr_size_t message_count,
+ test_server_action_t *action_list,
+ apr_size_t action_count,
+ apr_int32_t options,
+ const char *keyfile,
+ const char **certfiles,
+ const char *client_cn,
+ apr_pool_t *pool)
+{
+ serv_ctx_t *servctx;
+
+ setup_test_server(servctx_p, address, message_list,
+ message_count, action_list, action_count,
+ options, pool);
+ servctx = *servctx_p;
+ apr_pool_cleanup_register(pool, servctx,
+ cleanup_https_server,
+ apr_pool_cleanup_null);
+
+ servctx->handshake = ssl_handshake;
+ /* Override with SSL encrypt/decrypt functions */
+ servctx->read = ssl_socket_read;
+ servctx->send = ssl_socket_write;
+
+ init_ssl_context(servctx, keyfile, certfiles, client_cn);
}
=======================================
--- /trunk/test/test_context.c Mon May 20 04:25:39 2013
+++ /trunk/test/test_context.c Mon May 20 08:39:41 2013
@@ -69,7 +69,7 @@
{
apr_pool_clear(iter_pool);

- status = test_server_run(tb->serv_ctx, 0, iter_pool);
+ status = run_test_server(tb->serv_ctx, 0, iter_pool);
if (!APR_STATUS_IS_TIMEUP(status) &&
SERF_BUCKET_READ_ERROR(status))
return status;
@@ -283,10 +283,10 @@
apr_pool_t *test_pool = tc->testBaton;

/* Set up a test context with a server */
- status = test_server_setup(&tb,
- message_list, num_requests,
- action_list, num_requests, 0, NULL,
- test_pool);
+ status = test_http_server_setup(&tb,
+ message_list, num_requests,
+ action_list, num_requests, 0, NULL,
+ test_pool);
CuAssertIntEquals(tc, APR_SUCCESS, status);

create_new_request(tb, &handler_ctx[0], "GET", "/", 1);
@@ -333,10 +333,10 @@
apr_pool_t *test_pool = tc->testBaton;

/* Set up a test context with a server */
- status = test_server_setup(&tb,
- message_list, num_requests,
- action_list, num_requests, 0, NULL,
- test_pool);
+ status = test_http_server_setup(&tb,
+ message_list, num_requests,
+ action_list, num_requests, 0, NULL,
+ test_pool);
CuAssertIntEquals(tc, APR_SUCCESS, status);

create_new_request(tb, &handler_ctx[0], "GET", "/", 2);
@@ -414,12 +414,12 @@
apr_pool_t *test_pool = tc->testBaton;

/* Set up a test context with a server. */
- status = test_server_setup(&tb,
- message_list, num_requests,
- action_list, 12,
- 0,
- NULL,
- test_pool);
+ status = test_http_server_setup(&tb,
+ message_list, num_requests,
+ action_list, 12,
+ 0,
+ NULL,
+ test_pool);
CuAssertIntEquals(tc, APR_SUCCESS, status);

/* Send some requests on the connections */
@@ -428,7 +428,7 @@
}

while (1) {
- status = test_server_run(tb->serv_ctx, 0, test_pool);
+ status = run_test_server(tb->serv_ctx, 0, test_pool);
if (APR_STATUS_IS_TIMEUP(status))
status = APR_SUCCESS;
CuAssertIntEquals(tc, APR_SUCCESS, status);
@@ -505,12 +505,12 @@
{
apr_pool_clear(iter_pool);

- status = test_server_run(tb->serv_ctx, 0, iter_pool);
+ status = run_test_server(tb->serv_ctx, 0, iter_pool);
if (APR_STATUS_IS_TIMEUP(status))
status = APR_SUCCESS;
CuAssertIntEquals(tc, APR_SUCCESS, status);

- status = test_server_run(tb->proxy_ctx, 0, iter_pool);
+ status = run_test_server(tb->proxy_ctx, 0, iter_pool);
if (APR_STATUS_IS_TIMEUP(status))
status = APR_SUCCESS;
CuAssertIntEquals(tc, APR_SUCCESS, status);
@@ -621,10 +621,10 @@
apr_pool_t *test_pool = tc->testBaton;

/* Set up a test context with a server. */
- status = test_server_setup(&tb,
- message_list, RCVD_REQUESTS,
- action_list, RCVD_REQUESTS, 0, NULL,
- test_pool);
+ status = test_http_server_setup(&tb,
+ message_list, RCVD_REQUESTS,
+ action_list, RCVD_REQUESTS, 0, NULL,
+ test_pool);
CuAssertIntEquals(tc, APR_SUCCESS, status);

for (i = 0 ; i < SEND_REQUESTS ; i++) {
@@ -635,7 +635,7 @@
}

while (1) {
- status = test_server_run(tb->serv_ctx, 0, test_pool);
+ status = run_test_server(tb->serv_ctx, 0, test_pool);
if (APR_STATUS_IS_TIMEUP(status))
status = APR_SUCCESS;
CuAssertIntEquals(tc, APR_SUCCESS, status);
@@ -752,10 +752,10 @@
apr_pool_t *test_pool = tc->testBaton;

/* Set up a test context with a server. */
- status = test_server_setup(&tb,
- message_list, RCVD_REQUESTS,
- action_list, RCVD_REQUESTS, 0, NULL,
- test_pool);
+ status = test_http_server_setup(&tb,
+ message_list, RCVD_REQUESTS,
+ action_list, RCVD_REQUESTS, 0, NULL,
+ test_pool);
CuAssertIntEquals(tc, APR_SUCCESS, status);

for (i = 0 ; i < SEND_REQUESTS ; i++) {
@@ -765,7 +765,7 @@
}

while (1) {
- status = test_server_run(tb->serv_ctx, 0, test_pool);
+ status = run_test_server(tb->serv_ctx, 0, test_pool);
if (APR_STATUS_IS_TIMEUP(status))
status = APR_SUCCESS;
CuAssertIntEquals(tc, APR_SUCCESS, status);
@@ -850,10 +850,10 @@
apr_pool_t *test_pool = tc->testBaton;

/* Set up a test context with a server. */
- status = test_server_setup(&tb,
- message_list, num_requests,
- action_list, num_requests, 0,
- progress_conn_setup, test_pool);
+ status = test_http_server_setup(&tb,
+ message_list, num_requests,
+ action_list, num_requests, 0,
+ progress_conn_setup, test_pool);
CuAssertIntEquals(tc, APR_SUCCESS, status);

/* Set up the progress callback. */
@@ -1029,10 +1029,10 @@
apr_pool_t *test_pool = tc->testBaton;

/* Set up a test context with a server. */
- status = test_server_setup(&tb,
- message_list, 2,
- action_list, 1, 0,
- NULL, test_pool);
+ status = test_http_server_setup(&tb,
+ message_list, 2,
+ action_list, 1, 0,
+ NULL, test_pool);
CuAssertIntEquals(tc, APR_SUCCESS, status);

/* Send some requests on the connection */
@@ -1112,10 +1112,10 @@
action_list[0].text = response;

/* Set up a test context with a server */
- status = test_server_setup(&tb,
- message_list, num_requests,
- action_list, num_requests, 0, NULL,
- test_pool);
+ status = test_http_server_setup(&tb,
+ message_list, num_requests,
+ action_list, num_requests, 0, NULL,
+ test_pool);
CuAssertIntEquals(tc, APR_SUCCESS, status);

create_new_request(tb, &handler_ctx[0], "GET", "/", 1);
@@ -1176,10 +1176,10 @@
apr_pool_t *test_pool = tc->testBaton;

/* Set up a test context with a server */
- status = test_server_setup(&tb,
- message_list, num_requests,
- action_list, num_requests, 0, NULL,
- test_pool);
+ status = test_http_server_setup(&tb,
+ message_list, num_requests,
+ action_list, num_requests, 0, NULL,
+ test_pool);
CuAssertIntEquals(tc, APR_SUCCESS, status);

/* create large chunked request message */
=======================================
--- /trunk/test/test_serf.h Thu May 2 15:11:59 2013
+++ /trunk/test/test_serf.h Mon May 20 08:39:41 2013
@@ -124,14 +124,14 @@
serf_ssl_need_server_cert_t
server_cert_cb,
apr_pool_t *pool);

-apr_status_t test_server_setup(test_baton_t **tb_p,
- test_server_message_t *message_list,
- apr_size_t message_count,
- test_server_action_t *action_list,
- apr_size_t action_count,
- apr_int32_t options,
- serf_connection_setup_t conn_setup,
- apr_pool_t *pool);
+apr_status_t test_http_server_setup(test_baton_t **tb_p,
+ test_server_message_t *message_list,
+ apr_size_t message_count,
+ test_server_action_t *action_list,
+ apr_size_t action_count,
+ apr_int32_t options,
+ serf_connection_setup_t conn_setup,
+ apr_pool_t *pool);

apr_status_t test_server_proxy_setup(
test_baton_t **tb_p,
=======================================
--- /trunk/test/test_util.c Fri May 17 13:20:35 2013
+++ /trunk/test/test_util.c Mon May 20 08:39:41 2013
@@ -110,6 +110,8 @@
return APR_SUCCESS;
}

+/* Setup the client context, ready to connect and send requests to a
+ server.*/
static apr_status_t setup(test_baton_t **tb_p,
serf_connection_setup_t conn_setup,
const char *serv_url,
@@ -163,7 +165,7 @@
return status;
}

-
+/* Setup an https server and the client context to connect to that server
*/
apr_status_t test_https_server_setup(test_baton_t **tb_p,
test_server_message_t *message_list,
apr_size_t message_count,
@@ -193,24 +195,25 @@
tb->server_cert_cb = server_cert_cb;

/* Prepare a server. */
- test_setup_https_server(&tb->serv_ctx, tb->serv_addr,
+ setup_https_test_server(&tb->serv_ctx, tb->serv_addr,
message_list, message_count,
action_list, action_count, options,
keyfile, certfiles, client_cn,
pool);
- status = test_start_server(tb->serv_ctx);
+ status = start_test_server(tb->serv_ctx);

return status;
}

-apr_status_t test_server_setup(test_baton_t **tb_p,
- test_server_message_t *message_list,
- apr_size_t message_count,
- test_server_action_t *action_list,
- apr_size_t action_count,
- apr_int32_t options,
- serf_connection_setup_t conn_setup,
- apr_pool_t *pool)
+/* Setup an http server and the client context to connect to that server */
+apr_status_t test_http_server_setup(test_baton_t **tb_p,
+ test_server_message_t *message_list,
+ apr_size_t message_count,
+ test_server_action_t *action_list,
+ apr_size_t action_count,
+ apr_int32_t options,
+ serf_connection_setup_t conn_setup,
+ apr_pool_t *pool)
{
apr_status_t status;
test_baton_t *tb;
@@ -227,15 +230,17 @@
tb = *tb_p;

/* Prepare a server. */
- test_setup_server(&tb->serv_ctx, tb->serv_addr,
+ setup_test_server(&tb->serv_ctx, tb->serv_addr,
message_list, message_count,
action_list, action_count, options,
pool);
- status = test_start_server(tb->serv_ctx);
+ status = start_test_server(tb->serv_ctx);

return status;
}

+/* Setup a proxy server and an http server and the client context to
connect to
+ that proxy server */
apr_status_t
test_server_proxy_setup(test_baton_t **tb_p,
test_server_message_t *serv_message_list,
@@ -265,22 +270,22 @@
tb = *tb_p;

/* Prepare the server. */
- test_setup_server(&tb->serv_ctx, tb->serv_addr,
+ setup_test_server(&tb->serv_ctx, tb->serv_addr,
serv_message_list, serv_message_count,
serv_action_list, serv_action_count,
options,
pool);
- status = test_start_server(tb->serv_ctx);
+ status = start_test_server(tb->serv_ctx);
if (status != APR_SUCCESS)
return status;

/* Prepare the proxy. */
- test_setup_server(&tb->proxy_ctx, tb->proxy_addr,
+ setup_test_server(&tb->proxy_ctx, tb->proxy_addr,
proxy_message_list, proxy_message_count,
proxy_action_list, proxy_action_count,
options,
pool);
- status = test_start_server(tb->proxy_ctx);
+ status = start_test_server(tb->proxy_ctx);

return status;
}
Reply all
Reply to author
Forward
0 new messages