testing: memcat
authorMichael Wallner <mike@php.net>
Tue, 10 Nov 2020 13:06:57 +0000 (14:06 +0100)
committerMichael Wallner <mike@php.net>
Tue, 10 Nov 2020 13:07:00 +0000 (14:07 +0100)
ChangeLog-1.1.md
src/bin/memcat.cc
test/lib/common.hpp
test/tests/bin/memcat.cpp

index ada84c8627a661cbc3adf0f03fe84fae03749e27..2d5846a7e44c722a480cd658ba76a2062537aa40 100644 (file)
@@ -102,6 +102,7 @@ was incremented due to the following changes:
   clarify documentation on replication.
 * Fix [gh #95](https://github.com/m6w6/libmemcached/issues/95):
   MEMCACHED_CALLBACK_GET_FAILURE and MEMCACHED_BEHAVIOR_BUFFER_REQUESTS
+* Fix bin/memcat to output flags if requested with `--flag`.
 
 ---
 
index 84de35edcfc38b7ddccf5c92ea07b01335f3db46..50e213951e6f41029392c69999b2ce6c8ccbac6c 100644 (file)
@@ -97,8 +97,9 @@ int main(int argc, char *argv[]) {
     if (rc == MEMCACHED_SUCCESS) {
       if (opt_displayflag) {
         if (opt_verbose) {
-          std::cout << "key: " << argv[optind] << std::endl << "flags: " << flags << std::endl;
+          std::cout << "key: " << argv[optind] << std::endl << "flags: ";
         }
+        std::cout << flags << std::endl;
       } else {
         if (opt_verbose) {
           std::cout << "key: " << argv[optind] << std::endl
index 8942a729c35f67c0d6f7e43d34b6bee92d4f1520..e522f9cc194b19412460a136c491f1f318c810b4 100644 (file)
@@ -90,6 +90,17 @@ public:
   bool put(const char *buf, size_t len) const {
     return static_cast<ssize_t>(len) == write(fd, buf, len);
   }
+  string get() const {
+    string all;
+    char buf[200];
+    ssize_t len;
+
+    lseek(fd, 0, SEEK_SET);
+    while (0 < (len = read(fd, buf, sizeof(buf)))) {
+      all.append(buf, len);
+    }
+    return all;
+  }
 
 private:
   char fn[80];
index 4e91617e4d80f362d1db0dd0e8d5a676dad68cb6..b7390aeaf1226340c8f055e4d31e97a9606e1656 100644 (file)
@@ -15,6 +15,12 @@ TEST_CASE("bin/memcat") {
     REQUIRE(output == "No servers provided\n");
   }
 
+  SECTION("connection failure") {
+    string output;
+    CHECK_FALSE(sh.run("memcat --servers=localhost:" + random_port_string("-p") + " memcat", output));
+    REQUIRE_THAT(output, Contains("CONNECTION FAILURE"));
+  }
+
   SECTION("--help") {
     string output;
     REQUIRE(sh.run("memcat --help", output));
@@ -38,14 +44,6 @@ TEST_CASE("bin/memcat") {
 
     REQUIRE_SUCCESS(memcached_server_add(*memc, "localhost", port));
 
-    SECTION("found") {
-      REQUIRE_SUCCESS(memcached_set(*memc, S("memcat"), S("MEMCAT-SET"), 0, 0));
-
-      string output;
-      REQUIRE(sh.run(comm + "memcat", output));
-      REQUIRE(output == "MEMCAT-SET\n");
-    }
-
     SECTION("not found") {
       memcached_delete(*memc, S("memcat"), 0);
 
@@ -54,5 +52,27 @@ TEST_CASE("bin/memcat") {
       REQUIRE_THAT(output, !Contains("MEMCAT-SET"));
       REQUIRE_THAT(output, Contains("NOT FOUND"));
     }
+    SECTION("found") {
+      string output;
+      REQUIRE_SUCCESS(memcached_set(*memc, S("memcat"), S("MEMCAT-SET"), 0, 123));
+
+      SECTION("default") {
+        REQUIRE(sh.run(comm + "memcat", output));
+        REQUIRE(output == "MEMCAT-SET\n");
+      }
+      SECTION("flags") {
+        REQUIRE(sh.run(comm + "--flag memcat", output));
+        REQUIRE(output == "123\n");
+        output.clear();
+        REQUIRE(sh.run(comm + "--flag -v memcat", output));
+        REQUIRE(output == "key: memcat\nflags: 123\n");
+      }
+      SECTION("file") {
+        Tempfile temp;
+        REQUIRE(sh.run(comm + "--file " + temp.getFn() + " memcat", output));
+        REQUIRE(output.empty());
+        REQUIRE(temp.get() == "MEMCAT-SET");
+      }
+    }
   }
 }