logging.info("Correctly failed with message \"" + errmsg + "\"")
return 0
else:
- logging.error("Bad message to stderr \"" + e.output + "\"")
+ errmsg = e.output.split('\n')[0]
+ logging.error("Bad message to stderr \"" + errmsg + "\"")
return 1
cmd = (CFSD_PREFIX + "--op remove").format(osd=ONEOSD)
ERRORS += test_failure(cmd, "Must provide pgid")
- # Don't secify a --op
+ # Don't secify a --op nor object command
cmd = CFSD_PREFIX.format(osd=ONEOSD)
ERRORS += test_failure(cmd, "Must provide --op or object command...")
cmd = (CFSD_PREFIX + "--op oops").format(osd=ONEOSD)
ERRORS += test_failure(cmd, "Must provide --op (info, log, remove, export, import, list, fix-lost, list-pgs, rm-past-intervals, set-allow-sharded-objects, dump-journal, dump-super)")
+ # Provide just the object param not a command
+ cmd = (CFSD_PREFIX + "object").format(osd=ONEOSD)
+ ERRORS += test_failure(cmd, "Invalid syntax, missing command")
+
+ # Provide an object name that doesn't exist
+ cmd = (CFSD_PREFIX + "NON_OBJECT get-bytes").format(osd=ONEOSD)
+ ERRORS += test_failure(cmd, "No object id 'NON_OBJECT' found")
+
+ # Provide an invalid object command
+ cmd = (CFSD_PREFIX + "--pgid {pg} '' notacommand").format(osd=ONEOSD, pg=ONEPG)
+ ERRORS += test_failure(cmd, "Unknown object command 'notacommand'")
+
TMPFILE = r"/tmp/tmp.{pid}".format(pid=pid)
ALLPGS = OBJREPPGS + OBJECPGS
OSDS = get_osds(ALLPGS[0], OSDDIR)
usage(desc);
myexit(1);
}
- if (op != "list" && vm.count("object") && !vm.count("objcmd")) {
- cerr << "Invalid syntax, missing command" << std::endl;
- usage(desc);
- myexit(1);
- }
- if (!vm.count("op") && !(vm.count("object") && vm.count("objcmd"))) {
+ if (!vm.count("op") && !vm.count("object")) {
cerr << "Must provide --op or object command..." << std::endl;
usage(desc);
myexit(1);
usage(desc);
myexit(1);
}
+ if (op != "list" && vm.count("object") && !vm.count("objcmd")) {
+ cerr << "Invalid syntax, missing command" << std::endl;
+ usage(desc);
+ myexit(1);
+ }
outistty = isatty(STDOUT_FILENO);
file_fd = fd_none;
if (lookup.size() != 1) {
stringstream ss;
if (lookup.size() == 0)
- ss << objcmd << ": " << cpp_strerror(ENOENT);
+ ss << "No object id '" << object << "' found";
else
- ss << "expected a single object named '" << object
- << "' but got " << lookup.size() << " instead";
+ ss << "Found " << lookup.size() << " objects with id '" << object
+ << "', please use a JSON spec from --op list instead";
throw std::runtime_error(ss.str());
}
pair<coll_t, ghobject_t> found = lookup.pop();