GMLC-TDC / HELICS

Compare 0cb93dd ... +1 ... 8efe43a

Coverage Reach
core/CommonCore.cpp core/CoreBroker.cpp core/FederateState.cpp core/TimeCoordinator.cpp core/ActionMessage.cpp core/BrokerBase.cpp core/InterfaceInfo.cpp core/InputInfo.cpp core/ForwardingTimeCoordinator.cpp core/HandleManager.cpp core/CoreFactory.cpp core/TimeoutMonitor.cpp core/UnknownHandleManager.cpp core/TimeDependencies.cpp core/BrokerFactory.cpp core/coreTypeOperations.cpp core/fileConnections.hpp core/MessageTimer.cpp core/helicsCLI11.hpp core/helicsCLI11JsonConfig.cpp core/ActionMessage.hpp core/core-data.hpp core/global_federate_id.hpp core/EndpointInfo.cpp core/core-exceptions.hpp core/FederateState.hpp core/queryHelpers.hpp core/federate_id.cpp core/federate_id.hpp core/InputInfo.hpp core/flagOperations.hpp core/FilterCoordinator.cpp core/InterfaceInfo.hpp core/PublicationInfo.cpp core/CoreFactory.hpp core/TimeoutMonitor.h core/TimeDependencies.hpp core/BasicHandleInfo.hpp core/TimeCoordinator.hpp core/ForwardingTimeCoordinator.hpp core/BrokerFactory.hpp core/CoreBroker.hpp core/HandleManager.hpp core/FilterInfo.cpp core/CoreFederateInfo.hpp core/CommonCore.hpp core/FilterInfo.hpp core/PublicationInfo.hpp core/BrokerBase.hpp core/EndpointInfo.hpp core/helics-time.hpp core/helicsCLI11JsonConfig.hpp core/core-types.hpp core/Broker.hpp core/UnknownHandleManager.hpp core/MessageTimer.hpp core/FilterCoordinator.hpp core/Core.hpp application_api/Federate.cpp application_api/helicsPrimaryTypes.cpp application_api/helicsTypes.cpp application_api/Inputs.cpp application_api/FederateInfo.cpp application_api/ValueFederate.cpp application_api/ValueFederateManager.cpp application_api/Filters.cpp application_api/Publications.cpp application_api/MessageFederate.cpp application_api/FilterOperations.cpp application_api/MessageFederateManager.cpp application_api/BrokerApp.cpp application_api/Inputs.hpp application_api/CoreApp.cpp application_api/ValueConverter_impl.hpp application_api/HelicsPrimaryTypes.hpp application_api/MessageOperators.cpp application_api/helicsTypes.hpp application_api/queryFunctions.cpp application_api/FilterFederateManager.cpp application_api/Endpoints.hpp application_api/Publications.hpp application_api/Subscriptions.hpp application_api/data_view.hpp application_api/CombinationFederate.cpp application_api/ValueFederate.hpp application_api/Federate.hpp application_api/Filters.hpp application_api/BrokerApp.hpp application_api/MessageOperators.hpp application_api/FilterOperations.hpp application_api/timeOperations.cpp application_api/typeOperations.cpp application_api/ValueConverter.hpp application_api/MessageFederate.hpp application_api/Endpoints.cpp application_api/ValueFederateManager.hpp application_api/CoreApp.hpp application_api/FederateInfo.hpp application_api/MessageFederateManager.hpp application_api/FilterFederateManager.hpp application_api/CombinationFederate.hpp application_api/AsyncFedCallInfo.hpp network/tcp/TcpHelperClasses.cpp network/tcp/TcpComms.cpp network/tcp/TcpCommsSS.cpp network/tcp/TcpHelperClasses.h network/tcp/TcpCommsCommon.cpp network/tcp/TcpBroker.cpp network/tcp/TcpCore.cpp network/tcp/TcpBroker.h network/tcp/TcpCore.h network/zmq/ZmqComms.cpp network/zmq/ZmqCommsSS.cpp network/zmq/ZmqRequestSets.cpp network/zmq/ZmqContextManager.cpp network/zmq/ZmqCommsCommon.cpp network/zmq/ZmqCore.cpp network/zmq/ZmqBroker.cpp network/zmq/ZmqHelper.cpp network/zmq/ZmqBroker.h network/zmq/ZmqRequestSets.h network/zmq/ZmqCore.h network/zmq/ZmqContextManager.h network/udp/UdpComms.cpp network/ipc/IpcComms.cpp network/ipc/IpcQueueHelper.cpp network/ipc/IpcQueueHelper.h network/ipc/IpcComms.h network/CommsInterface.cpp network/NetworkBrokerData.cpp network/mpi/MpiService.cpp network/mpi/MpiComms.cpp network/mpi/MpiBroker.cpp network/mpi/MpiCore.cpp network/mpi/MpiComms.h network/mpi/MpiService.h network/NetworkCommsInterface.cpp network/test/TestComms.cpp network/test/TestComms.h network/inproc/InprocComms.cpp network/inproc/InprocComms.h network/NetworkBroker_impl.hpp network/CommsBroker_impl.hpp network/NetworkCore_impl.hpp network/loadCores.cpp network/CommsInterface.hpp network/NetworkCommsInterface.hpp network/NetworkBrokerData.hpp network/NetworkBroker.hpp network/NetworkCore.hpp apps/helicsWebServer.cpp apps/Player.cpp apps/Recorder.cpp apps/Tracer.cpp apps/Source.cpp apps/Clone.cpp apps/helics-broker.cpp apps/MultiBroker.cpp apps/zmqBrokerServer.cpp apps/AsioBrokerServer.cpp apps/helicsApp.cpp apps/helics-broker-server.cpp apps/appMain.cpp apps/SignalGenerators.cpp apps/BrokerServer.cpp apps/helicsConfigMain.cpp apps/Echo.cpp apps/TypedBrokerServer.cpp apps/PrecHelper.cpp apps/Player.hpp apps/recorderMain.cpp apps/playerMain.cpp apps/Tracer.hpp apps/Source.hpp apps/Recorder.hpp apps/Clone.hpp apps/helicsWebServer.hpp apps/zmqBrokerServer.hpp apps/helicsApp.hpp apps/AsioBrokerServer.hpp apps/SignalGenerators.hpp apps/TypedBrokerServer.hpp apps/Echo.hpp shared_api_library/ValueFederateExport.cpp shared_api_library/FederateExport.cpp shared_api_library/helicsExport.cpp shared_api_library/MessageFederateExport.cpp shared_api_library/MessageFiltersExport.cpp shared_api_library/helicsCallbacks.cpp common/AsioContextManager.cpp common/JsonBuilder.cpp common/TomlProcessingFunctions.cpp common/JsonProcessingFunctions.cpp common/TomlProcessingFunctions.hpp common/addTargets.cpp common/JsonProcessingFunctions.hpp common/addTargets.hpp common/AsioContextManager.h common/configFileHelpers.cpp common/JsonBuilder.hpp cpp98/Federate.hpp cpp98/Endpoint.hpp cpp98/ValueFederate.hpp cpp98/Input.hpp cpp98/Broker.hpp cpp98/MessageFederate.hpp cpp98/Publication.hpp cpp98/Core.hpp cpp98/helicsExceptions.hpp cpp98/helics.hpp

