Commit 674bb331 authored by Jakob Otto's avatar Jakob Otto

Fix resolve test

parent 71a965d3
...@@ -85,7 +85,7 @@ public: ...@@ -85,7 +85,7 @@ public:
return err; return err;
} }
mpx->register_reading(mgr); mpx->register_reading(mgr);
peers_.emplace(peer_id, std::move(mgr)); peers_[peer_id] = std::move(mgr);
return peers_[peer_id]; return peers_[peer_id];
} }
......
...@@ -89,7 +89,6 @@ public: ...@@ -89,7 +89,6 @@ public:
template <class Handle = actor> template <class Handle = actor>
expected<Handle> remote_actor(const uri& locator) { expected<Handle> remote_actor(const uri& locator) {
// TODO: Use function view?
scoped_actor self{sys_}; scoped_actor self{sys_};
resolve(locator, self); resolve(locator, self);
Handle handle; Handle handle;
......
...@@ -68,9 +68,7 @@ struct config : actor_system_config { ...@@ -68,9 +68,7 @@ struct config : actor_system_config {
class planet_driver { class planet_driver {
public: public:
virtual ~planet_driver() { virtual ~planet_driver() = default;
// nop
}
virtual bool handle_io_event() = 0; virtual bool handle_io_event() = 0;
}; };
...@@ -100,7 +98,8 @@ private: ...@@ -100,7 +98,8 @@ private:
struct fixture : host_fixture, planet_driver { struct fixture : host_fixture, planet_driver {
fixture() : earth(*this), mars(*this) { fixture() : earth(*this), mars(*this) {
run(); earth.run();
mars.run();
CAF_REQUIRE_EQUAL(earth.mpx->num_socket_managers(), 2); CAF_REQUIRE_EQUAL(earth.mpx->num_socket_managers(), 2);
CAF_REQUIRE_EQUAL(mars.mpx->num_socket_managers(), 2); CAF_REQUIRE_EQUAL(mars.mpx->num_socket_managers(), 2);
} }
...@@ -109,11 +108,6 @@ struct fixture : host_fixture, planet_driver { ...@@ -109,11 +108,6 @@ struct fixture : host_fixture, planet_driver {
return earth.mpx->poll_once(false) || mars.mpx->poll_once(false); return earth.mpx->poll_once(false) || mars.mpx->poll_once(false);
} }
void set_thread_id() {
earth.mpx->set_thread_id();
mars.mpx->set_thread_id();
}
void run() { void run() {
earth.run(); earth.run();
} }
...@@ -134,9 +128,14 @@ CAF_TEST(doorman accept) { ...@@ -134,9 +128,14 @@ CAF_TEST(doorman accept) {
auth.port = backend->port(); auth.port = backend->port();
CAF_MESSAGE("trying to connect to earth at " << CAF_ARG(auth)); CAF_MESSAGE("trying to connect to earth at " << CAF_ARG(auth));
auto sock = make_connected_tcp_stream_socket(auth); auto sock = make_connected_tcp_stream_socket(auth);
run();
CAF_CHECK(sock); CAF_CHECK(sock);
auto guard = make_socket_guard(*sock); auto guard = make_socket_guard(*sock);
int runs = 0;
while (earth.mpx->num_socket_managers() < 3) {
if (++runs >= 5)
CAF_FAIL("doorman did not create endpoint_manager");
run();
}
CAF_CHECK_EQUAL(earth.mpx->num_socket_managers(), 3); CAF_CHECK_EQUAL(earth.mpx->num_socket_managers(), 3);
} }
...@@ -158,21 +157,21 @@ CAF_TEST(connect) { ...@@ -158,21 +157,21 @@ CAF_TEST(connect) {
CAF_TEST(publish) { CAF_TEST(publish) {
auto dummy = earth.sys.spawn(dummy_actor); auto dummy = earth.sys.spawn(dummy_actor);
auto path = "name/dummy"s; auto path = "dummy"s;
CAF_MESSAGE("publishing actor " << CAF_ARG(path)); CAF_MESSAGE("publishing actor " << CAF_ARG(path));
earth.mm.publish(dummy, path); earth.mm.publish(dummy, path);
CAF_MESSAGE("check registry for " << CAF_ARG(path)); CAF_MESSAGE("check registry for " << CAF_ARG(path));
CAF_CHECK_NOT_EQUAL(earth.sys.registry().get(path), nullptr); CAF_CHECK_NOT_EQUAL(earth.sys.registry().get(path), nullptr);
} }
CAF_TEST(remote_actor) { CAF_TEST(resolve) {
using std::chrono::milliseconds; using std::chrono::milliseconds;
using std::chrono::seconds; using std::chrono::seconds;
auto sockets = unbox(make_stream_socket_pair()); auto sockets = unbox(make_stream_socket_pair());
auto earth_be = reinterpret_cast<net::backend::tcp*>(earth.mm.backend("tcp")); auto earth_be = reinterpret_cast<net::backend::tcp*>(earth.mm.backend("tcp"));
earth_be->emplace(mars.id(), sockets.first); CAF_CHECK(earth_be->emplace(mars.id(), sockets.first));
auto mars_be = reinterpret_cast<net::backend::tcp*>(mars.mm.backend("tcp")); auto mars_be = reinterpret_cast<net::backend::tcp*>(mars.mm.backend("tcp"));
mars_be->emplace(earth.id(), sockets.second); CAF_CHECK(mars_be->emplace(earth.id(), sockets.second));
handle_io_event(); handle_io_event();
CAF_CHECK_EQUAL(earth.mpx->num_socket_managers(), 3); CAF_CHECK_EQUAL(earth.mpx->num_socket_managers(), 3);
CAF_CHECK_EQUAL(mars.mpx->num_socket_managers(), 3); CAF_CHECK_EQUAL(mars.mpx->num_socket_managers(), 3);
...@@ -180,21 +179,20 @@ CAF_TEST(remote_actor) { ...@@ -180,21 +179,20 @@ CAF_TEST(remote_actor) {
earth.mm.publish(dummy, "dummy"s); earth.mm.publish(dummy, "dummy"s);
auto locator = unbox(make_uri("tcp://earth/name/dummy"s)); auto locator = unbox(make_uri("tcp://earth/name/dummy"s));
CAF_MESSAGE("resolve " << CAF_ARG(locator)); CAF_MESSAGE("resolve " << CAF_ARG(locator));
bool running = true; mars.mm.resolve(locator, mars.self);
auto f = [&]() { mars.run();
set_thread_id(); earth.run();
while (running) { mars.run();
handle_io_event(); mars.self->receive(
std::this_thread::sleep_for(milliseconds(100)); [](strong_actor_ptr& ptr, const std::set<std::string>&) {
} CAF_MESSAGE("resolved actor!");
}; CAF_CHECK_NOT_EQUAL(ptr, nullptr);
std::thread t{f}; },
auto proxy = unbox(mars.mm.remote_actor(locator)); [](const error& err) {
CAF_MESSAGE("resolved actor"); CAF_FAIL("got error while resolving: " << CAF_ARG(err));
CAF_CHECK(proxy != nullptr); },
running = false; after(std::chrono::seconds(0)) >>
t.join(); [] { CAF_FAIL("manager did not respond with a proxy."); });
set_thread_id();
} }
CAF_TEST_FIXTURE_SCOPE_END() CAF_TEST_FIXTURE_SCOPE_END()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment