X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Ftest-vconn.c;h=76757f4ff4f956ffb4b8faebfaa88e208ffc8702;hb=ecb229bebb9dd2687848dcebc10d2556ae1f2a87;hp=b3a9b2fe0d0653dee08c77113fb53818376370b2;hpb=6d1fb217a904374316abdc9050db795129f72a13;p=sliver-openvswitch.git diff --git a/tests/test-vconn.c b/tests/test-vconn.c index b3a9b2fe0..76757f4ff 100644 --- a/tests/test-vconn.c +++ b/tests/test-vconn.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2010, 2011, 2012 Nicira, Inc. + * Copyright (c) 2009, 2010, 2011, 2012, 2013 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ #include #include #include "command-line.h" +#include "fatal-signal.h" #include "ofp-msgs.h" #include "ofp-util.h" #include "ofpbuf.h" @@ -59,9 +60,9 @@ static void check_errno(int a, int b, const char *as, const char *file, int line) { if (a != b) { - char *str_b = strdup(strerror(abs(b))); + char *str_b = strdup(ovs_strerror(abs(b))); ovs_fatal(0, "%s:%d: %s is %d (%s) but should be %d (%s)", - file, line, as, a, strerror(abs(a)), b, str_b); + file, line, as, a, ovs_strerror(abs(a)), b, str_b); } } @@ -143,20 +144,32 @@ static void test_refuse_connection(int argc OVS_UNUSED, char *argv[]) { const char *type = argv[1]; - int expected_error; struct fake_pvconn fpv; struct vconn *vconn; - - expected_error = (!strcmp(type, "unix") ? EPIPE - : !strcmp(type, "tcp") ? ECONNRESET - : EPROTO); + int error; fpv_create(type, &fpv); - CHECK_ERRNO(vconn_open(fpv.vconn_name, OFP10_VERSION, &vconn, - DSCP_DEFAULT), 0); + CHECK_ERRNO(vconn_open(fpv.vconn_name, 0, DSCP_DEFAULT, &vconn), 0); fpv_close(&fpv); vconn_run(vconn); - CHECK_ERRNO(vconn_connect_block(vconn), expected_error); + + error = vconn_connect_block(vconn); + if (!strcmp(type, "tcp")) { + if (error != ECONNRESET && error != EPIPE) { + ovs_fatal(0, "unexpected vconn_connect() return value %d (%s)", + error, ovs_strerror(error)); + } + } else if (!strcmp(type, "unix")) { + CHECK_ERRNO(error, EPIPE); + } else if (!strcmp(type, "ssl")) { + if (error != EPROTO && error != ECONNRESET) { + ovs_fatal(0, "unexpected vconn_connect() return value %d (%s)", + error, ovs_strerror(error)); + } + } else { + ovs_fatal(0, "invalid connection type %s", type); + } + vconn_close(vconn); fpv_destroy(&fpv); } @@ -168,21 +181,26 @@ static void test_accept_then_close(int argc OVS_UNUSED, char *argv[]) { const char *type = argv[1]; - int expected_error; struct fake_pvconn fpv; struct vconn *vconn; - - expected_error = (!strcmp(type, "unix") ? EPIPE - : !strcmp(type, "tcp") ? ECONNRESET - : EPROTO); + int error; fpv_create(type, &fpv); - CHECK_ERRNO(vconn_open(fpv.vconn_name, OFP10_VERSION, &vconn, - DSCP_DEFAULT), 0); + CHECK_ERRNO(vconn_open(fpv.vconn_name, 0, DSCP_DEFAULT, &vconn), 0); vconn_run(vconn); stream_close(fpv_accept(&fpv)); fpv_close(&fpv); - CHECK_ERRNO(vconn_connect(vconn), expected_error); + + error = vconn_connect_block(vconn); + if (!strcmp(type, "tcp") || !strcmp(type, "unix")) { + if (error != ECONNRESET && error != EPIPE) { + ovs_fatal(0, "unexpected vconn_connect() return value %d (%s)", + error, ovs_strerror(error)); + } + } else { + CHECK_ERRNO(error, EPROTO); + } + vconn_close(vconn); fpv_destroy(&fpv); } @@ -197,10 +215,10 @@ test_read_hello(int argc OVS_UNUSED, char *argv[]) struct fake_pvconn fpv; struct vconn *vconn; struct stream *stream; + int error; fpv_create(type, &fpv); - CHECK_ERRNO(vconn_open(fpv.vconn_name, OFP10_VERSION, &vconn, - DSCP_DEFAULT), 0); + CHECK_ERRNO(vconn_open(fpv.vconn_name, 0, DSCP_DEFAULT, &vconn), 0); vconn_run(vconn); stream = fpv_accept(&fpv); fpv_destroy(&fpv); @@ -229,7 +247,11 @@ test_read_hello(int argc OVS_UNUSED, char *argv[]) poll_block(); } stream_close(stream); - CHECK_ERRNO(vconn_connect_block(vconn), ECONNRESET); + error = vconn_connect_block(vconn); + if (error != ECONNRESET && error != EPIPE) { + ovs_fatal(0, "unexpected vconn_connect() return value %d (%s)", + error, ovs_strerror(error)); + } vconn_close(vconn); } @@ -249,8 +271,7 @@ test_send_hello(const char *type, const void *out, size_t out_size, size_t n_sent; fpv_create(type, &fpv); - CHECK_ERRNO(vconn_open(fpv.vconn_name, OFP10_VERSION, &vconn, - DSCP_DEFAULT), 0); + CHECK_ERRNO(vconn_open(fpv.vconn_name, 0, DSCP_DEFAULT, &vconn), 0); vconn_run(vconn); stream = fpv_accept(&fpv); fpv_destroy(&fpv); @@ -416,7 +437,7 @@ main(int argc, char *argv[]) set_program_name(argv[0]); vlog_set_levels(NULL, VLF_ANY_FACILITY, VLL_EMER); vlog_set_levels(NULL, VLF_CONSOLE, VLL_DBG); - signal(SIGPIPE, SIG_IGN); + fatal_ignore_sigpipe(); time_alarm(10);