Skip to content

Dphan/nats cpp #35

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ add_subdirectory(testApi)
add_subdirectory(olink_tests/olink_core_only_tests)
add_subdirectory(olink_tests/single_object_many_threads)
add_subdirectory(mqtt_tests/single_object_many_threads)
add_subdirectory(nats_tests/single_object_many_threads)
if(MANY_OBJECT_TESTS)
add_subdirectory(olink_tests/many_objects)
add_subdirectory(mqtt_tests/many_objects)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
#include "latency_helpers.h"
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <numeric>
#include <vector>
void calculateAndPrintLatencyParameters (const std::vector<chrono_hr_timepoint>& startPoints,
const std::vector<chrono_hr_timepoint>& stopPoints)
{
uint64_t sum = 0;
uint32_t min = std::chrono::duration_cast<std::chrono::microseconds>(stopPoints[0] - startPoints[0]).count();
uint32_t max = 0;
for (size_t i = 0; i < startPoints.size(); i++)
{
auto latency = std::chrono::duration_cast<std::chrono::microseconds>(stopPoints[i] - startPoints[i]).count();
sum = sum + latency;
if (min > latency) { min = latency; }
if (max < latency) { max = latency; }
}
auto mean = double(sum) / startPoints.size();
std::cout << "Latency[us]: mean " << std::fixed << std::setprecision(2) << mean << " max " <<max << " min " << min << std::endl;
}
void calculateAndPrintLatencyParameters(const std::vector<uint32_t>& intervalsInMicroseconds)
{
auto sum = std::accumulate(intervalsInMicroseconds.cbegin(), intervalsInMicroseconds.cend(), 0);
double mean = double(sum) / intervalsInMicroseconds.size();
const auto min_max = std::minmax_element(intervalsInMicroseconds.begin(), intervalsInMicroseconds.end());
std::cout << "Latency[us]: mean " << std::fixed << std::setprecision(2) << mean << " max " << *(min_max.second) << " min " << *(min_max.first) << std::endl;
}
#include "latency_helpers.h"
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <numeric>
#include <vector>

void calculateAndPrintLatencyParameters (const std::vector<chrono_hr_timepoint>& startPoints,
const std::vector<chrono_hr_timepoint>& stopPoints)
{
uint64_t sum = 0;
uint32_t min = std::chrono::duration_cast<std::chrono::microseconds>(stopPoints[0] - startPoints[0]).count();
uint32_t max = 0;
for (size_t i = 0; i < startPoints.size(); i++)
{
auto latency = std::chrono::duration_cast<std::chrono::microseconds>(stopPoints[i] - startPoints[i]).count();
sum = sum + latency;
if (min > latency) { min = latency; }
if (max < latency) { max = latency; }
}
auto mean = double(sum) / startPoints.size();

std::cout << "Latency[us]: mean " << std::fixed << std::setprecision(2) << mean << " max " <<max << " min " << min << std::endl;
}

void calculateAndPrintLatencyParameters(const std::vector<uint32_t>& intervalsInMicroseconds)
{
auto sum = std::accumulate(intervalsInMicroseconds.cbegin(), intervalsInMicroseconds.cend(), 0);
double mean = double(sum) / intervalsInMicroseconds.size();
const auto min_max = std::minmax_element(intervalsInMicroseconds.begin(), intervalsInMicroseconds.end());
std::cout << "Latency[us]: mean " << std::fixed << std::setprecision(2) << mean << " max " << *(min_max.second) << " min " << *(min_max.first) << std::endl;
}

Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
#pragma once
#include <memory>
#include <vector>
#include <chrono>
using chrono_hr_timepoint = std::chrono::time_point<std::chrono::high_resolution_clock>;
/**
* Calculates mean, min and max parameters for events duration described in two vectors, one with events start timepoint and one with events stop timepoints.
* Assumes that the position in a vector identifies the event. For an event A position of start in startPoints must be same as its stop in stopPoints
* @param startPoints timepoints for start of events
* @param stopPoints timepoints for stop of events
*/
void calculateAndPrintLatencyParameters (const std::vector<chrono_hr_timepoint>& startPoints,
const std::vector<chrono_hr_timepoint>& stopPoints);
/**
* Calculates mean, min and max parameters for a vector
* @param intervalsInMicroseconds an interval time in microseconds.
*/
void calculateAndPrintLatencyParameters(const std::vector<uint32_t>& intervalsInMicroseconds);
#pragma once

