diff options
author | Brian Aker <brian@tangent.org> | 2013-04-03 03:14:23 -1000 |
---|---|---|
committer | Brian Aker <brian@tangent.org> | 2013-04-03 03:14:23 -1000 |
commit | 11f4bea247e162b63c978508521fda13bf093fd9 (patch) | |
tree | cf3a7eca33881b8c15dbdcd80b462f1a8a1d52b3 /tests/memping.cc | |
parent | 3193d115e56f27dac4b135e2a6522e7a4f9a7776 (diff) | |
parent | 9f5111c5c449fec4e94023bbfd803d3ac65cc993 (diff) | |
download | libmemcached-11f4bea247e162b63c978508521fda13bf093fd9.tar.gz |
Merge 1.0 tree
Diffstat (limited to 'tests/memping.cc')
-rw-r--r-- | tests/memping.cc | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/tests/memping.cc b/tests/memping.cc new file mode 100644 index 00000000..6161611d --- /dev/null +++ b/tests/memping.cc @@ -0,0 +1,121 @@ +/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab: + * + * Test memping + * + * Copyright (C) 2011-2013 Data Differential, http://datadifferential.com/ + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * The names of its contributors may not be used to endorse or + * promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +/* + Test that we are cycling the servers we are creating during testing. +*/ + +#include <mem_config.h> + +#include <libtest/test.hpp> +#include <libmemcached-1.2/memcached.h> + +using namespace libtest; + +#ifndef __INTEL_COMPILER +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif + +static std::string executable("clients/memping"); + +static test_return_t help_test(void *) +{ + const char *args[]= { "--help", 0 }; + + test_compare(EXIT_SUCCESS, exec_cmdline(executable, args, true)); + + return TEST_SUCCESS; +} + +static test_return_t ping_TEST(void *) +{ + char buffer[1024]; + snprintf(buffer, sizeof(buffer), "--server=localhost:%d", int(default_port())); + const char *args[]= { buffer, 0 }; + + test_compare(EXIT_SUCCESS, exec_cmdline(executable, args, true)); + + return TEST_SUCCESS; +} + +static test_return_t NOT_FOUND_TEST(void *) +{ + char buffer[1024]; + snprintf(buffer, sizeof(buffer), "--server=nonexist.libmemcached.org:%d", int(default_port())); + const char *args[]= { buffer, 0 }; + + test_compare(EXIT_FAILURE, exec_cmdline(executable, args, true)); + + return TEST_SUCCESS; +} + +test_st memping_TESTS[] ={ + {"--help", true, help_test }, + {"ping(FOUND)", true, ping_TEST }, + {"ping(NOT_FOUND)", true, NOT_FOUND_TEST }, + {0, 0, 0} +}; + +collection_st collection[] ={ + {"memping", 0, 0, memping_TESTS }, + {0, 0, 0, 0} +}; + +static void *world_create(server_startup_st& servers, test_return_t& error) +{ + if (libtest::has_memcached() == false) + { + error= TEST_SKIPPED; + return NULL; + } + + if (server_startup(servers, "memcached", libtest::default_port(), NULL) == false) + { + error= TEST_FAILURE; + } + + return &servers; +} + + +void get_world(libtest::Framework* world) +{ + world->collections(collection); + world->create(world_create); +} + + |