From 93bb52c3849bc3f281fd14045bd0c3b02a6cea92 Mon Sep 17 00:00:00 2001 From: Olivier Stasse <ostasse@laas.fr> Date: Tue, 14 Jan 2020 13:45:53 +0100 Subject: [PATCH] [tests] Add real-time-tracer test. --- tests/CMakeLists.txt | 2 + tests/debug-real-time-tracer.cpp | 111 +++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 tests/debug-real-time-tracer.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d0a2cf6a..f4938fc4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -59,6 +59,8 @@ DYNAMIC_GRAPH_TEST(real-time-logger) DYNAMIC_GRAPH_TEST(debug-trace) DYNAMIC_GRAPH_TEST(debug-tracer) TARGET_LINK_LIBRARIES(debug-tracer tracer) +DYNAMIC_GRAPH_TEST(debug-real-time-tracer) +TARGET_LINK_LIBRARIES(debug-real-time-tracer tracer-real-time tracer) DYNAMIC_GRAPH_TEST(debug-logger) DYNAMIC_GRAPH_TEST(debug-logger-winit) DYNAMIC_GRAPH_TEST(signal-all) diff --git a/tests/debug-real-time-tracer.cpp b/tests/debug-real-time-tracer.cpp new file mode 100644 index 00000000..2d4243b4 --- /dev/null +++ b/tests/debug-real-time-tracer.cpp @@ -0,0 +1,111 @@ +/* Copyright 2019, LAAS-CNRS + * + * Olivier Stasse + * + */ + +#include <iostream> + +#include <dynamic-graph/entity.h> +#include <dynamic-graph/exception-factory.h> +#include <dynamic-graph/factory.h> +#include <dynamic-graph/pool.h> +#include <dynamic-graph/signal-ptr.h> +#include <dynamic-graph/signal-time-dependent.h> +#include <dynamic-graph/tracer-real-time.h> + +#define BOOST_TEST_MODULE debug - tracer + +#include <boost/test/output_test_stream.hpp> +#include <boost/test/unit_test.hpp> +using boost::test_tools::output_test_stream; + +namespace dynamicgraph { +struct MyEntity : public dynamicgraph::Entity { + static const std::string CLASS_NAME; + + dynamicgraph::Signal<double, int> m_sigdSIN; + dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT; + dynamicgraph::SignalTimeDependent<double, int> m_sigdTwoTimeDepSOUT; + + MyEntity(const std::string &name) + : Entity(name), + m_sigdSIN("MyEntity(" + name + ")::input(double)::in_double"), + m_sigdTimeDepSOUT(boost::bind(&MyEntity::update, this, _1, _2), + m_sigdSIN, + "MyEntity(" + name + ")::input(double)::out_double"), + m_sigdTwoTimeDepSOUT( + boost::bind(&MyEntity::update, this, _1, _2), m_sigdSIN, + "MyEntity(" + name + ")::input(double)::out2double") + + { + signalRegistration(m_sigdSIN << m_sigdTimeDepSOUT << m_sigdTwoTimeDepSOUT); + } + + virtual void display(std::ostream &os) const { + os << "Hello! My name is " << getName() << " !" << std::endl; + } + + virtual const std::string &getClassName() const { return CLASS_NAME; } + + double &update(double &res, const int &inTime) { + const double &aDouble = m_sigdSIN(inTime); + res = aDouble; + return res; + } +}; +DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN(MyEntity, "MyEntity"); +} // namespace dynamicgraph + +BOOST_AUTO_TEST_CASE(test_tracer) { + using namespace dynamicgraph; + + // Creates a tracer. + TracerRealTime &atracer = *dynamic_cast<TracerRealTime *>( + FactoryStorage::getInstance()->newEntity("TracerRealTime", + "my-tracer")); + + Entity &entity = + *FactoryStorage::getInstance()->newEntity("MyEntity", + "my-entity"); + + std::string rootdir("/tmp"); + std::string basename("my-tracer"); + std::string suffix(".dat"); + + /// Test openfiles + atracer.openFiles(rootdir, basename, suffix); + + /// Add trace by name + atracer.addSignalToTraceByName("my-entity.out_double", "output"); + + /// Add trace by name + SignalBase<int> &aSignal = entity.getSignal("out2double"); + + Signal<double, int> &aSignalInt = + *(dynamic_cast<Signal<double, int> *>( + &entity.getSignal("in_double"))); + + + aSignalInt.setConstant(1.5); + atracer.start(); + + atracer.trace(); + + for (int i = 0; i < 1000; i++) { + aSignal.setTime(i); + aSignalInt.setTime(i); + atracer.recordTrigger(i, i); + } + + atracer.stop(); + atracer.clearSignalToTrace(); + atracer.closeFiles(); + + atracer.record(); + + output_test_stream output; + atracer.display(output); + BOOST_CHECK(output.is_equal("TracerRealTime my-tracer [mode=pause] : " + "\n - Dep list: \n")); +} -- GitLab