From af00c49be513eef012f776b34681febf8bb74d4b Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Tue, 13 Oct 2020 15:16:20 +0200 Subject: [PATCH] testing: memcapable --- test/tests/bin/memcapable.cpp | 50 ++++++++++++++ tests/memcapable.cc | 126 ---------------------------------- 2 files changed, 50 insertions(+), 126 deletions(-) create mode 100644 test/tests/bin/memcapable.cpp delete mode 100644 tests/memcapable.cc diff --git a/test/tests/bin/memcapable.cpp b/test/tests/bin/memcapable.cpp new file mode 100644 index 00000000..1b09e062 --- /dev/null +++ b/test/tests/bin/memcapable.cpp @@ -0,0 +1,50 @@ +#include "test/lib/common.hpp" +#include "test/lib/Shell.hpp" +#include "test/lib/Server.hpp" + +using Catch::Matchers::Contains; + +TEST_CASE("bin/memcapable") { + Shell sh{string{TESTING_ROOT "/../src/bin"}}; + + SECTION("no servers provided") { + string output; + REQUIRE_FALSE(sh.run("memcapable", output)); + REQUIRE(output == "No hostname was provided.\n"); + } + + SECTION("--help") { + string output; + + REQUIRE(sh.run("memcapable --help", output)); + REQUIRE_THAT(output, Contains("memcapable") && Contains("binary") && Contains("ascii")); + } + + SECTION("with server") { + Server server{MEMCACHED_BINARY, {"-p", random_port_string}}; + + REQUIRE(server.ensureListening()); + + SECTION("ascii only") { + string output; + REQUIRE(sh.run("memcapable -a -h localhost -p " + to_string(get(server.getSocketOrPort())), output)); + REQUIRE_THAT(output, Contains("pass") && Contains("ascii")); + REQUIRE_THAT(output, !Contains("fail") && !Contains("binary")); + } + SECTION("binary only") { + string output; + REQUIRE(sh.run("memcapable -b -h localhost -p " + to_string(get(server.getSocketOrPort())), output)); + REQUIRE_THAT(output, Contains("pass") && Contains("binary")); + REQUIRE_THAT(output, !Contains("fail") && !Contains("ascii")); + } + SECTION("ascii and binary") { + string output; + REQUIRE(sh.run("memcapable -h localhost -p " + to_string(get(server.getSocketOrPort())), output)); + REQUIRE_THAT(output, Contains("pass") && Contains("ascii") && Contains("binary")); + REQUIRE_THAT(output, !Contains("fail")); + } + + // fast exit + server.signal(SIGKILL); + } +} diff --git a/tests/memcapable.cc b/tests/memcapable.cc deleted file mode 100644 index 2bd1aec2..00000000 --- a/tests/memcapable.cc +++ /dev/null @@ -1,126 +0,0 @@ -/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab: - * - * Test memcapable - * - * Copyright (C) 2011 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.0/memcached.h" - -using namespace libtest; - -#ifndef __INTEL_COMPILER -# pragma GCC diagnostic ignored "-Wstrict-aliasing" -#endif - -static std::string executable; - -static test_return_t quiet_test(void *) -{ - char buffer[1024]; - snprintf(buffer, sizeof(buffer), "%d", int(get_free_port())); - const char *args[]= { "-p", buffer, "-q", 0 }; - - test_compare(EXIT_FAILURE, exec_cmdline(executable, args, true)); - - return TEST_SUCCESS; -} - -static test_return_t help_test(void *) -{ - const char *args[]= { "-h", 0 }; - - test_compare(EXIT_SUCCESS, exec_cmdline(executable, args, true)); - - return TEST_SUCCESS; -} - -static test_return_t ascii_test(void *) -{ - char buffer[1024]; - snprintf(buffer, sizeof(buffer), "%d", int(default_port())); - const char *args[]= { "-p", buffer, "-a", 0 }; - - test_true(exec_cmdline(executable, args, true) <= EXIT_FAILURE); - - return TEST_SUCCESS; -} - -static test_return_t binary_test(void *) -{ - char buffer[1024]; - snprintf(buffer, sizeof(buffer), "%d", int(default_port())); - const char *args[]= { "-p", buffer, "-b", 0 }; - - test_true(exec_cmdline(executable, args, true) <= EXIT_FAILURE); - - return TEST_SUCCESS; -} - -test_st memcapable_tests[] ={ - {"--quiet", 0, quiet_test}, - {"-h", 0, help_test}, - {"-a, ascii", 0, ascii_test}, - {"-b, binary", 0, binary_test}, - {0, 0, 0} -}; - -collection_st collection[] ={ - {"memcapable", 0, 0, memcapable_tests }, - {0, 0, 0, 0} -}; - -static void *world_create(server_startup_st& servers, test_return_t&) -{ - SKIP_UNLESS(libtest::has_memcached()); - - SKIP_UNLESS(server_startup(servers, "memcached", libtest::default_port(), NULL)); - - return &servers; -} - - -void get_world(libtest::Framework* world) -{ - executable= "./src/bin/memcapable"; - world->collections(collection); - world->create(world_create); -} - -- 2.30.2