diff --git a/docs/documentation/simulation_capabilities/Status-Message-System.md b/docs/documentation/simulation_capabilities/Status-Message-System.md index 438f0634..5ed2c879 100644 --- a/docs/documentation/simulation_capabilities/Status-Message-System.md +++ b/docs/documentation/simulation_capabilities/Status-Message-System.md @@ -14,9 +14,9 @@ If there are no subscribers, then publishing a message has no effect. ## Message Subscriber There can be any number of Message Subscribers, whose job is to receive (and usually output) published messages. Trick automatically creates three Message Subscribers: -- `Trick::MessageCout` - outputs messages to the standard output stream -- `Trick::MessageFile` - outputs messages to a file named `send_hs` in the RUN directory -- `Trick::MessageTCDevice` - outputs messages to a socket at port 7200, used by the Simulation Control Panel for its Status Messages display +- `Trick::MessageCout` - outputs messages with level < 100 to the standard output stream +- `Trick::MessageHSFile` - outputs messages with level < 100 to a file named `send_hs` in the RUN directory +- `Trick::MessageTCDevice` - outputs messages with level < 100 to a socket at port 7200, used by the Simulation Control Panel for its Status Messages display When you publish a message, it will be output by the three subscribers above. A subscriber can be enabled / disabled at any time during simulation execution to output / ignore messages as desired. @@ -33,16 +33,18 @@ trick_message.mtcout.init() trick.message_subscribe(trick_message.mtcout) ``` -## User accessible routines +## Publish a message To publish a message: ```cpp -int ::message_publish(int level, const char * format_msg, ...) ; -int ::send_hs(FILE * fp, const char * format_msg, ...) ; +#include "trick/message_proto.h" +#include "trick/message_level.h" + +int message_publish(int level, const char * format_msg, ...) ; ``` -The level number can be any integer from 0 to 99. Trick has a few predefined levels (`Trick::MessagePublisher::MESSAGE_TYPE`) that it uses for publishing messages. +The level number can be any number greater than or equal to 0. Levels 0-99 are captured by Trick's default message subscribers. Trick has a few predefined levels (`Trick::MessagePublisher::MESSAGE_TYPE`) that it uses for publishing messages. If the message subscriber's color is enabled (see below), then a particular colored message will be displayed for each of these levels: - 0 - normal message, default color - 1 - informational message, green @@ -50,6 +52,31 @@ If the message subscriber's color is enabled (see below), then a particular colo - 3 - error message, red - 10 - debug message, cyan +## Open a custom log file + +To open a custom message file: + +```cpp +#include "trick/Message_proto.hh" + +int open_custom_message_file(std::string file_name, std::string subscriber_name, int level = -1); +``` + +This function opens a new file, adds it to the list of message subscribers, and returns the level that can be used to write to the file. + +A user can specify a level >= 0. If `open_custom_message_file` is called without a level argument, the function will assign a unique level to the file that is >= 100. If a user wants the messages written to this file to also be captured by default Trick message subscribers, they should specify a level from 0-99. + +Example: +```cpp +// Open the logfile +int my_level = open_custom_message_file("my_log_dir/logfile", "custom_log"); + +// Write to it by publishing a message with the given level +message_publish(my_level, "This message will be written to my custom logfile"); +``` + +## User accessible routines + To subscribe / unsubscribe Trick's default subscribers (these call `::message_subscribe` / `::message_unsubscribe` mentioned above): By default these are all subscribed. You can use subscribe/unsubscribe throughout a simulation to turn on/off messages at will. diff --git a/docs/documentation/simulation_capabilities/Variable-Server.md b/docs/documentation/simulation_capabilities/Variable-Server.md index ef6d112c..ba739093 100644 --- a/docs/documentation/simulation_capabilities/Variable-Server.md +++ b/docs/documentation/simulation_capabilities/Variable-Server.md @@ -39,7 +39,7 @@ int set_var_server_info_msg_on(); ``` These commands are also for toggling information messages from the variable server (i.e., commands received from ALL clients). -The messages only go to a dedicated "varserver_log" file in the RUN directory. +The messages only go to a dedicated `varserver_log` file in the RUN directory. The variable server log capability is off by default. ```c @@ -47,6 +47,16 @@ int set_var_server_log_off(); int set_var_server_log_on(); ``` +These commands are also for toggling individual variable server session logs. +Each log records the IP and port number of the client that connected and every message received. +These logs go into a subdirectory under the RUN direcory called `sesssion_logs`, and the files are named `VSSession.log` +The variable server session log capability is off by default. + +```c +int set_var_server_session_log_off(); +int set_var_server_session_log_on(); +``` + ### Getting and Setting the Variable Server Port Information To set the variable server port to a fixed number in the input file use var_server_set_port() diff --git a/include/trick/CommandLineArguments.hh b/include/trick/CommandLineArguments.hh index fad9fd12..ab250ef6 100644 --- a/include/trick/CommandLineArguments.hh +++ b/include/trick/CommandLineArguments.hh @@ -139,6 +139,7 @@ namespace Trick { */ void set_output_dir(std::string output_directory) ; + // TODO: Move elsewhere // Helper method to create full path static int create_path(const std::string& dirname); diff --git a/include/trick/MessageCustomFile.hh b/include/trick/MessageCustomFile.hh index 662f975e..e62a4299 100644 --- a/include/trick/MessageCustomFile.hh +++ b/include/trick/MessageCustomFile.hh @@ -39,17 +39,17 @@ namespace Trick { * @brief Get the level * */ - virtual int get_level(); + virtual int get_level() const; + virtual void set_level(int level); virtual void set_name(std::string name); virtual void set_file_name(std::string file_name); - int this_level; protected: + int _this_level; static int level_counter; - // static std::vector& all_instances(); } ; diff --git a/include/trick/MessageCustomManager.hh b/include/trick/MessageCustomManager.hh index 589e2907..df16ad72 100644 --- a/include/trick/MessageCustomManager.hh +++ b/include/trick/MessageCustomManager.hh @@ -44,7 +44,7 @@ namespace Trick { int restart(); protected: - std::vector custom_message_files; + std::vector _custom_message_files; } ; } diff --git a/include/trick/Mock/MockVariableServerSession.hh b/include/trick/Mock/MockVariableServerSession.hh index 2e1ae005..08e7c61b 100644 --- a/include/trick/Mock/MockVariableServerSession.hh +++ b/include/trick/Mock/MockVariableServerSession.hh @@ -13,8 +13,8 @@ class MockVariableServerSession : public Trick::VariableServerSession { MOCK_CONST_METHOD0(get_enabled, bool()); MOCK_CONST_METHOD0(get_write_mode, VS_WRITE_MODE()); MOCK_CONST_METHOD0(get_copy_mode, VS_COPY_MODE()); - MOCK_METHOD0(set_log_on, int()); - MOCK_METHOD0(set_log_off, int()); + MOCK_METHOD1(set_log, int(bool on_off)); + MOCK_METHOD1(set_session_log, int(bool on_off)); MOCK_METHOD0(copy_sim_data, int()); MOCK_CONST_METHOD0(get_update_rate, double()); MOCK_CONST_METHOD0(get_frame_multiple, int()); diff --git a/include/trick/VariableServer.hh b/include/trick/VariableServer.hh index be8524e5..3f84d685 100644 --- a/include/trick/VariableServer.hh +++ b/include/trick/VariableServer.hh @@ -174,6 +174,11 @@ namespace Trick { */ bool get_log() ; + /** + @brief @userdesc Test if the variable server logging is on. + */ + bool get_session_log() ; + /** @brief @userdesc Command to turn on variable server info messages (e.g., get a message when a command is received from any client). @@ -213,6 +218,24 @@ namespace Trick { */ void set_var_server_log_off() ; + /** + @brief @userdesc Command to turn on variable server session logging for all clients. + Each new session will create a file under RUN_<>/session_logs/ containg the client's IP and port and all messages received. + @par Python Usage: + @code trick.set_var_server_log_on() @endcode + @return always 0 + */ + void set_var_server_session_log_on() ; + + /** + @brief @userdesc Command to turn off variable server session logging for all clients. + No session log will be creeated. + @par Python Usage: + @code trick.set_var_server_log_off() @endcode + @return always 0 + */ + void set_var_server_session_log_off() ; + /** @brief @userdesc Command to open additional variable server listen port. @param source_address - the name or numeric IP of the machine to bind listen socket. NULL or empty @@ -282,6 +305,9 @@ namespace Trick { to a varserver_log file in the RUN directory.\n */ bool log ; /**< trick_units(--) */ + /** Toggle to turn on/off variable server individual session logs. */ + bool session_log ; /**< trick_units(--) */ + /** Default listen port thread object */ VariableServerListenThread listen_thread ; diff --git a/include/trick/VariableServerSession.hh b/include/trick/VariableServerSession.hh index c7891791..88c5fdea 100644 --- a/include/trick/VariableServerSession.hh +++ b/include/trick/VariableServerSession.hh @@ -343,22 +343,23 @@ namespace Trick { virtual int var_byteswap(bool on_off) ; /** - @brief @userdesc Command to turn on variable server logged messages to a playback file. + @brief @userdesc Command to toggle variable server logged messages to a playback file. All messages received from all clients will be saved to file named "playback" in the RUN directory. @par Python Usage: - @code trick.set_log_on() @endcode + @code trick.set_log() @endcode @return always 0 */ - virtual int set_log_on() ; + virtual int set_log(bool on_off) ; /** - @brief @userdesc Command to turn off variable server logged messages to a playback file. + @brief @userdesc Command to toggle variable server session log. + Each session will create a file containing the IP and port of client and all messages. + The file will be created in a session_log/ subdirectory under the RUN directory. @par Python Usage: - @code trick.set_log_off() @endcode + @code trick.set_session_log() @endcode @return always 0 */ - virtual int set_log_off() ; - + virtual int set_session_log (bool on_off) ; /** @brief @userdesc Command to set info messages. @@ -420,6 +421,7 @@ namespace Trick { private: static int instance_counter; + static std::string log_subdir; pthread_mutex_t _copy_mutex; /**< trick_io(**) */ @@ -452,7 +454,7 @@ namespace Trick { void log_received_message(const std::string& msg); void log_connection_opened (); - bool is_log_open(); + bool is_session_log_open(); void open_session_log(); @@ -509,11 +511,14 @@ namespace Trick { /** Toggle to turn on/off variable server logged messages to a playback file.\n */ bool _log ; /**< trick_io(**) */ + /** Toggle to turn on/off individual variable server session logs.\n */ + bool _session_log; /**< trick_io(**) */ + /** Toggle to turn on/off debug info messages.\n */ bool _info_msg ; - /** Message stream number for the log file */ - int _log_msg_stream; + /** Message stream number for the session log file */ + int _session_log_msg_stream; /** Toggle to indicate var_pause commanded.\n */ bool _pause_cmd ; /**< trick_io(**) */ diff --git a/include/trick/command_line_protos.h b/include/trick/command_line_protos.h index a3e56ab3..93218787 100644 --- a/include/trick/command_line_protos.h +++ b/include/trick/command_line_protos.h @@ -45,5 +45,8 @@ void set_output_dir(const char* output_directory); std::string & command_line_args_get_input_file_ref(void) ; #endif +void create_path(const char* directory); + + #endif diff --git a/trick_source/sim_services/CommandLineArguments/command_line_c_intf.cpp b/trick_source/sim_services/CommandLineArguments/command_line_c_intf.cpp index c6ea47ee..9181ab69 100644 --- a/trick_source/sim_services/CommandLineArguments/command_line_c_intf.cpp +++ b/trick_source/sim_services/CommandLineArguments/command_line_c_intf.cpp @@ -114,3 +114,6 @@ std::string & command_line_args_get_input_file_ref(void) { return(the_cmd_args->get_input_file_ref()) ; } +void create_path(const char* directory) { + Trick::CommandLineArguments::create_path(directory); +} \ No newline at end of file diff --git a/trick_source/sim_services/Message/MessageCustomFile.cpp b/trick_source/sim_services/Message/MessageCustomFile.cpp index 97d0727b..db17ab6b 100644 --- a/trick_source/sim_services/Message/MessageCustomFile.cpp +++ b/trick_source/sim_services/Message/MessageCustomFile.cpp @@ -13,7 +13,7 @@ int Trick::MessageCustomFile::level_counter = 200; @details -# Initializes everything */ -Trick::MessageCustomFile::MessageCustomFile() : this_level(level_counter++) { +Trick::MessageCustomFile::MessageCustomFile() : _this_level(level_counter++) { } /** @@ -23,19 +23,24 @@ Trick::MessageCustomFile::MessageCustomFile() : this_level(level_counter++) { -# Flush the stream */ void Trick::MessageCustomFile::update( unsigned int level , std::string header, std::string message ) { - if ( enabled && level == this_level ) { + if ( enabled && level == _this_level ) { out_stream << header << message ; out_stream.flush() ; } } -int Trick::MessageCustomFile::get_level() { - return this_level; +int Trick::MessageCustomFile::get_level() const { + return _this_level; +} + +void Trick::MessageCustomFile::set_level(int level) { + if (level >= 0) + _this_level = level; } void Trick::MessageCustomFile::set_name(std::string name) { if (name == "") { - name = "CustomLog" + this_level; + name = "CustomLog" + std::to_string(_this_level); } this->name = name; } diff --git a/trick_source/sim_services/Message/MessageCustomManager.cpp b/trick_source/sim_services/Message/MessageCustomManager.cpp index 38d882a0..dbeda119 100644 --- a/trick_source/sim_services/Message/MessageCustomManager.cpp +++ b/trick_source/sim_services/Message/MessageCustomManager.cpp @@ -6,7 +6,7 @@ Trick::MessageCustomManager * the_message_custom_manager ; int open_custom_message_file(std::string file_name, std::string subscriber_name, int level) { if (the_message_custom_manager == NULL) { - std::cout << "Problem: custom_message_manager not yet intantiated" << std::endl; + std::cout << "Problem: custom_message_manager not yet instantiated" << std::endl; return -1; } @@ -23,7 +23,7 @@ Trick::MessageCustomManager::MessageCustomManager() { Trick::MessageCustomManager::~MessageCustomManager() { the_message_custom_manager = NULL; - for (Trick::MessageCustomFile * message_file : custom_message_files) { + for (Trick::MessageCustomFile * message_file : _custom_message_files) { TMM_delete_var_a(message_file); } } @@ -31,11 +31,12 @@ Trick::MessageCustomManager::~MessageCustomManager() { int Trick::MessageCustomManager::open_custom_message_file(std::string file_name, std::string subscriber_name, int level) { Trick::MessageCustomFile * new_message_file = (Trick::MessageCustomFile *) TMM_declare_var_s("Trick::MessageCustomFile"); + new_message_file->set_level(level); new_message_file->set_file_name(file_name); new_message_file->set_name(subscriber_name); new_message_file->init(); - custom_message_files.push_back(new_message_file); + _custom_message_files.push_back(new_message_file); return new_message_file->get_level(); } @@ -44,13 +45,13 @@ int Trick::MessageCustomManager::open_custom_message_file(std::string file_name, @brief Output message to the file. */ void Trick::MessageCustomManager::update( unsigned int level , std::string header , std::string message ) { - for (MessageCustomFile* message_file : custom_message_files) { + for (auto message_file : _custom_message_files) { message_file->update(level, header, message); } } int Trick::MessageCustomManager::restart( ) { - for (MessageCustomFile* message_file : custom_message_files) { + for (auto message_file : _custom_message_files) { message_file->restart(); } diff --git a/trick_source/sim_services/Message/MessageFile.cpp b/trick_source/sim_services/Message/MessageFile.cpp index c803e9c8..6411cca3 100644 --- a/trick_source/sim_services/Message/MessageFile.cpp +++ b/trick_source/sim_services/Message/MessageFile.cpp @@ -1,9 +1,14 @@ #include #include +#include #include "trick/MessageFile.hh" #include "trick/command_line_protos.h" +#include "trick/message_proto.h" +#include "trick/message_type.h" + + /** @details @@ -48,7 +53,18 @@ void Trick::MessageFile::update( unsigned int level , std::string header, std::s int Trick::MessageFile::init() { unlink((std::string(command_line_args_get_output_dir()) + "/" + file_name).c_str()) ; + + // Create the directory if we need to + int pos = file_name.find_last_of("/"); + if (pos != std::string::npos) { + std::string dir = std::string(command_line_args_get_output_dir()) + "/" + file_name.substr(0, pos); + create_path(dir.c_str()); + } + out_stream.open((std::string(command_line_args_get_output_dir()) + "/" + file_name).c_str() , std::fstream::out | std::fstream::app ) ; + if (!out_stream.is_open()) { + message_publish(MSG_ERROR, "Failed to open message file %s\n",file_name.c_str()); + } return(0) ; } diff --git a/trick_source/sim_services/VariableServer/VariableServer.cpp b/trick_source/sim_services/VariableServer/VariableServer.cpp index 4f6b5de7..3db21fb7 100644 --- a/trick_source/sim_services/VariableServer/VariableServer.cpp +++ b/trick_source/sim_services/VariableServer/VariableServer.cpp @@ -69,11 +69,15 @@ bool Trick::VariableServer::get_log() { return log ; } +bool Trick::VariableServer::get_session_log() { + return session_log ; +} + void Trick::VariableServer::set_var_server_log_on() { log = true; // turn log on for all current vs clients for ( auto& session_it : var_server_sessions ) { - session_it.second->set_log_on(); + session_it.second->set_log(true); } } @@ -81,7 +85,23 @@ void Trick::VariableServer::set_var_server_log_off() { log = false; // turn log off for all current vs clients for ( auto& session_it : var_server_sessions ) { - session_it.second->set_log_off(); + session_it.second->set_log(false); + } +} + +void Trick::VariableServer::set_var_server_session_log_on() { + session_log = true; + // turn log on for all current vs clients + for ( auto& session_it : var_server_sessions ) { + session_it.second->set_session_log(true); + } +} + +void Trick::VariableServer::set_var_server_session_log_off() { + session_log = false; + // turn log off for all current vs clients + for ( auto& session_it : var_server_sessions ) { + session_it.second->set_session_log(false); } } diff --git a/trick_source/sim_services/VariableServer/VariableServerSession.cpp b/trick_source/sim_services/VariableServer/VariableServerSession.cpp index 76630143..e9329671 100644 --- a/trick_source/sim_services/VariableServer/VariableServerSession.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerSession.cpp @@ -7,12 +7,14 @@ #include "trick/realtimesync_proto.h" int Trick::VariableServerSession::instance_counter = 0; +std::string Trick::VariableServerSession::log_subdir = "session_logs"; Trick::VariableServerSession::VariableServerSession() { _debug = 0; _enabled = true ; _log = false ; - _log_msg_stream = -1; + _session_log = false; + _session_log_msg_stream = -1; _info_msg = false; _copy_mode = VS_COPY_ASYNC ; _write_mode = VS_WRITE_ASYNC ; @@ -56,25 +58,25 @@ void Trick::VariableServerSession::set_connection(ClientConnection * conn) { log_connection_opened(); } -bool Trick::VariableServerSession::is_log_open() { - return _log_msg_stream != -1; +bool Trick::VariableServerSession::is_session_log_open() { + return _session_log_msg_stream != -1; } void Trick::VariableServerSession::open_session_log() { std::string name = "VSSession" + std::to_string(_instance_num); - _log_msg_stream = open_custom_message_file(name + ".log", name); + _session_log_msg_stream = open_custom_message_file(log_subdir + "/" + name + ".log", name); } // Command to turn on log to varserver_log file -int Trick::VariableServerSession::set_log_on() { - _log = true; +int Trick::VariableServerSession::set_log(bool on_off) { + _log = on_off; return(0) ; } -// Command to turn off log to varserver_log file -int Trick::VariableServerSession::set_log_off() { - _log = false; +// Command to turn on individual session log file +int Trick::VariableServerSession::set_session_log(bool on_off) { + _session_log = on_off; return(0) ; } @@ -120,22 +122,25 @@ long long Trick::VariableServerSession::get_freeze_next_tics() const { } void Trick::VariableServerSession::log_connection_opened() { - if (_log) { - if (!is_log_open()) { + if (_session_log) { + if (!is_session_log_open()) { open_session_log(); } - message_publish(_log_msg_stream, "Variable Server Session started with %s:%d\n", _connection->getClientHostname().c_str(), _connection->getClientPort()); + message_publish(_session_log_msg_stream, "Variable Server Session started with %s:%d\n", _connection->getClientHostname().c_str(), _connection->getClientPort()); } } void Trick::VariableServerSession::log_received_message(const std::string& msg) { if (_log) { message_publish(MSG_PLAYBACK, "tag=<%s> time=%f %s", _connection->getClientTag().c_str(), exec_get_sim_time(), msg.c_str()); - - if (!is_log_open()) open_session_log(); + } - message_publish(_log_msg_stream, "tag=<%s> time=%f %s", _connection->getClientTag().c_str(), exec_get_sim_time(), msg.c_str()); + if (_session_log) { + if (!is_session_log_open()) + open_session_log(); + + message_publish(_session_log_msg_stream, "tag=<%s> time=%f %s", _connection->getClientTag().c_str(), exec_get_sim_time(), msg.c_str()); } if (_debug >= 3) { diff --git a/trick_source/sim_services/VariableServer/VariableServerSessionThread_loop.cpp b/trick_source/sim_services/VariableServer/VariableServerSessionThread_loop.cpp index 208ae1eb..2dad9d0e 100644 --- a/trick_source/sim_services/VariableServer/VariableServerSessionThread_loop.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerSessionThread_loop.cpp @@ -41,7 +41,11 @@ void * Trick::VariableServerSessionThread::thread_body() { // if log is set on for variable server (e.g., in input file), turn log on for each client if (_vs->get_log()) { - _session->set_log_on(); + _session->set_log(true); + } + + if (_vs->get_session_log()) { + _session->set_session_log(true); } if (_vs->get_info_msg()) { diff --git a/trick_source/sim_services/VariableServer/test/VariableServerSessionThread_test.cc b/trick_source/sim_services/VariableServer/test/VariableServerSessionThread_test.cc index 97320385..9150f8a5 100644 --- a/trick_source/sim_services/VariableServer/test/VariableServerSessionThread_test.cc +++ b/trick_source/sim_services/VariableServer/test/VariableServerSessionThread_test.cc @@ -259,7 +259,7 @@ TEST_F(VariableServerSessionThread_test, turn_session_log_on) { varserver->set_var_server_log_on(); // We expect a the session's log to be turned on - EXPECT_CALL(*session, set_log_on()) + EXPECT_CALL(*session, set_log(true)) .Times(1); // Set up VariableServerSessionThread diff --git a/trick_source/sim_services/VariableServer/test/VariableServerSession_test.cc b/trick_source/sim_services/VariableServer/test/VariableServerSession_test.cc index 2c666c85..103ec112 100644 --- a/trick_source/sim_services/VariableServer/test/VariableServerSession_test.cc +++ b/trick_source/sim_services/VariableServer/test/VariableServerSession_test.cc @@ -300,7 +300,9 @@ TEST_F(VariableServerSession_test, log_on) { EXPECT_CALL(input_processor, parse(_)); // ACT - session.set_log_on(); + session.set_log(true); + session.set_session_log(true); + session.handle_message(); // ASSERT diff --git a/trick_source/sim_services/VariableServer/test/VariableServer_test.cc b/trick_source/sim_services/VariableServer/test/VariableServer_test.cc index 986bceb2..ec0b51d7 100644 --- a/trick_source/sim_services/VariableServer/test/VariableServer_test.cc +++ b/trick_source/sim_services/VariableServer/test/VariableServer_test.cc @@ -31,7 +31,7 @@ class VariableServer_test : public ::testing::Test { TEST_F(VariableServer_test, set_log_on) { // ARRANGE MockVariableServerSession session; - EXPECT_CALL(session, set_log_on()) + EXPECT_CALL(session, set_log(true)) .Times(1); pthread_t id = (pthread_t) 5; @@ -47,7 +47,7 @@ TEST_F(VariableServer_test, set_log_on) { TEST_F(VariableServer_test, set_log_off) { // ARRANGE MockVariableServerSession session; - EXPECT_CALL(session, set_log_off()) + EXPECT_CALL(session, set_log(false)) .Times(1); pthread_t id = (pthread_t) 5; @@ -60,6 +60,40 @@ TEST_F(VariableServer_test, set_log_off) { EXPECT_EQ(vs.get_log(), false); } + +TEST_F(VariableServer_test, set_session_log_on) { + // ARRANGE + MockVariableServerSession session; + EXPECT_CALL(session, set_session_log(true)) + .Times(1); + + pthread_t id = (pthread_t) 5; + vs.add_session(id, &session); + + // ACT + vs.set_var_server_session_log_on(); + + // ASSERT + EXPECT_EQ(vs.get_session_log(), true); +} + +TEST_F(VariableServer_test, set_session_log_off) { + // ARRANGE + MockVariableServerSession session; + EXPECT_CALL(session, set_session_log(false)) + .Times(1); + + pthread_t id = (pthread_t) 5; + vs.add_session(id, &session); + + // ACT + vs.set_var_server_session_log_off(); + + // ASSERT + EXPECT_EQ(vs.get_session_log(), false); +} + + TEST_F(VariableServer_test, enabled_by_default) { // ARRANGE // ACT diff --git a/trick_source/sim_services/VariableServer/var_server_ext.cpp b/trick_source/sim_services/VariableServer/var_server_ext.cpp index 82c710fe..bae2c328 100644 --- a/trick_source/sim_services/VariableServer/var_server_ext.cpp +++ b/trick_source/sim_services/VariableServer/var_server_ext.cpp @@ -358,7 +358,7 @@ Trick::VariableServerSession * session = get_session(); int var_server_log_on() { Trick::VariableServerSession * session = get_session(); if (session != NULL ) { - return session->set_log_on() ; + return session->set_log(true) ; } return 0 ; } @@ -367,7 +367,25 @@ Trick::VariableServerSession * session = get_session(); int var_server_log_off() { Trick::VariableServerSession * session = get_session(); if (session != NULL ) { - return session->set_log_off() ; + return session->set_log(false) ; + } + return 0 ; +} + +// Command to turn on log to playback file +int var_server_session_log_on() { +Trick::VariableServerSession * session = get_session(); + if (session != NULL ) { + return session->set_session_log(true) ; + } + return 0 ; +} + +// Command to turn off log to playback file +int var_server_session_log_off() { +Trick::VariableServerSession * session = get_session(); + if (session != NULL ) { + return session->set_session_log(false) ; } return 0 ; }