Bug #11301 » 0001-Add-test-case-for-clean-client-server-shutdown.patch
| test/http/HttpClientServerTest.C | ||
|---|---|---|
|
Exception,
|
||
|
};
|
||
|
constexpr auto SimulatedWorkTime = std::chrono::milliseconds{500};
|
||
|
class TestResource : public WResource
|
||
|
{
|
||
|
public:
|
||
| ... | ... | |
|
: delaySendingBody_(false),
|
||
|
haveEverMoreData_(false),
|
||
|
haveRandomMoreData_(false),
|
||
|
simulateWork_(false),
|
||
|
aborted_(0)
|
||
|
{ }
|
||
| ... | ... | |
|
return aborted_;
|
||
|
}
|
||
|
void simulateWork() {
|
||
|
simulateWork_ = true;
|
||
|
}
|
||
|
virtual void handleRequest(const Http::Request& request,
|
||
|
Http::Response& response) override
|
||
|
{
|
||
|
if (simulateWork_)
|
||
|
std::this_thread::sleep_for(SimulatedWorkTime);
|
||
|
switch (type_) {
|
||
|
case TestType::Simple:
|
||
|
return handleSimple(request, response);
|
||
| ... | ... | |
|
bool delaySendingBody_;
|
||
|
bool haveEverMoreData_;
|
||
|
bool haveRandomMoreData_;
|
||
|
bool simulateWork_;
|
||
|
int aborted_;
|
||
|
TestType type_ = TestType::Simple;
|
||
| ... | ... | |
|
}
|
||
|
}
|
||
|
BOOST_AUTO_TEST_CASE( http_client_server_clean_shutdown )
|
||
|
{
|
||
|
Server server;
|
||
|
server.resource().setType(TestType::Continuation);
|
||
|
server.resource().simulateWork();
|
||
|
if (server.start()) {
|
||
|
Client client;
|
||
|
client.get("http://" + server.address() + "/test");
|
||
|
std::this_thread::sleep_for(SimulatedWorkTime / 2);
|
||
|
client.abort();
|
||
|
client.waitDone();
|
||
|
}
|
||
|
}
|
||
|
#endif // WT_THREADED
|
||