提高项目健壮性
This commit is contained in:
parent
0ff88b0ba2
commit
ef1f4adc83
@ -8,6 +8,7 @@
|
||||
#include <boost/asio/strand.hpp>
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <chrono>
|
||||
#include <cmath>
|
||||
#include <unordered_map>
|
||||
|
||||
namespace network {
|
||||
@ -191,6 +192,10 @@ private:
|
||||
}
|
||||
|
||||
double value = body.at("value").get<double>();
|
||||
if (!(value > 0.0) || !std::isfinite(value)) {
|
||||
return send_response(json_response(req_, http::status::bad_request,
|
||||
json{{"status", "error"}, {"message", "Invalid value: must be a finite number greater than 0"}}));
|
||||
}
|
||||
double oldValue = 0.0;
|
||||
bool updated = false;
|
||||
const char* field = nullptr;
|
||||
@ -212,7 +217,7 @@ private:
|
||||
json{{"status", "error"}, {"message", "Failed to update config"}}));
|
||||
}
|
||||
|
||||
Logger::info("Updated runway ", field, ": ", oldValue, " -> ", value);
|
||||
Logger::info("Updated ", area, " ", field, ": ", oldValue, " -> ", value);
|
||||
|
||||
return send_response(json_response(req_, http::status::ok,
|
||||
json{{"status", "success"},
|
||||
@ -223,6 +228,9 @@ private:
|
||||
} catch (const json::parse_error& e) {
|
||||
return send_response(json_response(req_, http::status::bad_request,
|
||||
json{{"status", "error"}, {"message", "Invalid JSON"}, {"detail", e.what()}}));
|
||||
} catch (const json::type_error& e) {
|
||||
return send_response(json_response(req_, http::status::bad_request,
|
||||
json{{"status", "error"}, {"message", "Invalid field type"}, {"detail", e.what()}}));
|
||||
} catch (const std::exception& e) {
|
||||
return send_response(json_response(req_, http::status::internal_server_error,
|
||||
json{{"status", "error"}, {"message", "Internal error"}, {"detail", e.what()}}));
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <gmock/gmock.h>
|
||||
#include <memory>
|
||||
#include <unordered_set>
|
||||
#include <vector>
|
||||
|
||||
#include "detector/CollisionDetector.h"
|
||||
#include "vehicle/ControllableVehicles.h"
|
||||
@ -9,10 +11,27 @@
|
||||
#include "config/AirportBounds.h"
|
||||
|
||||
namespace {
|
||||
std::unordered_set<std::string> g_registered_test_vehicle_ids;
|
||||
|
||||
void RegisterManagedVehicle(const std::string& vehicleId) {
|
||||
ControllableVehicles::getInstance().updateRegistry({
|
||||
VehicleRegistryEntry{vehicleId, "WUREN"}
|
||||
});
|
||||
g_registered_test_vehicle_ids.insert(vehicleId);
|
||||
}
|
||||
|
||||
void CleanupRegisteredVehicles() {
|
||||
if (g_registered_test_vehicle_ids.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<VehicleRegistryEntry> cleanupEntries;
|
||||
cleanupEntries.reserve(g_registered_test_vehicle_ids.size());
|
||||
for (const auto& vehicleId : g_registered_test_vehicle_ids) {
|
||||
cleanupEntries.push_back(VehicleRegistryEntry{vehicleId, "PUTONG"});
|
||||
}
|
||||
ControllableVehicles::getInstance().updateRegistry(cleanupEntries);
|
||||
g_registered_test_vehicle_ids.clear();
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,6 +101,10 @@ protected:
|
||||
detector_ = std::make_unique<CollisionDetector>(*airportBounds_, *mockControllableVehicles_);
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
CleanupRegisteredVehicles();
|
||||
}
|
||||
|
||||
std::unique_ptr<MockAirportBounds> airportBounds_;
|
||||
std::unique_ptr<MockControllableVehicles> mockControllableVehicles_;
|
||||
std::unique_ptr<CollisionDetector> detector_;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user