Skip to content
Snippets Groups Projects
Commit 16f64684 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

http tester

parent 82938289
No related branches found
No related tags found
No related merge requests found
...@@ -19,14 +19,15 @@ ...@@ -19,14 +19,15 @@
#include "httptester.h" #include "httptester.h"
// std #include <opendht/log.h>
#include <opendht/value.h>
#include <opendht/dhtrunner.h>
#include <iostream> #include <iostream>
#include <string> #include <string>
#include <chrono> #include <chrono>
#include <condition_variable> #include <condition_variable>
namespace test { namespace test {
CPPUNIT_TEST_SUITE_REGISTRATION(HttpTester); CPPUNIT_TEST_SUITE_REGISTRATION(HttpTester);
...@@ -34,26 +35,22 @@ void ...@@ -34,26 +35,22 @@ void
HttpTester::setUp() { HttpTester::setUp() {
logger = dht::log::getStdLogger(); 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->run(0, /*identity*/{}, /*threaded*/true);
nodeProxy->bootstrap(nodePeer.getBound()); nodeProxy->bootstrap(nodePeer->getBound());
serverProxy = std::unique_ptr<dht::DhtProxyServer>( serverProxy = std::unique_ptr<dht::DhtProxyServer>(
new dht::DhtProxyServer( new dht::DhtProxyServer(
/*http*/dht::crypto::Identity{}, nodeProxy, 8080, /*pushServer*/"127.0.0.1:8090", logger)); /*http*/dht::crypto::Identity{}, nodeProxy, 8080, /*pushServer*/"127.0.0.1:8090", logger));
} }
void void
HttpTester::tearDown() { HttpTester::tearDown() {
logger->d("[tester:http] stopping peer node"); serverProxy.reset();
nodePeer.join(); nodePeer->join();
logger->d("[tester:http] stopping proxy server");
serverProxy.reset(nullptr);
logger->d("[tester:http] stopping proxy node");
nodeProxy->join();
} }
void void
...@@ -248,7 +245,7 @@ HttpTester::test_send_json() { ...@@ -248,7 +245,7 @@ HttpTester::test_send_json() {
if (status_code != 200 and logger) if (status_code != 200 and logger)
logger->e("[tester] [status] failed with code=%i", status_code); logger->e("[tester] [status] failed with code=%i", status_code);
std::cout << "[tester] got response:\n" << value << std::endl; std::cout << "[tester] got response:\n" << value << std::endl;
resp_val = value; resp_val = std::move(value);
status = status_code; status = status_code;
done = true; done = true;
cv.notify_all(); cv.notify_all();
...@@ -258,7 +255,21 @@ HttpTester::test_send_json() { ...@@ -258,7 +255,21 @@ HttpTester::test_send_json() {
// Assert // Assert
CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(10), [&]{ return done; })); CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(10), [&]{ return done; }));
CPPUNIT_ASSERT(status == 200); 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 } // namespace test
...@@ -23,12 +23,12 @@ ...@@ -23,12 +23,12 @@
#include <cppunit/TestFixture.h> #include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h> #include <cppunit/extensions/HelperMacros.h>
#include <opendht/value.h>
#include <opendht/log.h>
#include <opendht/http.h> #include <opendht/http.h>
#include <opendht/dhtrunner.h>
#include <opendht/dht_proxy_server.h> #include <opendht/dht_proxy_server.h>
#include <asio.hpp>
#include <thread>
#include <memory>
namespace test { namespace test {
...@@ -89,9 +89,7 @@ class HttpTester : public CppUnit::TestFixture { ...@@ -89,9 +89,7 @@ class HttpTester : public CppUnit::TestFixture {
private: private:
std::shared_ptr<dht::Logger> logger {}; std::shared_ptr<dht::Logger> logger {};
std::shared_ptr<dht::DhtRunner> nodePeer;
dht::DhtRunner nodePeer;
std::shared_ptr<dht::DhtRunner> nodeProxy;
std::unique_ptr<dht::DhtProxyServer> serverProxy; std::unique_ptr<dht::DhtProxyServer> serverProxy;
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment