Commit 1ae0863d authored by Dominik Charousset's avatar Dominik Charousset

Fix and re-enable serial_reply unit test suite

parent 82a9823c
......@@ -301,6 +301,7 @@ caf_add_test_suites(caf-core-test
request_timeout
result
selective_streaming
serial_reply
serialization
settings
simple_timeout
......
......@@ -274,6 +274,13 @@ CAF_BEGIN_TYPE_ID_BLOCK(core_test, caf::first_custom_type_id)
ADD_ATOM(abc_atom)
ADD_ATOM(get_state_atom)
ADD_ATOM(name_atom)
ADD_ATOM(sub0_atom)
ADD_ATOM(sub1_atom)
ADD_ATOM(sub2_atom)
ADD_ATOM(sub3_atom)
ADD_ATOM(sub4_atom)
ADD_ATOM(hi_atom)
ADD_ATOM(ho_atom)
CAF_END_TYPE_ID_BLOCK(core_test)
......
......@@ -29,11 +29,13 @@ CAF_TEST(test_serial_reply) {
actor_system system{cfg};
auto mirror_behavior = [=](event_based_actor* self) -> behavior {
self->set_default_handler(reflect);
return {[] {
// nop
}};
return {
[] {
// nop
},
};
};
auto master = system.spawn([=](event_based_actor* self) {
auto master = system.spawn([=](event_based_actor* self) -> behavior {
CAF_MESSAGE("ID of master: " << self->id());
// spawn 5 mirror actors
auto c0 = self->spawn<linked>(mirror_behavior);
......@@ -41,36 +43,36 @@ CAF_TEST(test_serial_reply) {
auto c2 = self->spawn<linked>(mirror_behavior);
auto c3 = self->spawn<linked>(mirror_behavior);
auto c4 = self->spawn<linked>(mirror_behavior);
self->become([=](int) mutable {
auto rp = self->make_response_promise();
CAF_MESSAGE("received 'hi there'");
self->request(c0, infinite, sub0_atom::value)
.then([=](sub0_atom) mutable {
return {
[=](hi_atom) mutable {
auto rp = self->make_response_promise();
CAF_MESSAGE("received 'hi there'");
self->request(c0, infinite, sub0_atom_v).then([=](sub0_atom) mutable {
CAF_MESSAGE("received 'sub0'");
self->request(c1, infinite, sub1_atom::value)
.then([=](sub1_atom) mutable {
CAF_MESSAGE("received 'sub1'");
self->request(c2, infinite, sub2_atom::value)
.then([=](sub2_atom) mutable {
CAF_MESSAGE("received 'sub2'");
self->request(c3, infinite, sub3_atom::value)
.then([=](sub3_atom) mutable {
CAF_MESSAGE("received 'sub3'");
self->request(c4, infinite, sub4_atom::value)
.then([=](sub4_atom) mutable {
CAF_MESSAGE("received 'sub4'");
rp.deliver(ho_atom::value);
});
});
});
});
self->request(c1, infinite, sub1_atom_v).then([=](sub1_atom) mutable {
CAF_MESSAGE("received 'sub1'");
self->request(c2, infinite, sub2_atom_v)
.then([=](sub2_atom) mutable {
CAF_MESSAGE("received 'sub2'");
self->request(c3, infinite, sub3_atom_v)
.then([=](sub3_atom) mutable {
CAF_MESSAGE("received 'sub3'");
self->request(c4, infinite, sub4_atom_v)
.then([=](sub4_atom) mutable {
CAF_MESSAGE("received 'sub4'");
rp.deliver(ho_atom_v);
});
});
});
});
});
});
},
};
});
scoped_actor self{system};
CAF_MESSAGE("ID of main: " << self->id());
self->request(master, infinite, hi_atom::value)
self->request(master, infinite, hi_atom_v)
.receive([](ho_atom) { CAF_MESSAGE("received 'ho'"); },
[&](const error& err) { CAF_ERROR("Error: " << to_string(err)); });
[&](const error& err) { CAF_ERROR("Error: " << err); });
CAF_REQUIRE(self->mailbox().empty());
}
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