fix numPaths value in Router::ExtractSummaryStatus

This commit is contained in:
Audric Ackermann 2022-02-15 16:29:37 +11:00 committed by audric
parent c0f47063cb
commit d9467f4dee
1 changed files with 28 additions and 14 deletions

View File

@ -139,30 +139,44 @@ namespace llarp
// Compute all stats on all path builders on the default endpoint
// Merge snodeSessions, remoteSessions and default into a single array
std::vector<nlohmann::json> builders;
auto snode_sessions = services["default"]["snodeSessions"];
const auto& serviceDefault = services.at("default");
builders.push_back(serviceDefault);
auto snode_sessions = serviceDefault.at("snodeSessions");
for (const auto& session : snode_sessions)
builders.push_back(session["buildStats"]);
builders.push_back(session);
auto remote_sessions = services["default"]["remoteSessions"];
auto remote_sessions = serviceDefault.at("remoteSessions");
for (const auto& session : remote_sessions)
builders.push_back(session["buildStats"]);
builders.push_back(services["default"]["buildStats"]);
builders.push_back(session);
// Iterate over all items on this array to build the global pathStats
uint64_t paths = 0;
uint64_t pathsCount = 0;
uint64_t success = 0;
uint64_t attempts = 0;
for (const auto& builder : builders)
{
if (builder.is_null())
continue;
if (builder["length"].is_number())
paths += builder["length"].get<uint64_t>();
if (builder["success"].is_number())
success += builder["success"].get<uint64_t>();
if (builder["attempts"].is_number())
attempts += builder["attempts"].get<uint64_t>();
const auto& paths = builder.at("paths");
if (paths.is_array())
{
for (const auto& [key, value] : paths.items())
{
if (value.is_object() && value.at("status").is_string()
&& value.at("status") == "established")
pathsCount++;
}
}
const auto& buildStats = builder.at("buildStats");
if (buildStats.is_null())
continue;
success += buildStats.at("success").get<uint64_t>();
attempts += buildStats.at("attempts").get<uint64_t>();
}
double ratio = static_cast<double>(success) / (attempts + 1);
@ -171,7 +185,7 @@ namespace llarp
{"authCodes", services["default"]["authCodes"]},
{"exitMap", services["default"]["exitMap"]},
{"lokiAddress", services["default"]["identity"]},
{"numPathsBuilt", paths},
{"numPathsBuilt", pathsCount},
{"numPeersConnected", peers},
{"numRoutersKnown", _nodedb->NumLoaded()},
{"ratio", ratio},