67 lines
2.2 KiB
Diff
67 lines
2.2 KiB
Diff
From 88d2e7e6a9e0eafbdc1c75068ef1b319d7a34e18 Mon Sep 17 00:00:00 2001
|
|
From: Michael Wallner <mike@php.net>
|
|
Date: Mon, 14 Sep 2020 11:00:58 +0200
|
|
Subject: [PATCH] memcapable: fix version test with v1.6+
|
|
|
|
---
|
|
clients/memcapable.cc | 34 +++++++++++++++++++++++++---------
|
|
1 file changed, 25 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/clients/memcapable.cc b/clients/memcapable.cc
|
|
index f735c2a5..6ae0aeea 100644
|
|
--- a/clients/memcapable.cc
|
|
+++ b/clients/memcapable.cc
|
|
@@ -63,6 +63,9 @@ static bool verbose= false;
|
|
/* The number of seconds to wait for an IO-operation */
|
|
static int timeout= 2;
|
|
|
|
+/* v1.6.x is more permissible */
|
|
+static bool v16x_or_greater = false;
|
|
+
|
|
/*
|
|
* Instead of having to cast between the different datatypes we create
|
|
* a union of all of the different types of pacages we want to send.
|
|
@@ -1279,20 +1282,33 @@ static enum test_return test_ascii_quit(void)
|
|
|
|
static enum test_return test_ascii_version(void)
|
|
{
|
|
- /* Verify that version command handles unknown options */
|
|
- execute(send_string("version foo bar\r\n"));
|
|
- execute(receive_error_response());
|
|
-
|
|
- /* version doesn't support noreply */
|
|
- execute(send_string("version noreply\r\n"));
|
|
- execute(receive_error_response());
|
|
-
|
|
- /* Verify that verify works */
|
|
+ /* Verify that version works */
|
|
execute(send_string("version\r\n"));
|
|
char buffer[256];
|
|
execute(receive_line(buffer, sizeof(buffer)));
|
|
verify(strncmp(buffer, "VERSION ", 8) == 0);
|
|
|
|
+ char *version = &buffer[sizeof("VERSION") + 2];
|
|
+ if (version[0] >= '1' || (version[0] == '1' && version[2] >= '6')) {
|
|
+ v16x_or_greater = true;
|
|
+ }
|
|
+
|
|
+ /* Verify that version command handles unknown options */
|
|
+ execute(send_string("version foo bar\r\n"));
|
|
+ if (v16x_or_greater) {
|
|
+ execute(receive_line(buffer, sizeof(buffer)));
|
|
+ verify(strncmp(buffer, "VERSION ", 8) == 0);
|
|
+ } else {
|
|
+ execute(receive_error_response());
|
|
+ }
|
|
+ /* version doesn't support noreply */
|
|
+ execute(send_string("version noreply\r\n"));
|
|
+ if (v16x_or_greater) {
|
|
+ execute(receive_line(buffer, sizeof(buffer)));
|
|
+ verify(strncmp(buffer, "VERSION ", 8) == 0);
|
|
+ } else {
|
|
+ execute(receive_error_response());
|
|
+ }
|
|
return TEST_PASS;
|
|
}
|
|
|