Fix race condition in UrlClientTest
This commit is contained in:
parent
3bc0f07fea
commit
7678d5e6ed
@ -18,8 +18,8 @@ class cCallbacks:
|
||||
public cUrlClient::cCallbacks
|
||||
{
|
||||
public:
|
||||
cCallbacks(cEvent & a_Event):
|
||||
m_Event(a_Event)
|
||||
cCallbacks(std::shared_ptr<cEvent> a_Event):
|
||||
m_Event(std::move(a_Event))
|
||||
{
|
||||
++g_ActiveCallbacks;
|
||||
LOGD("Created a cCallbacks instance at %p", reinterpret_cast<void *>(this));
|
||||
@ -86,7 +86,7 @@ public:
|
||||
virtual void OnBodyFinished() override
|
||||
{
|
||||
LOG("Body finished.");
|
||||
m_Event.Set();
|
||||
m_Event->Set();
|
||||
}
|
||||
|
||||
|
||||
@ -99,11 +99,11 @@ public:
|
||||
virtual void OnError(const AString & a_ErrorMsg) override
|
||||
{
|
||||
LOG("Error: %s", a_ErrorMsg.c_str());
|
||||
m_Event.Set();
|
||||
m_Event->Set();
|
||||
}
|
||||
|
||||
protected:
|
||||
cEvent & m_Event;
|
||||
std::shared_ptr<cEvent> m_Event;
|
||||
};
|
||||
|
||||
|
||||
@ -113,14 +113,14 @@ protected:
|
||||
int TestRequest1()
|
||||
{
|
||||
LOG("Running test 1");
|
||||
cEvent evtFinished;
|
||||
auto evtFinished = std::make_shared<cEvent>();
|
||||
auto callbacks = cpp14::make_unique<cCallbacks>(evtFinished);
|
||||
AStringMap options;
|
||||
options["MaxRedirects"] = "0";
|
||||
auto res = cUrlClient::Get("http://github.com", std::move(callbacks), AStringMap(), AString(), options);
|
||||
if (res.first)
|
||||
{
|
||||
evtFinished.Wait();
|
||||
evtFinished->Wait();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -137,12 +137,12 @@ int TestRequest1()
|
||||
int TestRequest2()
|
||||
{
|
||||
LOG("Running test 2");
|
||||
cEvent evtFinished;
|
||||
auto evtFinished = std::make_shared<cEvent>();
|
||||
auto callbacks = cpp14::make_unique<cCallbacks>(evtFinished);
|
||||
auto res = cUrlClient::Get("http://github.com", std::move(callbacks));
|
||||
if (res.first)
|
||||
{
|
||||
evtFinished.Wait();
|
||||
evtFinished->Wait();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -159,14 +159,14 @@ int TestRequest2()
|
||||
int TestRequest3()
|
||||
{
|
||||
LOG("Running test 3");
|
||||
cEvent evtFinished;
|
||||
auto evtFinished = std::make_shared<cEvent>();
|
||||
auto callbacks = cpp14::make_unique<cCallbacks>(evtFinished);
|
||||
AStringMap options;
|
||||
options["MaxRedirects"] = "0";
|
||||
auto res = cUrlClient::Get("https://github.com", std::move(callbacks), AStringMap(), AString(), options);
|
||||
if (res.first)
|
||||
{
|
||||
evtFinished.Wait();
|
||||
evtFinished->Wait();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -183,12 +183,12 @@ int TestRequest3()
|
||||
int TestRequest4()
|
||||
{
|
||||
LOG("Running test 4");
|
||||
cEvent evtFinished;
|
||||
auto evtFinished = std::make_shared<cEvent>();
|
||||
auto callbacks = cpp14::make_unique<cCallbacks>(evtFinished);
|
||||
auto res = cUrlClient::Get("https://github.com", std::move(callbacks));
|
||||
if (res.first)
|
||||
{
|
||||
evtFinished.Wait();
|
||||
evtFinished->Wait();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -204,14 +204,15 @@ int TestRequest4()
|
||||
|
||||
int TestRequests()
|
||||
{
|
||||
std::function<int(void)> tests[] =
|
||||
using func_t = int(void);
|
||||
func_t * tests[] =
|
||||
{
|
||||
&TestRequest1,
|
||||
&TestRequest2,
|
||||
&TestRequest3,
|
||||
&TestRequest4,
|
||||
};
|
||||
for (const auto & test: tests)
|
||||
for (auto test: tests)
|
||||
{
|
||||
LOG("%s", AString(60, '-').c_str());
|
||||
auto res = test();
|
||||
|
Loading…
Reference in New Issue
Block a user