aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/testing
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenserver/testing')
-rw-r--r--src/zenserver/testing/httptest.cpp207
-rw-r--r--src/zenserver/testing/httptest.h55
2 files changed, 0 insertions, 262 deletions
diff --git a/src/zenserver/testing/httptest.cpp b/src/zenserver/testing/httptest.cpp
deleted file mode 100644
index 349a95ab3..000000000
--- a/src/zenserver/testing/httptest.cpp
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
-
-#include "httptest.h"
-
-#include <zencore/compactbinarybuilder.h>
-#include <zencore/compactbinarypackage.h>
-#include <zencore/timer.h>
-
-namespace zen {
-
-using namespace std::literals;
-
-HttpTestingService::HttpTestingService()
-{
- m_Router.RegisterRoute(
- "hello",
- [](HttpRouterRequest& Req) { Req.ServerRequest().WriteResponse(HttpResponseCode::OK); },
- HttpVerb::kGet);
-
- m_Router.RegisterRoute(
- "hello_slow",
- [](HttpRouterRequest& Req) {
- Req.ServerRequest().WriteResponseAsync([](HttpServerRequest& Request) {
- Stopwatch Timer;
- Sleep(1000);
- Request.WriteResponse(HttpResponseCode::OK,
- HttpContentType::kText,
- fmt::format("hello, took me {}", NiceTimeSpanMs(Timer.GetElapsedTimeMs())));
- });
- },
- HttpVerb::kGet);
-
- m_Router.RegisterRoute(
- "hello_veryslow",
- [](HttpRouterRequest& Req) {
- Req.ServerRequest().WriteResponseAsync([](HttpServerRequest& Request) {
- Stopwatch Timer;
- Sleep(60000);
- Request.WriteResponse(HttpResponseCode::OK,
- HttpContentType::kText,
- fmt::format("hello, took me {}", NiceTimeSpanMs(Timer.GetElapsedTimeMs())));
- });
- },
- HttpVerb::kGet);
-
- m_Router.RegisterRoute(
- "hello_throw",
- [](HttpRouterRequest& Req) {
- Req.ServerRequest().WriteResponseAsync([](HttpServerRequest&) { throw std::runtime_error("intentional error"); });
- },
- HttpVerb::kGet);
-
- m_Router.RegisterRoute(
- "hello_noresponse",
- [](HttpRouterRequest& Req) { Req.ServerRequest().WriteResponseAsync([](HttpServerRequest&) {}); },
- HttpVerb::kGet);
-
- m_Router.RegisterRoute(
- "metrics",
- [this](HttpRouterRequest& Req) {
- metrics::OperationTiming::Scope _(m_TimingStats);
- Req.ServerRequest().WriteResponse(HttpResponseCode::OK);
- },
- HttpVerb::kGet);
-
- m_Router.RegisterRoute(
- "get_metrics",
- [this](HttpRouterRequest& Req) {
- CbObjectWriter Cbo;
- EmitSnapshot("requests", m_TimingStats, Cbo);
- Req.ServerRequest().WriteResponse(HttpResponseCode::OK, Cbo.Save());
- },
- HttpVerb::kGet);
-
- m_Router.RegisterRoute(
- "json",
- [this](HttpRouterRequest& Req) {
- CbObjectWriter Obj;
- Obj.AddBool("ok", true);
- Obj.AddInteger("counter", ++m_Counter);
- Req.ServerRequest().WriteResponse(HttpResponseCode::OK, Obj.Save());
- },
- HttpVerb::kGet);
-
- m_Router.RegisterRoute(
- "echo",
- [](HttpRouterRequest& Req) {
- IoBuffer Body = Req.ServerRequest().ReadPayload();
- Req.ServerRequest().WriteResponse(HttpResponseCode::OK, HttpContentType::kBinary, Body);
- },
- HttpVerb::kPost);
-
- m_Router.RegisterRoute(
- "package",
- [](HttpRouterRequest& Req) {
- CbPackage Pkg = Req.ServerRequest().ReadPayloadPackage();
- Req.ServerRequest().WriteResponse(HttpResponseCode::OK, Pkg);
- },
- HttpVerb::kPost);
-}
-
-HttpTestingService::~HttpTestingService()
-{
-}
-
-const char*
-HttpTestingService::BaseUri() const
-{
- return "/testing/";
-}
-
-void
-HttpTestingService::HandleRequest(HttpServerRequest& Request)
-{
- m_Router.HandleRequest(Request);
-}
-
-Ref<IHttpPackageHandler>
-HttpTestingService::HandlePackageRequest(HttpServerRequest& HttpServiceRequest)
-{
- RwLock::ExclusiveLockScope _(m_RwLock);
-
- const uint32_t RequestId = HttpServiceRequest.RequestId();
-
- if (auto It = m_HandlerMap.find(RequestId); It != m_HandlerMap.end())
- {
- Ref<HttpTestingService::PackageHandler> Handler = std::move(It->second);
-
- m_HandlerMap.erase(It);
-
- return Handler;
- }
-
- auto InsertResult = m_HandlerMap.insert({RequestId, Ref<PackageHandler>()});
-
- _.ReleaseNow();
-
- return (InsertResult.first->second = Ref<PackageHandler>(new PackageHandler(*this, RequestId)));
-}
-
-void
-HttpTestingService::RegisterHandlers(WebSocketServer& Server)
-{
- Server.RegisterRequestHandler("SayHello"sv, *this);
-}
-
-bool
-HttpTestingService::HandleRequest(const WebSocketMessage& RequestMsg)
-{
- CbObjectView Request = RequestMsg.Body().GetObject();
-
- std::string_view Method = Request["Method"].AsString();
-
- if (Method != "SayHello"sv)
- {
- return false;
- }
-
- CbObjectWriter Response;
- Response.AddString("Result"sv, "Hello Friend!!");
-
- WebSocketMessage ResponseMsg;
- ResponseMsg.SetMessageType(WebSocketMessageType::kResponse);
- ResponseMsg.SetCorrelationId(RequestMsg.CorrelationId());
- ResponseMsg.SetSocketId(RequestMsg.SocketId());
- ResponseMsg.SetBody(Response.Save());
-
- SocketServer().SendResponse(std::move(ResponseMsg));
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-HttpTestingService::PackageHandler::PackageHandler(HttpTestingService& Svc, uint32_t RequestId) : m_Svc(Svc), m_RequestId(RequestId)
-{
-}
-
-HttpTestingService::PackageHandler::~PackageHandler()
-{
-}
-
-void
-HttpTestingService::PackageHandler::FilterOffer(std::vector<IoHash>& OfferCids)
-{
- ZEN_UNUSED(OfferCids);
- // No-op
- return;
-}
-void
-HttpTestingService::PackageHandler::OnRequestBegin()
-{
-}
-
-void
-HttpTestingService::PackageHandler::OnRequestComplete()
-{
-}
-
-IoBuffer
-HttpTestingService::PackageHandler::CreateTarget(const IoHash& Cid, uint64_t StorageSize)
-{
- ZEN_UNUSED(Cid);
- return IoBuffer{StorageSize};
-}
-
-} // namespace zen
diff --git a/src/zenserver/testing/httptest.h b/src/zenserver/testing/httptest.h
deleted file mode 100644
index 57d2d63f3..000000000
--- a/src/zenserver/testing/httptest.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
-
-#pragma once
-
-#include <zencore/logging.h>
-#include <zencore/stats.h>
-#include <zenhttp/httpserver.h>
-#include <zenhttp/websocket.h>
-
-#include <atomic>
-
-namespace zen {
-
-/**
- * Test service to facilitate testing the HTTP framework and client interactions
- */
-class HttpTestingService : public HttpService, public WebSocketService
-{
-public:
- HttpTestingService();
- ~HttpTestingService();
-
- virtual const char* BaseUri() const override;
- virtual void HandleRequest(HttpServerRequest& Request) override;
- virtual Ref<IHttpPackageHandler> HandlePackageRequest(HttpServerRequest& HttpServiceRequest) override;
-
- class PackageHandler : public IHttpPackageHandler
- {
- public:
- PackageHandler(HttpTestingService& Svc, uint32_t RequestId);
- ~PackageHandler();
-
- virtual void FilterOffer(std::vector<IoHash>& OfferCids) override;
- virtual void OnRequestBegin() override;
- virtual IoBuffer CreateTarget(const IoHash& Cid, uint64_t StorageSize) override;
- virtual void OnRequestComplete() override;
-
- private:
- HttpTestingService& m_Svc;
- uint32_t m_RequestId;
- };
-
-private:
- virtual void RegisterHandlers(WebSocketServer& Server) override;
- virtual bool HandleRequest(const WebSocketMessage& Request) override;
-
- HttpRequestRouter m_Router;
- std::atomic<uint32_t> m_Counter{0};
- metrics::OperationTiming m_TimingStats;
-
- RwLock m_RwLock;
- std::unordered_map<uint32_t, Ref<PackageHandler>> m_HandlerMap;
-};
-
-} // namespace zen