diff --git a/tests/httptester.cpp b/tests/httptester.cpp index a3309a1e4f74f9ae0876fa00fc63efc8244f63da..3aef94695944890d1804a9acaa6578fbdc67a501 100644 --- a/tests/httptester.cpp +++ b/tests/httptester.cpp @@ -19,14 +19,15 @@ #include "httptester.h" -// std +#include <opendht/log.h> +#include <opendht/value.h> +#include <opendht/dhtrunner.h> + #include <iostream> #include <string> - #include <chrono> #include <condition_variable> - namespace test { CPPUNIT_TEST_SUITE_REGISTRATION(HttpTester); @@ -34,26 +35,22 @@ void HttpTester::setUp() { logger = dht::log::getStdLogger(); - nodePeer.run(0, /*identity*/{}, /*threaded*/true); + nodePeer = std::make_shared<dht::DhtRunner>(); + nodePeer->run(0); - nodeProxy = std::make_shared<dht::DhtRunner>(); + auto nodeProxy = std::make_shared<dht::DhtRunner>(); nodeProxy->run(0, /*identity*/{}, /*threaded*/true); - nodeProxy->bootstrap(nodePeer.getBound()); + nodeProxy->bootstrap(nodePeer->getBound()); serverProxy = std::unique_ptr<dht::DhtProxyServer>( new dht::DhtProxyServer( /*http*/dht::crypto::Identity{}, nodeProxy, 8080, /*pushServer*/"127.0.0.1:8090", logger)); - } void HttpTester::tearDown() { - logger->d("[tester:http] stopping peer node"); - nodePeer.join(); - logger->d("[tester:http] stopping proxy server"); - serverProxy.reset(nullptr); - logger->d("[tester:http] stopping proxy node"); - nodeProxy->join(); + serverProxy.reset(); + nodePeer->join(); } void @@ -248,7 +245,7 @@ HttpTester::test_send_json() { if (status_code != 200 and logger) logger->e("[tester] [status] failed with code=%i", status_code); std::cout << "[tester] got response:\n" << value << std::endl; - resp_val = value; + resp_val = std::move(value); status = status_code; done = true; cv.notify_all(); @@ -258,7 +255,21 @@ HttpTester::test_send_json() { // Assert CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(10), [&]{ return done; })); CPPUNIT_ASSERT(status == 200); - CPPUNIT_ASSERT(resp_val["data"] == val.toJson()["data"]); + CPPUNIT_ASSERT(resp_val["data"] == json["data"]); + + done = false; + url = "https://google.ca"; + request = std::make_shared<dht::http::Request>(serverProxy->io_context(), url, + [&](const dht::http::Response& response){ + logger->w("got answer: %.*s", response.body.size(), response.body.data()); + status = response.status_code; + done = true; + cv.notify_all(); + }, logger); + request->send(); + + CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(10), [&]{ return done; })); + CPPUNIT_ASSERT(status == 200); } } // namespace test diff --git a/tests/httptester.h b/tests/httptester.h index 862ebec0247408b19cc5a458eab79467f33113a3..1f47b7b26c0633ea94b338c9e6083f49d786a3d0 100644 --- a/tests/httptester.h +++ b/tests/httptester.h @@ -23,12 +23,12 @@ #include <cppunit/TestFixture.h> #include <cppunit/extensions/HelperMacros.h> -#include <opendht/value.h> -#include <opendht/log.h> #include <opendht/http.h> - -#include <opendht/dhtrunner.h> #include <opendht/dht_proxy_server.h> +#include <asio.hpp> + +#include <thread> +#include <memory> namespace test { @@ -89,9 +89,7 @@ class HttpTester : public CppUnit::TestFixture { private: std::shared_ptr<dht::Logger> logger {}; - - dht::DhtRunner nodePeer; - std::shared_ptr<dht::DhtRunner> nodeProxy; + std::shared_ptr<dht::DhtRunner> nodePeer; std::unique_ptr<dht::DhtProxyServer> serverProxy; };