Add Visione backend foundation

This commit is contained in:
gabdevele
2026-06-02 19:22:00 +02:00 Unverified
commit 580789ac83
52 changed files with 5008 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
add_executable(${PROJECT_NAME}_test
test_main.cc
${APP_SOURCES}
)
target_include_directories(${PROJECT_NAME}_test
PRIVATE
${CMAKE_SOURCE_DIR}
)
target_link_libraries(${PROJECT_NAME}_test
PRIVATE
Drogon::Drogon
)
ParseAndAddDrogonTests(${PROJECT_NAME}_test)
+70
View File
@@ -0,0 +1,70 @@
#define DROGON_TEST_MAIN
#include <drogon/HttpClient.h>
#include <drogon/drogon.h>
#include <drogon/drogon_test.h>
#include <future>
using namespace drogon;
namespace
{
std::pair<ReqResult, HttpResponsePtr> sendRequest(const HttpRequestPtr &request)
{
auto client = HttpClient::newHttpClient("http://127.0.0.1:15555",
app().getLoop());
auto promise =
std::make_shared<std::promise<std::pair<ReqResult, HttpResponsePtr>>>();
auto future = promise->get_future();
client->sendRequest(
request,
[promise](ReqResult result, const HttpResponsePtr &response) {
promise->set_value({result, response});
});
return future.get();
}
} // namespace
DROGON_TEST(HealthEndpoint)
{
auto request = HttpRequest::newHttpRequest();
request->setMethod(Get);
request->setPath("/api/v1/health");
auto [result, response] = sendRequest(request);
REQUIRE(result == ReqResult::Ok);
REQUIRE(response != nullptr);
CHECK(response->getStatusCode() == k200OK);
REQUIRE(response->getJsonObject() != nullptr);
CHECK((*response->getJsonObject())["status"].asString() == "ok");
CHECK((*response->getJsonObject())["service"].asString() ==
"visione-backend");
}
int main(int argc, char **argv)
{
std::promise<void> startedPromise;
auto startedFuture = startedPromise.get_future();
app().addListener("127.0.0.1", 15555);
std::thread serverThread([&startedPromise]() {
app().getLoop()->queueInLoop([&startedPromise]() {
startedPromise.set_value();
});
app().run();
});
startedFuture.get();
const int status = test::run(argc, argv);
app().getLoop()->queueInLoop([]() {
app().quit();
});
serverThread.join();
return status;
}