From: Loic Dachary Date: Mon, 17 Nov 2014 16:33:56 +0000 (+0100) Subject: ceph_objectstore_tool: add hinfo_key tests for erasure coded objects X-Git-Tag: v0.94.10~27^2^2~233^2~9 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d5912263731e79877a0ea459d3b7453a925402e3;p=ceph.git 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 --- diff --git a/tasks/ceph_objectstore_tool.py b/tasks/ceph_objectstore_tool.py index d21236d0b5f..4e9c6dbf08b 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:")