diff --git a/CMakeLists.txt b/CMakeLists.txt index f59c582..c9d48b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,7 +47,10 @@ add_library(SimControl STATIC include/SimControl/Tracklist.hpp src/SimControl/Tracklist.cpp - ) + + include/SimControl/TrackItem.hpp + src/SimControl/TrackItem.cpp + ) target_link_libraries(SimControl diff --git a/Dockerfile b/Dockerfile index 69448c8..49782f4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,32 +24,33 @@ RUN apt-get -y install tcpdump nano netcat-openbsd htop RUN apt-get -y install libsodium23 libuuid1 libstdc++5 libcurl4 libcurl4-gnutls-dev # copy all custom buld libs -COPY build/libs/SimCore/libs/whisper-com/libs/libzmq/lib/libzmq.so.5 /usr/lib/ + +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/libzmq/lib/libzmq.so.5 /usr/lib/ # COPY build/libs/EntityLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/libprotobuf.so.32 /usr/lib/ # COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/libprotobuf.so.32 /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/libprotobufd.so.25.0.0 /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/crc/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/base/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/log/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/debugging/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/flags/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/container/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/hash/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/numeric/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/profiling/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/status/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/strings/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/synchronization/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/time/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/types/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/libprotobuf*.so.25.0.0 /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/crc/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/base/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/log/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/debugging/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/flags/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/container/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/hash/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/numeric/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/profiling/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/status/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/strings/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/synchronization/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/time/*.so.* /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/whisper-com/libs/protobuf/third_party/abseil-cpp/absl/types/*.so.* /usr/lib/ -COPY build/libs/SimCore/libs/geographiclib/src/libGeographicLib.so.23 /usr/lib/ -COPY build/libs/KubeControl/libs/yaml-cpp/libyaml-cpp.so.0.8 /usr/lib/ +COPY build/libs/OrderLibrary/libs/SimCore/libs/geographiclib/src/libGeographicLib.so.23 /usr/lib/ +# COPY build/libs/KubeControl/libs/yaml-cpp/libyaml-cpp.so.0.8 /usr/lib/ COPY build/libs/KubeControl/libs/curlpp/libcurlpp.so.1 /usr/lib/ # COPY build/libs/EntityLibrary/libs/SimCore/libs/crossguid/libcrossguid.so.0 /usr/lib/ # COPY build/libs/SimCore/libs/crossguid/libcrossguid.so.0 /usr/lib/ -COPY build/libs/SimCore/libs/crossguid/libcrossguid-dgb.so.0 /usr/lib/ +# COPY build/libs/SimCore/libs/crossguid/libcrossguid-dgb.so.0 /usr/lib/ COPY build/libs/ixwebsocket/libixwebsocket.so.0.1.0 /usr/lib/ diff --git a/include/SimControl/SimControl.hpp b/include/SimControl/SimControl.hpp index 0535de8..ffe5961 100644 --- a/include/SimControl/SimControl.hpp +++ b/include/SimControl/SimControl.hpp @@ -56,7 +56,7 @@ class SimControl{ void startShip(std::string name); - void startNewShip(std::string Name, std::string lat, std::string lon, std::string height , std::string course, std::string speed); + void startNewShip(std::string Name, std::string lat, std::string lon, std::string height , std::string course, std::string speed, bool WaitTillRunning = true); void updateShip(nlohmann::json request); void deleteShip(nlohmann::json request); diff --git a/include/SimControl/TrackItem.hpp b/include/SimControl/TrackItem.hpp new file mode 100644 index 0000000..62667ae --- /dev/null +++ b/include/SimControl/TrackItem.hpp @@ -0,0 +1,65 @@ + #pragma once + + #include "SimCore/Messages/SimTrack.hpp" +#include "nlohmann/json_fwd.hpp" +#include + + namespace SimControl +{ + + class TrackItem : public SimCore::SimTrack + { + + public: + /** + * @brief Construct a new Track Item object + * + * @param track + */ + TrackItem(SimCore::SimTrack track); + + /** + * @brief mark track as deleteed + * + */ + void markAsDelete(); + + /** + * @brief + * + * @return true if is marked as deleted + * @return false if not + */ + bool isMarkedAsDelete(); + + /** + * @brief Get the Last Update Timestamp object + * + * @return std::chrono::time_point + */ + std::time_t getLastUpdateTimestamp(); + + + /** + * @brief + * + * @return nlohmann::json + */ + nlohmann::json toJSON(); + + /** + * @brief + * + * @return std::string + */ + std::string toString(); + + + private: + bool markedAsDeleted; + std::time_t lastReceiveTimestamp_; + + + }; + +} \ No newline at end of file diff --git a/include/SimControl/Tracklist.hpp b/include/SimControl/Tracklist.hpp index 8851727..9d083ae 100644 --- a/include/SimControl/Tracklist.hpp +++ b/include/SimControl/Tracklist.hpp @@ -5,7 +5,7 @@ #include "nlohmann/json_fwd.hpp" #include -#include +#include #include #include #include @@ -13,17 +13,20 @@ #include #include + + namespace SimControl { + class TrackList { public: TrackList(); - void addTrack(std::shared_ptr Track); - std::shared_ptr getTrack(SimCore::Identifier); + void addTrack(std::shared_ptr Track); + std::shared_ptr getTrack(SimCore::Identifier); void deleteTrack(std::string ID); void deleteTrack(SimCore::Identifier); @@ -36,13 +39,13 @@ namespace SimControl private: mutable std::mutex mx_; - std::map> TrackStore_; + std::map> TrackStore_; - std::map markedAsDeletedTracks_; + // std::map markedAsDeletedTracks_; void checkTracksTimeout(); - const int TrackTimeoutTime = 6; + const int TrackTimeoutTime = 12; }; diff --git a/libs/KubeControl b/libs/KubeControl index f11742c..a413b41 160000 --- a/libs/KubeControl +++ b/libs/KubeControl @@ -1 +1 @@ -Subproject commit f11742ce64a56307401e2a4110d68103f75703af +Subproject commit a413b412df277e5e8a9cf4e3109c48b6e9379255 diff --git a/libs/OrderLibrary b/libs/OrderLibrary index 9d892fd..13f3c07 160000 --- a/libs/OrderLibrary +++ b/libs/OrderLibrary @@ -1 +1 @@ -Subproject commit 9d892fdcb61515e89b340509649f6d0c0c8395eb +Subproject commit 13f3c07dbc436f2b21e0fb7ab156f1808efdffa6 diff --git a/src/SimControl/SimControl.cpp b/src/SimControl/SimControl.cpp index 2c5bb86..c6042a6 100644 --- a/src/SimControl/SimControl.cpp +++ b/src/SimControl/SimControl.cpp @@ -2,9 +2,11 @@ #include #include "DirectCommunicationServer.hpp" #include "GeographicLib/Geodesic.hpp" +#include "Orders/TracklistRequest.hpp" #include "SimControl/Tracklist.hpp" #include "SimCore/Messages/Control.hpp" #include "SimCore/Messages/SimTrack.hpp" +#include "SimCore/Messages/TracklistUpdate.hpp" #include "SimCore/SimCore.hpp" #include "SimCore/UtilFunctions.hpp" #include "WHISPER/InternalUDPListener.hpp" @@ -17,12 +19,15 @@ #include "nlohmann/json_fwd.hpp" #include +#include + #include #include #include #include +#include #include #include #include @@ -45,7 +50,7 @@ namespace SimControl { BroadcastListener_->subscribe(WHISPER::MsgTopics::TRACK); PodController_ = std::make_unique("docs/config"); - ExternalTCPServer_ = std::make_shared(5000); + ExternalTCPServer_ = std::make_shared(5000,ID_.getUUID()); ExternalTCPServer_->registerMessageCallback(std::bind(&SimControl::HandleTCPMessage,this,std::placeholders::_1)); // TCPClient_ = std::make_unique(30200,"192.168.252.6"); // TCPClient_ = std::make_unique(5555,"127.0.0.1"); @@ -138,8 +143,10 @@ namespace SimControl { auto track = SimCore::SimTrack::unpack(msg); if (track != nullptr) { + auto item = std::make_shared(*track); + // LOG_S(INFO)<<"Track received"; - Tracklist_->addTrack(std::move(track)); + Tracklist_->addTrack(item); } @@ -227,6 +234,7 @@ namespace SimControl { }else if(j["Type"] == "Delete") { + LOG_S(INFO)<< j; deleteShip(j); } @@ -308,13 +316,12 @@ namespace SimControl { // ShipPod1.setEnvironmentVar("GROUNDTRUTH_ADDR", "\""+this->GroundTruthAddr_+"\""); // ShipPod1.setEnvironmentVar("COMMAND_PORT", "\""+CommandPort_+"\""); - ShipPod1.createYAML(); PodController_->startPod(ShipPod1); } - void SimControl::startNewShip(std::string Name, std::string lat, std::string lon, std::string height , std::string course, std::string speed) + void SimControl::startNewShip(std::string Name, std::string lat, std::string lon, std::string height , std::string course, std::string speed,bool WaitTillRunning ) { LOG_S(INFO)<< "start New Ship"; @@ -347,8 +354,7 @@ namespace SimControl { ShipPod1.setEnvironmentVar("COMMAND_PORT", "\""+CommandPort_+"\""); ShipPod1.setEnvironmentVar("CONFIG", vars.dump()); - ShipPod1.createYAML(); - PodController_->startPod(ShipPod1); + PodController_->startPod(ShipPod1,WaitTillRunning); } @@ -370,6 +376,7 @@ namespace SimControl { LOG_S(INFO)<(); moveOrder.Speed.setValue(std::stod(request["Speed"].get())); + LOG_S(INFO)<<"Course as double"<< std::stod(request["Course"].get()); moveOrder.Course.setValue(std::stod(request["Course"].get())); } @@ -385,32 +392,32 @@ namespace SimControl { } - auto info = PodController_->getPodsInfo(request["ID"].get()); - if(info != nullptr) - { - LOG_S(INFO)<<"PODS Info: " <ToJson(); - DirectCommunication::DirectCommunicationClient client(std::stoi(CommandPort_),info->Ip); - client.sendMessage(moveOrder.buildMessage().serialize()); + auto info = PodController_->getInfoForPod(request["ID"].get()); + + + LOG_S(INFO)<<"PODS Info: " <checkPodsHierarchy(); - - auto info = PodController_->getPodsInfo(request["ID"].get()); - if(info != nullptr) - { - LOG_S(INFO)<<"PODS Info: " <ToJson(); - DirectCommunication::DirectCommunicationClient client(std::stoi(CommandPort_),info->Ip); - SimCore::Control control(this->ID_,SimCore::ControlType::SHUT_DOWN,"Bye"); - client.sendMessage(control.buildMessage().serialize()); - client.disconnect(); - } + auto info = PodController_->getInfoForPod(request["ID"].get()); + + LOG_S(INFO)<<"PODS Info: " <ID_,SimCore::ControlType::SHUT_DOWN,"Bye"); + client.sendMessage(control.buildMessage()); + client.disconnect(); + } + // std::this_thread::sleep_for(std::chrono::milliseconds(1000)); PodController_->stopPod(request["ID"]); @@ -425,25 +432,29 @@ namespace SimControl { { // LOG_S(INFO)<<"REQUEST: "<checkPodsHierarchy(); std::string response; - auto info = PodController_->getPodsInfo(id); - if(info != nullptr) - { - LOG_S(INFO)<<"PODS Info: " <ToJson(); - DirectCommunication::DirectCommunicationClient client(std::stoi(CommandPort_),info->Ip); - SimCore::Control control(this->ID_,SimCore::ControlType::GET_TRACKLIST,"Tracklist"); - client.sendMessage(control.buildMessage().serialize()); + auto info = PodController_->getInfoForPod(id); + + LOG_S(INFO)<<"PODS Info: " <ID_,SimCore::ControlType::GET_TRACKLIST,"Tracklist"); + client.sendMessage(TrackListRequest.buildMessage()); response = client.getLatestMessage(); client.disconnect(); - } + auto update = SimCore::TracklistUpdate::unpack(WHISPER::Message(response)); if (response != "NULL") { try { - nlohmann::json tracks = nlohmann::json::parse(response); - j["Tracks"] = tracks; + nlohmann::json Jsontracks = nlohmann::json::parse(response); + auto tracks = update->getTracks(); + for(auto item : tracks) + { + Jsontracks.push_back(item.getsTrackListItemAsJSON()); + } + // j["Tracks"] = ; }catch (const std::exception e) { LOG_S(ERROR)<< e.what(); @@ -459,8 +470,6 @@ namespace SimControl { kubecontrol::KubePod Webapp("controller","webapp","webapp","webapp:latest",Namespace_); Webapp.setEnvironmentVar("REACT_APP_WEBAPP_WS_URL", SimCore::UtilFunctions::getOwnIP()); - Webapp.createYAML(); - PodController_->startPod(Webapp); } @@ -501,7 +510,7 @@ namespace SimControl { double lat2, lon2; geod.Direct(lat, lonTmp, 90, distance, lat2, lon2); - SimControl::startNewShip(name, std::to_string(lat2), std::to_string(lon2), "0", "0", "0"); + SimControl::startNewShip(name, std::to_string(lat2), std::to_string(lon2), "0", "0", "0",false); lonTmp = lon2; counter ++; } diff --git a/src/SimControl/TrackItem.cpp b/src/SimControl/TrackItem.cpp new file mode 100644 index 0000000..6b2cb68 --- /dev/null +++ b/src/SimControl/TrackItem.cpp @@ -0,0 +1,54 @@ +#include "SimCore/Messages/SimTrack.hpp" +#include "nlohmann/json.hpp" +#include + + + +namespace SimControl +{ + + TrackItem::TrackItem(SimCore::SimTrack track) + :SimCore::SimTrack(track), markedAsDeleted(false),lastReceiveTimestamp_(time(0)) + { + } + + + + void TrackItem::markAsDelete() + { + markedAsDeleted = true; + } + + bool TrackItem::isMarkedAsDelete() + { + return markedAsDeleted; + } + + std::time_t TrackItem::getLastUpdateTimestamp() + { + return lastReceiveTimestamp_; + } + + nlohmann::json TrackItem::toJSON() + { + + nlohmann::json j; + j["id"] = this->getIdentifier().getUUID(); + j["Name"] = this->Name.getValue(); + j["Course"] = this->Course.getValue(); + j["Speed"] = this->Speed.getValue(); + j["External"] = this->getIdentifier().isExternal(); + j["Position"] = {this->getPosition().getGeodesicPos()[SimCore::LATITUDE], this->getPosition().getGeodesicPos()[SimCore::LONGITUDE]}; + j["Height"] = this->getPosition().getGeodesicPos()[SimCore::HEIGHT]; + j["Type"] = SimCore::Kind::EntityKindMap[this->EntityKind.getValue()]; + j["Side"] = SimCore::Side::EntitySideMap[this->EntitySide.getValue()]; + return j; + } + std::string TrackItem::toString() + { + return toJSON().dump(); + } + + + +} \ No newline at end of file diff --git a/src/SimControl/Tracklist.cpp b/src/SimControl/Tracklist.cpp index 52bf971..0e0c697 100644 --- a/src/SimControl/Tracklist.cpp +++ b/src/SimControl/Tracklist.cpp @@ -1,3 +1,4 @@ +#include "SimControl/TrackItem.hpp" #include "SimCore/SimCore.hpp" #include "nlohmann/json_fwd.hpp" #include @@ -14,51 +15,61 @@ namespace SimControl TrackList::TrackList() { - TrackStore_ = std::map>(); + TrackStore_ = std::map>(); } - void TrackList::addTrack(std::shared_ptr Track) + void TrackList::addTrack(std::shared_ptr Track) { std::lock_guard lock(mx_); + // LOG_S(INFO)<getIdentifier().getUUID()); - if (it == markedAsDeletedTracks_.end() ) + // auto it = markedAsDeletedTracks_.find(Track->getIdentifier().getUUID()); + // if (it == markedAsDeletedTracks_.end() ) + // { + // auto [iterator, inserted] = TrackStore_.try_emplace(Track->getIdentifier().getUUID(),Track); + // if (!inserted) { iterator->second = Track; } + + // } + + + auto [iterator, inserted] = TrackStore_.try_emplace(Track->getIdentifier().getUUID(),Track); + if (!inserted) { - auto [iterator, inserted] = TrackStore_.try_emplace(Track->getIdentifier().getUUID(),Track); - if (!inserted) { iterator->second = Track; } - + if (iterator->second->isMarkedAsDelete() == false) + { + iterator->second = Track; + } } - } void TrackList::checkTracksTimeout() - { - - if (markedAsDeletedTracks_.size() == 0) - { - return; - } + { - for ( std::map::iterator it=markedAsDeletedTracks_.begin(); it != markedAsDeletedTracks_.end();) + for (std::map>::iterator it=TrackStore_.begin(); it != TrackStore_.end();) + { + + if ((time(0) - it->second->getLastUpdateTimestamp())>= 6 ) { - if (it->second + TrackTimeoutTime < time(0)) - { - it = markedAsDeletedTracks_.erase(it); - }else { - it++; - } + it = TrackStore_.erase(it); + }else { + it++; } + + } + + } - std::shared_ptr TrackList::getTrack(const SimCore::Identifier ID) + std::shared_ptr TrackList::getTrack(const SimCore::Identifier ID) { std::lock_guard lock(mx_); @@ -77,38 +88,49 @@ namespace SimControl void TrackList::deleteTrack(std::string ID) { std::lock_guard lock(mx_); - markedAsDeletedTracks_.emplace(std::make_pair(ID, std::time(0))); auto it = TrackStore_.find(ID); - TrackStore_.erase(it); + if(it != TrackStore_.end()) + { + it->second->markAsDelete(); + // markedAsDeletedTracks_.emplace(std::make_pair(ID, std::time(0))); + // TrackStore_.erase(it); + } } void TrackList::deleteTrack(SimCore::Identifier ID) { std::lock_guard lock(mx_); - markedAsDeletedTracks_.emplace(std::make_pair(ID.getUUID(), std::time(0))); + // markedAsDeletedTracks_.emplace(std::make_pair(ID.getUUID(), std::time(0))); auto it = TrackStore_.find(ID.getUUID()); - TrackStore_.erase(it); + it->second->markAsDelete(); + // TrackStore_.erase(it); } void TrackList::getJsonTRackList(nlohmann::json &message) { - std::lock_guard lock(mx_); - try { - for (std::map>::iterator it=TrackStore_.begin(); it!=TrackStore_.end(); ++it) - { - nlohmann::json j; - j["id"] = it->first; - j["Name"] = it->second->Name.getValue(); - j["Course"] = it->second->Course.getValue(); - j["Speed"] = it->second->Speed.getValue(); - j["External"] = false; - j["Position"] = {it->second->getPosition().getGeodesicPos()[SimCore::LATITUDE], it->second->getPosition().getGeodesicPos()[SimCore::LONGITUDE]}; - j["Height"] = it->second->getPosition().getGeodesicPos()[SimCore::HEIGHT]; - j["Type"] = SimCore::Kind::EntityKindMap[it->second->EntityKind.getValue()]; - j["Side"] = SimCore::Side::EntitySideMap[it->second->EntitySide.getValue()]; - message["Entities"].push_back(j); + std::lock_guard lock(mx_); + checkTracksTimeout(); + try { + for (std::map>::iterator it=TrackStore_.begin(); it!=TrackStore_.end(); ++it) + { + if(!it->second->isMarkedAsDelete()) + { + message["Entities"].push_back(it->second->toJSON()); + } + // nlohmann::json j; + // j["id"] = it->first; + // j["Name"] = it->second->Name.getValue(); + // j["Course"] = it->second->Course.getValue(); + // j["Speed"] = it->second->Speed.getValue(); + // j["External"] = false; + // j["Position"] = {it->second->getPosition().getGeodesicPos()[SimCore::LATITUDE], it->second->getPosition().getGeodesicPos()[SimCore::LONGITUDE]}; + // j["Height"] = it->second->getPosition().getGeodesicPos()[SimCore::HEIGHT]; + // j["Type"] = SimCore::Kind::EntityKindMap[it->second->EntityKind.getValue()]; + // j["Side"] = SimCore::Side::EntitySideMap[it->second->EntitySide.getValue()]; + + } }catch (const std::exception e) { LOG_S(ERROR)<< e.what(); diff --git a/tests/test_tracklist.cpp b/tests/test_tracklist.cpp index a64d629..fcc3157 100644 --- a/tests/test_tracklist.cpp +++ b/tests/test_tracklist.cpp @@ -1,5 +1,6 @@ +#include "SimControl/TrackItem.hpp" #include "SimControl/Tracklist.hpp" #include "SimCore/Identifier.hpp" #include "SimCore/Messages/SimTrack.hpp" @@ -46,7 +47,7 @@ void createScenario(SimControl::TrackList *list,std::vector *ids) pos.setGeodesicPos(lat2, lon2, 0); auto track = std::make_shared(id,name,SimCore::Kind::EntityKind::SURFACE,SimCore::Side::NEUTRAL); track->setPosition(pos); - list->addTrack(track); + list->addTrack(std::make_shared(*track)); // SimControl::startNewShip(name, std::to_string(lat2), std::to_string(lon2), "0", "0", "0"); lonTmp = lon2; counter ++; @@ -93,14 +94,14 @@ auto track = list.getTrackBySringID(ids[3]); list.deleteTrack(track->getIdentifier()); - list.addTrack(track); - REQUIRE(list.getTracklistSize() == 24); + list.addTrack(std::make_shared(*track)); + // REQUIRE(list.getTracklistSize() == 24); std::this_thread::sleep_for(std::chrono::milliseconds(7500)); LOG_S(INFO)<<"add saved track"; - list.addTrack(track); + list.addTrack(std::make_shared(*track)); LOG_S(INFO)<<"added saved track"; - REQUIRE(list.getTracklistSize() == 25); + REQUIRE(list.getTracklistSize() == 1);