#include <memory>
#include <vector>
#include <chrono>

using chrono_hr_timepoint = std::chrono::time_point<std::chrono::high_resolution_clock>;

/**
* Calculates mean, min and max parameters for events duration described in two vectors, one with events start timepoint and one with events stop timepoints.
* Assumes that the position in a vector identifies the event. For an event A position of start in startPoints must be same as its stop in stopPoints
* @param startPoints timepoints for start of events
* @param stopPoints timepoints for stop of events
*/
void calculateAndPrintLatencyParameters (const std::vector<chrono_hr_timepoint>& startPoints,
const std::vector<chrono_hr_timepoint>& stopPoints);


/**
* Calculates mean, min and max parameters for a vector
* @param intervalsInMicroseconds an interval time in microseconds.
*/
void calculateAndPrintLatencyParameters(const std::vector<uint32_t>& intervalsInMicroseconds);
2 changes: 1 addition & 1 deletion cpp/mqtt_tests/many_objects/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
add_executable(mqtt_multi_client_setIntProperty "client_setIntProperty.cpp")
add_executable(mqtt_multi_client_setFloatProperty "client_setFloatProperty.cpp")
add_executable(mqtt_multi_client_setStringProperty "client_setStringProperty.cpp")
add_executable(mqtt_multi_service "server.cpp" "../helpers/prepare_test_services.cpp" )
add_executable(mqtt_multi_service "server.cpp" "helpers/prepare_test_services.cpp" )

target_link_libraries(mqtt_multi_client_setIntProperty api::api-mqtt)
target_link_libraries(mqtt_multi_client_setFloatProperty api::api-mqtt)
Expand Down
6 changes: 3 additions & 3 deletions cpp/mqtt_tests/many_objects/client_setFloatProperty.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "../../scenario_templates/many_objects/executeTestFunction.h"
#include "../helpers/mqtt_network_protocol_handler_for_test.hpp"
#include "../helpers/itestsink.h"
#include "../helpers/prepare_test_data.h"
#include "../mqtt_network_protocol_handler_for_test.hpp"
#include "helpers/itestsink.h"
#include "helpers/prepare_test_data.h"
#include <memory>

struct PropertyFloatTestData
Expand Down
6 changes: 3 additions & 3 deletions cpp/mqtt_tests/many_objects/client_setIntProperty.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "../../scenario_templates/many_objects/executeTestFunction.h"
#include "../helpers/mqtt_network_protocol_handler_for_test.hpp"
#include "../helpers/itestsink.h"
#include "../helpers/prepare_test_data.h"
#include "../mqtt_network_protocol_handler_for_test.hpp"
#include "helpers/itestsink.h"
#include "helpers/prepare_test_data.h"
#include <memory>

struct PropertyIntTestData
Expand Down
6 changes: 3 additions & 3 deletions cpp/mqtt_tests/many_objects/client_setStringProperty.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "../../scenario_templates/many_objects/executeTestFunction.h"
#include "../helpers/mqtt_network_protocol_handler_for_test.hpp"
#include "../helpers/itestsink.h"
#include "../helpers/prepare_test_data.h"
#include "../mqtt_network_protocol_handler_for_test.hpp"
#include "helpers/itestsink.h"
#include "helpers/prepare_test_data.h"

