aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zenserver/cache/structuredcache.cpp2
-rw-r--r--zenserver/testing/httptest.cpp17
-rw-r--r--zenserver/testing/httptest.h6
3 files changed, 22 insertions, 3 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp
index c71beb700..4c89b995a 100644
--- a/zenserver/cache/structuredcache.cpp
+++ b/zenserver/cache/structuredcache.cpp
@@ -270,11 +270,11 @@ HttpStructuredCacheService::HandleCacheRecordRequest(HttpServerRequest& Request,
case kHead:
case kGet:
{
- HandleGetCacheRecord(Request, Ref, Policy);
if (Verb == kHead)
{
Request.SetSuppressResponseBody();
}
+ HandleGetCacheRecord(Request, Ref, Policy);
}
break;
case kPut:
diff --git a/zenserver/testing/httptest.cpp b/zenserver/testing/httptest.cpp
index 18d63a6ef..01866a63b 100644
--- a/zenserver/testing/httptest.cpp
+++ b/zenserver/testing/httptest.cpp
@@ -15,6 +15,23 @@ HttpTestingService::HttpTestingService()
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;
diff --git a/zenserver/testing/httptest.h b/zenserver/testing/httptest.h
index f55780d05..f7ea0c31c 100644
--- a/zenserver/testing/httptest.h
+++ b/zenserver/testing/httptest.h
@@ -3,6 +3,7 @@
#pragma once
#include <zencore/logging.h>
+#include <zencore/stats.h>
#include <zenhttp/httpserver.h>
#include <atomic>
@@ -39,8 +40,9 @@ public:
};
private:
- HttpRequestRouter m_Router;
- std::atomic<uint32_t> m_Counter{0};
+ 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;