TEST_F(RegistrarTest, readmit) { Registrar registrar(state); AWAIT_READY(registrar.recover(MasterInfo())); SlaveInfo info1; info1.set_hostname("localhost"); // Missing ID results in a failure. AWAIT_EXPECT_FAILED(registrar.readmit(info1)); SlaveID id1; id1.set_value("1"); info1.mutable_id()->CopyFrom(id1); SlaveID id2; id2.set_value("2"); SlaveInfo info2; info2.set_hostname("localhost"); info2.mutable_id()->CopyFrom(id2); AWAIT_EQ(true, registrar.admit(info1)); AWAIT_EQ(true, registrar.readmit(info1)); AWAIT_EQ(false, registrar.readmit(info2)); }
TEST_F(FilesTest, AttachTest) { Files files; ASSERT_SOME(os::write("file", "body")); ASSERT_SOME(os::mkdir("dir")); AWAIT_EXPECT_READY(files.attach("file", "myname")); // Valid file. AWAIT_EXPECT_READY(files.attach("dir", "mydir")); // Valid dir. AWAIT_EXPECT_READY(files.attach("file", "myname")); // Re-attach. AWAIT_EXPECT_FAILED(files.attach("missing", "somename")); // Missing file. ASSERT_SOME(os::write("file2", "body")); AWAIT_EXPECT_READY(files.attach("file2", "myname")); // Overwrite. AWAIT_EXPECT_FAILED(files.attach("$@", "foo")); // Bad path. }
TEST_F(RegistrarTest, recover) { Registrar registrar(state); SlaveInfo slave; slave.set_hostname("localhost"); SlaveID id; id.set_value("1"); slave.mutable_id()->CopyFrom(id); // Operations preceding recovery will fail. AWAIT_EXPECT_FAILED(registrar.admit(slave)); AWAIT_EXPECT_FAILED(registrar.readmit(slave)); AWAIT_EXPECT_FAILED(registrar.remove(slave)); MasterInfo info; info.set_id("foobar"); info.set_ip(0); info.set_port(5050); info.set_pid("0:5050"); Future<Registry> registry = registrar.recover(info); // Before waiting for the recovery to complete, invoke some // operations to ensure they do not fail. Future<bool> admit = registrar.admit(slave); Future<bool> readmit = registrar.readmit(slave); Future<bool> remove = registrar.remove(slave); AWAIT_READY(registry); EXPECT_EQ(info, registry.get().master().info()); AWAIT_EQ(true, admit); AWAIT_EQ(true, readmit); AWAIT_EQ(true, remove); }