Bug #11301 » 0001-Add-test-case-for-clean-client-server-shutdown.patch
test/http/HttpClientServerTest.C | ||
---|---|---|
35 | 35 |
Exception, |
36 | 36 |
}; |
37 | 37 | |
38 |
constexpr auto SimulatedWorkTime = std::chrono::milliseconds{500}; |
|
39 | ||
38 | 40 |
class TestResource : public WResource |
39 | 41 |
{ |
40 | 42 |
public: |
... | ... | |
42 | 44 |
: delaySendingBody_(false), |
43 | 45 |
haveEverMoreData_(false), |
44 | 46 |
haveRandomMoreData_(false), |
47 |
simulateWork_(false), |
|
45 | 48 |
aborted_(0) |
46 | 49 |
{ } |
47 | 50 | |
... | ... | |
69 | 72 |
return aborted_; |
70 | 73 |
} |
71 | 74 | |
75 |
void simulateWork() { |
|
76 |
simulateWork_ = true; |
|
77 |
} |
|
78 | ||
72 | 79 |
virtual void handleRequest(const Http::Request& request, |
73 | 80 |
Http::Response& response) override |
74 | 81 |
{ |
82 |
if (simulateWork_) |
|
83 |
std::this_thread::sleep_for(SimulatedWorkTime); |
|
84 | ||
75 | 85 |
switch (type_) { |
76 | 86 |
case TestType::Simple: |
77 | 87 |
return handleSimple(request, response); |
... | ... | |
93 | 103 |
bool delaySendingBody_; |
94 | 104 |
bool haveEverMoreData_; |
95 | 105 |
bool haveRandomMoreData_; |
106 |
bool simulateWork_; |
|
96 | 107 |
int aborted_; |
97 | 108 |
TestType type_ = TestType::Simple; |
98 | 109 | |
... | ... | |
645 | 656 |
} |
646 | 657 |
} |
647 | 658 | |
659 |
BOOST_AUTO_TEST_CASE( http_client_server_clean_shutdown ) |
|
660 |
{ |
|
661 |
Server server; |
|
662 | ||
663 |
server.resource().setType(TestType::Continuation); |
|
664 |
server.resource().simulateWork(); |
|
665 | ||
666 |
if (server.start()) { |
|
667 |
Client client; |
|
668 |
client.get("http://" + server.address() + "/test"); |
|
669 | ||
670 |
std::this_thread::sleep_for(SimulatedWorkTime / 2); |
|
671 | ||
672 |
client.abort(); |
|
673 |
client.waitDone(); |
|
674 |
} |
|
675 |
} |
|
676 | ||
677 | ||
648 | 678 |
#endif // WT_THREADED |
649 |
- |