Project

General

Profile

Bug #11301 » 0001-Add-test-case-for-clean-client-server-shutdown.patch

Bruce Toll, 02/01/2023 10:51 PM

View differences:

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
- 
(1-1/4)