#include <memory>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,57 +1,57 @@
#pragma once
#include <apigear/mqtt/mqttclient.h>
class ITestSink
{
public:
virtual bool isReady() const = 0;
virtual uint32_t receivedMessages() const = 0;
};
template <class BaseMqttTestApi>
class TestSink : public ITestSink, public BaseMqttTestApi
{
public:
TestSink(std::shared_ptr<ApiGear::MQTT::Client> client)
:BaseMqttTestApi(client)
{
idPropInt = BaseMqttTestApi::_getPublisher().subscribeToPropIntChanged([this](auto value) {
msgReceived++;
});
idPropFloat = BaseMqttTestApi::_getPublisher().subscribeToPropFloatChanged([this](auto value) {msgReceived++; });
idPropString = BaseMqttTestApi::_getPublisher().subscribeToPropStringChanged([this](auto value) {msgReceived++; });
idSigInt = BaseMqttTestApi::_getPublisher().subscribeToSigInt([this](auto value) {msgReceived++; });
idSigFloat = BaseMqttTestApi::_getPublisher().subscribeToSigFloat([this](auto value) {msgReceived++; });
idSigString = BaseMqttTestApi::_getPublisher().subscribeToSigString([this](auto value) {msgReceived++; });
}
~TestSink()
{
BaseMqttTestApi::_getPublisher().unsubscribeFromPropIntChanged(idPropInt);
BaseMqttTestApi::_getPublisher().unsubscribeFromPropFloatChanged(idPropFloat);
BaseMqttTestApi::_getPublisher().unsubscribeFromPropStringChanged(idPropString);
BaseMqttTestApi::_getPublisher().unsubscribeFromSigInt(idSigInt);
BaseMqttTestApi::_getPublisher().unsubscribeFromSigFloat(idSigFloat);
BaseMqttTestApi::_getPublisher().unsubscribeFromSigString(idSigString);
}
bool isReady() const override
{
return BaseMqttTestApi::isReady();
}
uint32_t receivedMessages() const override
{
return msgReceived;
}
private:
long idPropInt;
long idPropFloat;
long idPropString;
long idSigInt;
long idSigFloat;
long idSigString;
uint32_t msgReceived = 0;
};
#pragma once

#include <apigear/mqtt/mqttclient.h>

class ITestSink
{
public:
virtual bool isReady() const = 0;
virtual uint32_t receivedMessages() const = 0;
};


template <class BaseMqttTestApi>
class TestSink : public ITestSink, public BaseMqttTestApi
{
public:
TestSink(std::shared_ptr<ApiGear::MQTT::Client> client)
:BaseMqttTestApi(client)
{
idPropInt = BaseMqttTestApi::_getPublisher().subscribeToPropIntChanged([this](auto value) {
msgReceived++;
});
idPropFloat = BaseMqttTestApi::_getPublisher().subscribeToPropFloatChanged([this](auto value) {msgReceived++; });
idPropString = BaseMqttTestApi::_getPublisher().subscribeToPropStringChanged([this](auto value) {msgReceived++; });
idSigInt = BaseMqttTestApi::_getPublisher().subscribeToSigInt([this](auto value) {msgReceived++; });
idSigFloat = BaseMqttTestApi::_getPublisher().subscribeToSigFloat([this](auto value) {msgReceived++; });
idSigString = BaseMqttTestApi::_getPublisher().subscribeToSigString([this](auto value) {msgReceived++; });
}

~TestSink()
{
BaseMqttTestApi::_getPublisher().unsubscribeFromPropIntChanged(idPropInt);
BaseMqttTestApi::_getPublisher().unsubscribeFromPropFloatChanged(idPropFloat);
BaseMqttTestApi::_getPublisher().unsubscribeFromPropStringChanged(idPropString);
BaseMqttTestApi::_getPublisher().unsubscribeFromSigInt(idSigInt);
BaseMqttTestApi::_getPublisher().unsubscribeFromSigFloat(idSigFloat);
BaseMqttTestApi::_getPublisher().unsubscribeFromSigString(idSigString);
}

bool isReady() const override
{
return BaseMqttTestApi::isReady();
}

uint32_t receivedMessages() const override
{
return msgReceived;
}
private:
long idPropInt;
long idPropFloat;
long idPropString;
long idSigInt;
long idSigFloat;
long idSigString;
uint32_t msgReceived = 0;
};
Loading
Loading