No flags found

Use flags to group coverage reports by test type, project and/or folders.
Then setup custom commit statuses and notifications for each flag.

e.g., #unittest #integration

#production #enterprise

#frontend #backend

Learn more about Codecov Flags here.


@@ -482,7 +482,8 @@
Loading
482 482
    void sendDisconnect();
483 483
    /** broadcast a message to all federates*/
484 484
    void broadcastToFederates(ActionMessage& cmd);
485 -
485 +
    /** generate a counter for when to reset object*/
486 +
    int generateMapObjectCounter() const;
486 487
    friend class TimeoutMonitor;
487 488
};
488 489

@@ -361,6 +361,7 @@
Loading
361 361
362 362
    /** generate a time barrier request*/
363 363
    void generateTimeBarrier(ActionMessage& m);
364 +
    int generateMapObjectCounter() const;
364 365
    friend class TimeoutMonitor;
365 366
};
366 367

@@ -2075,7 +2075,7 @@
Loading
2075 2075
{
2076 2076
    if ((queryStr == "queries") || (queryStr == "available_queries")) {
2077 2077
        return "[isinit;isconnected;exists;name;identifier;address;queries;address;federates;inputs;endpoints;filtered_endpoints;"
2078 -
               "publications;filters;version;version_all;federate_map;dependency_graph;data_flow_graph;dependencies;dependson;dependents;current_time;global_time;global_state;current_state]";
2078 +
               "publications;filters;version;version_all;counter;federate_map;dependency_graph;data_flow_graph;dependencies;dependson;dependents;current_time;global_time;global_state;current_state]";
2079 2079
    }
2080 2080
    if (queryStr == "isconnected") {
2081 2081
        return (isConnected()) ? "true" : "false";
@@ -2249,6 +2249,9 @@
Loading
2249 2249
    if (queryStr == "address") {
2250 2250
        return getAddress();
2251 2251
    }
2252 +
    if (queryStr == "counter") {
2253 +
        return fmt::format("{}", generateMapObjectCounter());
2254 +
    }
2252 2255
    if (queryStr == "filtered_endpoints") {
2253 2256
        return filteredEndpointQuery(nullptr);
2254 2257
    }
@@ -2277,16 +2280,25 @@
Loading
2277 2280
    if (mi != mapIndex.end()) {
2278 2281
        auto index = mi->second.first;
2279 2282
        if (isValidIndex(index, mapBuilders) && !mi->second.second) {
2280 -
            if (std::get<0>(mapBuilders[index]).isCompleted()) {
2281 -
                return std::get<0>(mapBuilders[index]).generate();
2283 +
            auto& builder = std::get<0>(mapBuilders[index]);
2284 +
            if (builder.isCompleted()) {
2285 +
                auto center = generateMapObjectCounter();
2286 +
                if (center == builder.getCounterCode()) {
2287 +
                    return builder.generate();
2288 +
                }
2289 +
                builder.reset();
2282 2290
            }
2283 -
            if (std::get<0>(mapBuilders[index]).isActive()) {
2291 +
            if (builder.isActive()) {
2284 2292
                return "#wait";
2285 2293
            }
2286 2294
        }
2287 2295
2288 2296
        initializeMapBuilder(queryStr, index, mi->second.second);
2289 2297
        if (std::get<0>(mapBuilders[index]).isCompleted()) {
2298 +
            if (!mi->second.second) {
2299 +
                auto center = generateMapObjectCounter();
2300 +
                std::get<0>(mapBuilders[index]).setCounterCode(center);
2301 +
            }
2290 2302
            return std::get<0>(mapBuilders[index]).generate();
2291 2303
        }
2292 2304
        return "#wait";
@@ -2605,7 +2617,7 @@
Loading
2605 2617
2606 2618
        } break;
2607 2619
        case CMD_QUERY_REPLY:
2608 -
            if (command.dest_id == global_broker_id_local) {
2620 +
            if (command.dest_id == global_broker_id_local || command.dest_id == direct_core_id) {
2609 2621
                processQueryResponse(command);
2610 2622
            } else {
2611 2623
                transmit(getRoute(command.dest_id), command);
@@ -3634,6 +3646,8 @@
Loading
3634 3646
            requestors.clear();
3635 3647
            if (std::get<2>(mapBuilders[m.counter])) {
3636 3648
                builder.reset();
3649 +
            } else {
3650 +
                builder.setCounterCode(generateMapObjectCounter());
3637 3651
            }
3638 3652
        }
3639 3653
    }
@@ -3968,6 +3982,16 @@
Loading
3968 3982
    return false;
3969 3983
}
3970 3984
3985 +
int CommonCore::generateMapObjectCounter() const
3986 +
{
3987 +
    int result = static_cast<int>(brokerState.load());
3988 +
    for (const auto& fed : loopFederates) {
3989 +
        result += static_cast<int>(fed.state);
3990 +
    }
3991 +
    result += static_cast<int>(loopHandles.size());
3992 +
    return result;
3993 +
}
3994 +
3971 3995
void CommonCore::sendDisconnect()
3972 3996
{
3973 3997
    LOG_CONNECTIONS(global_broker_id_local, "core", "sending disconnect");

@@ -21,7 +21,7 @@
Loading
21 21
  private:
22 22
    std::unique_ptr<Json::Value> jMap;
23 23
    std::map<int, std::pair<std::string, int32_t>> missing_components;
24 -
24 +
    int counterCode{0};  // a code for the user to include for various purposes
25 25
  public:
26 26
    JsonMapBuilder() noexcept;
27 27
    ~JsonMapBuilder();
@@ -47,6 +47,9 @@
Loading
47 47
    std::string generate();
48 48
    /** reset the builder*/
49 49
    void reset();
50 +
    /** set the counter code value*/
51 +
    void setCounterCode(int code) { counterCode = code; }
52 +
    int getCounterCode() const { return counterCode; }
50 53
};
51 54
52 55
/** class to help with the generation of JSON*/

@@ -483,8 +483,9 @@
Loading
483 483
std::string TimeCoordinator::printTimeStatus() const
484 484
{
485 485
    return fmt::format(
486 -
        R"raw({{"granted_time":{}, "exec":{}, "allow":{}, "value":{}, "message":{}, "minDe":{}, "minminDe":{}}})raw",
486 +
        R"raw({{"granted_time":{},"requested_time":{}, "exec":{}, "allow":{}, "value":{}, "message":{}, "minDe":{}, "minminDe":{}}})raw",
487 487
        static_cast<double>(time_granted),
488 +
        static_cast<double>(time_requested),
488 489
        static_cast<double>(time_exec),
489 490
        static_cast<double>(time_allow),
490 491
        static_cast<double>(time_value),

Click to load this diff.
Loading diff...

Learn more Showing 14 files with coverage changes found.

Changes in src/helics/network/ipc/IpcQueueHelper.cpp
-6
+6
Loading file...
Changes in src/helics/network/CommsInterface.cpp
-3
+3
Loading file...
Changes in src/helics/core/TimeDependencies.cpp
-1
+1
Loading file...
Changes in src/helics/network/NetworkCommsInterface.cpp
-1
+1
Loading file...
Changes in src/helics/core/ActionMessage.cpp
-2
+2
Loading file...
Changes in src/helics/core/CoreBroker.cpp
-4
+4
Loading file...
Changes in src/helics/core/TimeCoordinator.cpp
New
Loading file...
Changes in src/helics/core/CommonCore.cpp
New
Loading file...
Changes in src/helics/core/BrokerBase.cpp
-2
+2
Loading file...
Changes in src/helics/network/zmq/ZmqCommsSS.cpp
-2
+2
Loading file...
Changes in src/helics/network/test/TestComms.cpp
-1
+1
Loading file...
Changes in src/helics/apps/helicsWebServer.cpp
-4
+4
Loading file...
Changes in src/helics/core/CoreFactory.cpp
-3
+3
Loading file...
Changes in src/helics/network/zmq/ZmqComms.cpp
-19
+19
Loading file...
Files Coverage
src/helics 0.07% 76.96%
Project Totals (210 files) 76.96%
Loading