diff options
| author | Stefan Boberg <[email protected]> | 2021-09-08 21:38:20 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-09-08 21:38:20 +0200 |
| commit | 74eeda8aa9c67ca9820b8f7dd98bc2da3f97748a (patch) | |
| tree | d3b55f48abd50665eb4ec7f5022885061b2f604a | |
| parent | Log spawned process name (diff) | |
| download | zen-74eeda8aa9c67ca9820b8f7dd98bc2da3f97748a.tar.xz zen-74eeda8aa9c67ca9820b8f7dd98bc2da3f97748a.zip | |
Introduced dedicated HTTP testing service, used during development to exercise the server framework
| -rw-r--r-- | zenserver/testing/httptest.cpp | 48 | ||||
| -rw-r--r-- | zenserver/testing/httptest.h | 34 | ||||
| -rw-r--r-- | zenserver/zenserver.cpp | 16 | ||||
| -rw-r--r-- | zenserver/zenserver.vcxproj | 2 | ||||
| -rw-r--r-- | zenserver/zenserver.vcxproj.filters | 2 |
5 files changed, 100 insertions, 2 deletions
diff --git a/zenserver/testing/httptest.cpp b/zenserver/testing/httptest.cpp new file mode 100644 index 000000000..0639c2b53 --- /dev/null +++ b/zenserver/testing/httptest.cpp @@ -0,0 +1,48 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#include "httptest.h" + +namespace zen { + +HttpTestingService::HttpTestingService() +{ + m_Router.RegisterRoute( + "hello", + [this](HttpRouterRequest& Req) { Req.ServerRequest().WriteResponse(HttpResponse::OK); }, + HttpVerb::kGet); + + m_Router.RegisterRoute( + "echo", + [this](HttpRouterRequest& Req) { + IoBuffer Body = Req.ServerRequest().ReadPayload(); + Req.ServerRequest().WriteResponse(HttpResponse::OK, HttpContentType::kBinary, Body); + }, + HttpVerb::kPost); + + m_Router.RegisterRoute("package", m_PackageHandler); +} + +HttpTestingService::~HttpTestingService() +{ +} + +const char* +HttpTestingService::BaseUri() const +{ + return "/testing/"; +} + +void +HttpTestingService::HandleRequest(HttpServerRequest& Request) +{ + m_Router.HandleRequest(Request); +} + +void +HttpTestingService::PackageHandler::HandleRequest(HttpRouterRequest& Req) +{ + IoBuffer Body = Req.ServerRequest().ReadPayload(); + Req.ServerRequest().WriteResponse(HttpResponse::OK, HttpContentType::kBinary, Body); +} + +} // namespace zen diff --git a/zenserver/testing/httptest.h b/zenserver/testing/httptest.h new file mode 100644 index 000000000..236d17ce7 --- /dev/null +++ b/zenserver/testing/httptest.h @@ -0,0 +1,34 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include <zencore/httpserver.h> + +#include <spdlog/spdlog.h> + +namespace zen { + +/** + * Test service to facilitate testing the HTTP framework and client interactions + */ +class HttpTestingService : public HttpService +{ +public: + HttpTestingService(); + ~HttpTestingService(); + + virtual const char* BaseUri() const override; + virtual void HandleRequest(HttpServerRequest& Request) override; + +private: + HttpRequestRouter m_Router; + + struct PackageHandler : public PackageEndpointHandler + { + virtual void HandleRequest(HttpRouterRequest& Request) override; + }; + + PackageHandler m_PackageHandler; +}; + +} // namespace zen diff --git a/zenserver/zenserver.cpp b/zenserver/zenserver.cpp index c857d4c71..57e691ea1 100644 --- a/zenserver/zenserver.cpp +++ b/zenserver/zenserver.cpp @@ -72,6 +72,7 @@ #include "diag/diagsvcs.h" #include "experimental/usnjournal.h" #include "projectstore.h" +#include "testing/httptest.h" #include "testing/launch.h" #include "upstream/jupiter.h" #include "upstream/upstreamcache.h" @@ -205,7 +206,7 @@ public: else { UpstreamCache.reset(); - spdlog::info("upstream cache NOT active"); + spdlog::info("NOT using upstream cache"); } } @@ -221,10 +222,20 @@ public: { StartMesh(BasePort); } + else + { + spdlog::info("NOT starting mesh"); + } m_Http.Initialize(BasePort); m_Http.AddEndpoint(m_HealthService); - m_Http.AddEndpoint(m_TestService); + + if (m_TestMode) + { + m_Http.AddEndpoint(m_TestService); + m_Http.AddEndpoint(m_TestingService); + } + m_Http.AddEndpoint(m_AdminService); if (m_HttpProjectService) @@ -365,6 +376,7 @@ private: zen::CasGc m_Gc{*m_CasStore}; zen::CasScrubber m_Scrubber{*m_CasStore}; HttpTestService m_TestService; + zen::HttpTestingService m_TestingService; zen::HttpCasService m_CasService{*m_CasStore}; zen::RefPtr<zen::ProjectStore> m_ProjectStore; zen::Ref<zen::LocalProjectService> m_LocalProjectService; diff --git a/zenserver/zenserver.vcxproj b/zenserver/zenserver.vcxproj index e4b40e13e..3c907e2fb 100644 --- a/zenserver/zenserver.vcxproj +++ b/zenserver/zenserver.vcxproj @@ -110,6 +110,7 @@ <ClInclude Include="config.h" /> <ClInclude Include="diag\logging.h" /> <ClInclude Include="sos\sos.h" /> + <ClInclude Include="testing\httptest.h" /> <ClInclude Include="upstream\jupiter.h" /> <ClInclude Include="projectstore.h" /> <ClInclude Include="cache\cacheagent.h" /> @@ -132,6 +133,7 @@ <ClCompile Include="projectstore.cpp" /> <ClCompile Include="cache\cacheagent.cpp" /> <ClCompile Include="sos\sos.cpp" /> + <ClCompile Include="testing\httptest.cpp" /> <ClCompile Include="upstream\jupiter.cpp" /> <ClCompile Include="testing\launch.cpp" /> <ClCompile Include="cache\cachestore.cpp" /> diff --git a/zenserver/zenserver.vcxproj.filters b/zenserver/zenserver.vcxproj.filters index ca16caf77..3a17cbb07 100644 --- a/zenserver/zenserver.vcxproj.filters +++ b/zenserver/zenserver.vcxproj.filters @@ -38,6 +38,7 @@ <ClInclude Include="upstream\upstreamcache.h"> <Filter>upstream</Filter> </ClInclude> + <ClInclude Include="testing\httptest.h" /> </ItemGroup> <ItemGroup> <ClCompile Include="zenserver.cpp" /> @@ -71,6 +72,7 @@ <ClCompile Include="upstream\upstreamcache.cpp"> <Filter>upstream</Filter> </ClCompile> + <ClCompile Include="testing\httptest.cpp" /> </ItemGroup> <ItemGroup> <Filter Include="cache"> |