FC Updates from BitShares and myself #21
2 changed files with 10 additions and 46 deletions
|
|
@ -207,7 +207,7 @@ namespace fc { namespace http {
|
||||||
_server_thread.async( [&](){
|
_server_thread.async( [&](){
|
||||||
auto new_con = std::make_shared<websocket_connection_impl<websocket_server_type::connection_ptr>>( _server.get_con_from_hdl(hdl) );
|
auto new_con = std::make_shared<websocket_connection_impl<websocket_server_type::connection_ptr>>( _server.get_con_from_hdl(hdl) );
|
||||||
_on_connection( _connections[hdl] = new_con );
|
_on_connection( _connections[hdl] = new_con );
|
||||||
if ( !_closed )
|
if ( !_closed || _closed->ready() )
|
||||||
_closed = new fc::promise<void>();
|
_closed = new fc::promise<void>();
|
||||||
}).wait();
|
}).wait();
|
||||||
});
|
});
|
||||||
|
|
@ -216,7 +216,6 @@ namespace fc { namespace http {
|
||||||
auto current_con = _connections.find(hdl);
|
auto current_con = _connections.find(hdl);
|
||||||
assert( current_con != _connections.end() );
|
assert( current_con != _connections.end() );
|
||||||
wdump(("server")(msg->get_payload()));
|
wdump(("server")(msg->get_payload()));
|
||||||
//std::cerr<<"recv: "<<msg->get_payload()<<"\n";
|
|
||||||
auto payload = msg->get_payload();
|
auto payload = msg->get_payload();
|
||||||
std::shared_ptr<websocket_connection> con = current_con->second;
|
std::shared_ptr<websocket_connection> con = current_con->second;
|
||||||
++_pending_messages;
|
++_pending_messages;
|
||||||
|
|
|
||||||
|
|
@ -20,21 +20,8 @@ BOOST_AUTO_TEST_CASE(websocket_test)
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
bool listen_ok = false;
|
server.listen( 0 );
|
||||||
for( int i = 0; !listen_ok && i < 5; ++i )
|
port = server.get_listening_port();
|
||||||
{
|
|
||||||
port = std::rand() % 50000 + 10000;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
server.listen( port );
|
|
||||||
listen_ok = true;
|
|
||||||
}
|
|
||||||
catch( std::exception& ignore )
|
|
||||||
{
|
|
||||||
// if the port is busy, listen() will throw a std::exception, do nothing here.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BOOST_REQUIRE( listen_ok );
|
|
||||||
|
|
||||||
server.start_accept();
|
server.start_accept();
|
||||||
|
|
||||||
|
|
@ -44,49 +31,27 @@ BOOST_AUTO_TEST_CASE(websocket_test)
|
||||||
echo = s;
|
echo = s;
|
||||||
});
|
});
|
||||||
c_conn->send_message( "hello world" );
|
c_conn->send_message( "hello world" );
|
||||||
fc::usleep( fc::seconds(1) );
|
fc::usleep( fc::milliseconds(100) );
|
||||||
BOOST_CHECK_EQUAL("echo: hello world", echo);
|
BOOST_CHECK_EQUAL("echo: hello world", echo);
|
||||||
c_conn->send_message( "again" );
|
c_conn->send_message( "again" );
|
||||||
fc::usleep( fc::seconds(1) );
|
fc::usleep( fc::milliseconds(100) );
|
||||||
BOOST_CHECK_EQUAL("echo: again", echo);
|
BOOST_CHECK_EQUAL("echo: again", echo);
|
||||||
|
|
||||||
s_conn->close(0, "test");
|
s_conn->close(0, "test");
|
||||||
fc::usleep( fc::seconds(1) );
|
fc::usleep( fc::milliseconds(100) );
|
||||||
try {
|
BOOST_CHECK_THROW(c_conn->send_message( "again" ), fc::exception);
|
||||||
c_conn->send_message( "again" );
|
|
||||||
BOOST_FAIL("expected assertion failure");
|
|
||||||
} catch (const fc::exception& e) {
|
|
||||||
//std::cerr << e.to_string() << "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
c_conn = client.connect( "ws://localhost:" + fc::to_string(port) );
|
c_conn = client.connect( "ws://localhost:" + fc::to_string(port) );
|
||||||
c_conn->on_message_handler([&](const std::string& s){
|
c_conn->on_message_handler([&](const std::string& s){
|
||||||
echo = s;
|
echo = s;
|
||||||
});
|
});
|
||||||
c_conn->send_message( "hello world" );
|
c_conn->send_message( "hello world" );
|
||||||
fc::usleep( fc::seconds(1) );
|
fc::usleep( fc::milliseconds(100) );
|
||||||
BOOST_CHECK_EQUAL("echo: hello world", echo);
|
BOOST_CHECK_EQUAL("echo: hello world", echo);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
BOOST_CHECK_THROW(c_conn->send_message( "again" ), fc::assert_exception);
|
||||||
c_conn->send_message( "again" );
|
BOOST_CHECK_THROW(client.connect( "ws://localhost:" + fc::to_string(port) ), fc::exception);
|
||||||
BOOST_FAIL("expected assertion failure");
|
|
||||||
} catch (const fc::assert_exception& e) {
|
|
||||||
std::cerr << "Expected assertion failure : " << e.to_string() << "\n";
|
|
||||||
} catch (const fc::exception& e) {
|
|
||||||
BOOST_FAIL("Unexpected exception : " + e.to_string());
|
|
||||||
} catch (const std::exception& e) {
|
|
||||||
BOOST_FAIL("Unexpected exception : " + std::string(e.what()));
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
c_conn = client.connect( "ws://localhost:" + fc::to_string(port) );
|
|
||||||
BOOST_FAIL("expected fc::exception (fail to connect)");
|
|
||||||
} catch (const fc::exception& e) {
|
|
||||||
std::cerr << "Excepted fc::exception : " << e.to_string() << "\n";
|
|
||||||
} catch (const std::exception& e) {
|
|
||||||
BOOST_FAIL("Unexpected exception : " + std::string(e.what()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue