From cbe48da3ade49f65e0482b70f054850357271182 Mon Sep 17 00:00:00 2001 From: Loic Dachary Date: Mon, 17 Nov 2014 17:33:56 +0100 Subject: [PATCH] ceph_objectstore_tool: add hinfo_key tests for erasure coded objects When an hinfo_key attribute is found, assume an erasure coded object and verify set-attr/get-attr works as expected by removing its content and restoring it. Signed-off-by: Loic Dachary (cherry picked from commit d5912263731e79877a0ea459d3b7453a925402e3) --- tasks/ceph_objectstore_tool.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tasks/ceph_objectstore_tool.py b/tasks/ceph_objectstore_tool.py index d21236d0b5f2a..4e9c6dbf08b21 100644 --- a/tasks/ceph_objectstore_tool.py +++ b/tasks/ceph_objectstore_tool.py @@ -403,6 +403,22 @@ def task(ctx, config): if exp != val: log.error("For key {key} got value {got} instead of {expected}".format(key=key, got=val, expected=exp)) ERRORS += 1 + if "hinfo_key" in keys: + cmd_prefix = prefix.format(id=osdid) + cmd = """ + expected=$({prefix} --pgid {pg} '{json}' get-attr {key} | base64) + echo placeholder | {prefix} --pgid {pg} '{json}' set-attr {key} - + test $({prefix} --pgid {pg} '{json}' get-attr {key}) = placeholder + echo $expected | base64 --decode | {prefix} --pgid {pg} '{json}' set-attr {key} - + test $({prefix} --pgid {pg} '{json}' get-attr {key} | base64) = $expected + """.format(prefix=cmd_prefix, pg=pg, json=JSON, key="hinfo_key") + log.debug(cmd) + proc = remote.run(args=['bash', '-e', '-x', '-c', cmd], check_status=False, stdout=StringIO(), stderr=StringIO()) + proc.wait() + if proc.exitstatus != 0: + log.error("failed with " + str(proc.exitstatus)) + log.error(proc.stdout.getvalue() + " " + proc.stderr.getvalue()) + ERRORS += 1 if len(values) != 0: log.error("Not all keys found, remaining keys:") -- 2.39.5