From: Loic Dachary Date: Sun, 9 Feb 2014 20:17:31 +0000 (+0100) Subject: crush: add CrushWrapper::dump_rules() unit test X-Git-Tag: v0.78~184^2~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f77e8ea268fce1b6c5acc077dcd8fa93066a347d;p=ceph.git crush: add CrushWrapper::dump_rules() unit test Signed-off-by: Loic Dachary --- diff --git a/src/test/crush/TestCrushWrapper.cc b/src/test/crush/TestCrushWrapper.cc index 7fd57f4d6062..ec74cd0f1e7b 100644 --- a/src/test/crush/TestCrushWrapper.cc +++ b/src/test/crush/TestCrushWrapper.cc @@ -27,6 +27,7 @@ #include "global/global_init.h" #include "global/global_context.h" #include "include/Context.h" +#include "osd/osd_types.h" #include "crush/CrushWrapper.h" @@ -471,6 +472,63 @@ TEST(CrushWrapper, is_valid_crush_loc) { } } +TEST(CrushWrapper, dump_rules) { + CrushWrapper *c = new CrushWrapper; + + const int ROOT_TYPE = 1; + c->set_type_name(ROOT_TYPE, "root"); + const int OSD_TYPE = 0; + c->set_type_name(OSD_TYPE, "osd"); + + string failure_domain_type("osd"); + string root_name("default"); + int rootno; + c->add_bucket(0, CRUSH_BUCKET_STRAW, CRUSH_HASH_RJENKINS1, + ROOT_TYPE, 0, NULL, NULL, &rootno); + c->set_item_name(rootno, root_name); + + int item = 0; + + pair loc; + int ret; + loc = c->get_immediate_parent(item, &ret); + EXPECT_EQ(-ENOENT, ret); + + { + map loc; + loc["root"] = root_name; + + EXPECT_EQ(0, c->insert_item(g_ceph_context, item, 1.0, + "osd.0", loc)); + } + + // no ruleset by default + { + Formatter *f = new_formatter("json-pretty"); + c->dump_rules(f); + stringstream ss; + f->flush(ss); + delete f; + EXPECT_EQ("", ss.str()); + } + + string name("NAME"); + int ruleset = c->add_simple_ruleset(name, root_name, failure_domain_type, + "firstn", pg_pool_t::TYPE_ERASURE); + EXPECT_EQ(0, ruleset); + + { + Formatter *f = new_formatter("xml"); + c->dump_rules(f); + stringstream ss; + f->flush(ss); + delete f; + EXPECT_EQ(0, ss.str().find("0NAME")); + } + + delete c; +} + int main(int argc, char **argv) { vector args; argv_to_vec(argc, (const char **)argv, args);