Эх сурвалжийг харах

Merge pull request #2671 from infosiftr/memcached-basics

Add simple "memcached-basics" test
yosifkit 8 жил өмнө
parent
commit
52d4866669

+ 1 - 0
test/config.sh

@@ -107,6 +107,7 @@ imageTests+=(
 		logstash-basics
 	'
 	[memcached]='
+		memcached-basics
 	'
 	[mongo]='
 		mongo-basics

+ 66 - 0
test/tests/memcached-basics/run.sh

@@ -0,0 +1,66 @@
+#!/bin/bash
+set -Eeuo pipefail
+
+dir="$(dirname "$(readlink -f "$BASH_SOURCE")")"
+
+image="$1"
+
+# for "nc"
+clientImage='busybox'
+
+cname="memcached-container-$RANDOM-$RANDOM"
+cid="$(docker run -d --name "$cname" "$image")"
+trap "docker rm -vf $cid > /dev/null" EXIT
+
+# usage: memcached-command command-line [extra-line ...]
+#    ie: memcached-command 'stats'
+#        memcached-command 'set a 0 0 2' 'hi'
+memcached-command() {
+	{
+		for line; do
+			echo -n "$line"$'\r\n'
+		done
+	} \
+		| docker run --rm -i \
+			--link "$cname":memcached \
+			"$clientImage" nc memcached 11211 \
+		| tr -d '\r'
+}
+
+# https://github.com/memcached/memcached/blob/d9dfbe0e2613b9c20cb3c4fdd3c55d1bf3a8c8bd/doc/protocol.txt#L129-L205
+memcached-set() {
+	local key="$1"; shift
+	local flags="$1"; shift
+	local exptime="$1"; shift
+	local value="$1"; shift
+
+	local bytes="$(echo -n "$value" | wc -c)"
+
+	memcached-command \
+		"set $key $flags $exptime $bytes" \
+		"$value"
+}
+
+# https://github.com/memcached/memcached/blob/d9dfbe0e2613b9c20cb3c4fdd3c55d1bf3a8c8bd/doc/protocol.txt#L213-L247
+memcached-get() {
+	local key="$1"; shift
+
+	memcached-command \
+		"get $key"
+}
+
+memcached-conn-test() {
+	memcached-command 'stats' > /dev/null
+}
+
+. "$dir/../../retry.sh" 'memcached-conn-test'
+
+value='somevalue'
+res="$(memcached-set mykey 0 0 "$value")"
+exp='STORED'
+[ "$res" = "$exp" ]
+
+valLen="$(echo -n "$value" | wc -c)"
+res="$(memcached-get mykey)"
+exp='VALUE mykey 0 '"$valLen"$'\n'"$value"$'\n''END'
+[ "$res" = "$exp" ]