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 | ||