From 819667ffa1737b4d0fdb61e53d9c91f9da020b85 Mon Sep 17 00:00:00 2001
From: hiluluk <thodkatz@gmail.com>
Date: Sun, 7 Apr 2019 18:00:47 +0300
Subject: [PATCH] Move the definition of the execute() from Service.cpp to
 MessageParser.hpp

---
 inc/MessageParser.hpp                        | 10 ++++
 inc/Service.hpp                              | 16 +++---
 src/MessageParser.cpp                        | 31 ++++++++++++
 src/Service.cpp                              | 32 ------------
 src/Services/EventActionService.cpp          |  2 +-
 src/main.cpp                                 |  2 +-
 test/Services/EventActionService.cpp         | 52 ++++++++++----------
 test/Services/EventReportService.cpp         | 10 ++--
 test/Services/FunctionManagementService.cpp  |  4 +-
 test/Services/MemoryManagementService.cpp    |  6 +--
 test/Services/ParameterService.cpp           | 10 ++--
 test/Services/TestService.cpp                |  4 +-
 test/Services/TimeBasedSchedulingService.cpp | 12 ++---
 test/Services/TimeManagementService.cpp      |  1 +
 14 files changed, 99 insertions(+), 93 deletions(-)

diff --git a/inc/MessageParser.hpp b/inc/MessageParser.hpp
index 1c2da64c..b6f40d3d 100644
--- a/inc/MessageParser.hpp
+++ b/inc/MessageParser.hpp
@@ -12,6 +12,16 @@
 class MessageParser {
 public:
 
+	/**
+     * This function takes as input TC packets and and calls the proper services' functions that have been
+	 * implemented to handle TC packets.
+	 *
+	 * @param Message Contains the necessary parameters to call the suitable subservice
+ 	 * @todo Implement the execute() in the upcoming services or generally in the upcoming
+ 	 * activities
+	 */
+	static void execute(Message &message);
+
 	/**
 	 * Parse a message that contains the CCSDS and ECSS packet headers, as well as the data
 	 *
diff --git a/inc/Service.hpp b/inc/Service.hpp
index 66e82557..7fc71104 100644
--- a/inc/Service.hpp
+++ b/inc/Service.hpp
@@ -46,6 +46,12 @@ protected:
 	 */
 	void storeMessage(Message &message);
 
+	/**
+	 * This function declared only to remind us that every service must have a function like
+	 * this, but this particular function does actually nothing.
+	 */
+	void execute(Message& message);
+
 	/**
 	 * Default protected constructor for this Service
 	 */
@@ -80,16 +86,6 @@ public:
 	 * Default move assignment operator
 	 */
 	Service &operator=(Service &&service) noexcept = default;
-
-	/**
-     * This function takes as input TC packets and and calls the proper services' functions that have been
-	 * implemented to handle TC packets.
-	 *
-	 * @param Message Contains the necessary parameters to call the suitable subservice
- 	 * @todo Implement the execute() in the upcoming services or generally in the upcoming
- 	 * activities
-	 */
-	static void execute(Message &message);
 };
 
 
diff --git a/src/MessageParser.cpp b/src/MessageParser.cpp
index 0d37aca6..7f173c06 100644
--- a/src/MessageParser.cpp
+++ b/src/MessageParser.cpp
@@ -6,6 +6,37 @@
 #include "Services/TestService.hpp"
 #include "Services/RequestVerificationService.hpp"
 
+void MessageParser::execute(Message& message) {
+	switch (message.serviceType) {
+		case 5:
+			Services.eventReport.execute(message); // ST[05]
+			break;
+		case 6:
+			Services.memoryManagement.rawDataMemorySubservice.execute(message); // ST[06]
+			break;
+		case 8:
+			Services.functionManagement.execute(message); // ST[08]
+			break;
+		case 9:
+			Services.timeManagement.execute(message); // ST[09]
+			break;
+		case 11:
+			Services.timeBasedScheduling.execute(message); // ST[11]
+			break;
+		case 17:
+			Services.testService.execute(message); // ST[17]
+			break;
+		case 19:
+			Services.eventAction.execute(message); // ST[19]
+			break;
+		case 20:
+			Services.parameterManagement.execute(message); // ST[20]
+			break;
+		default:
+			ErrorHandler::reportInternalError(ErrorHandler::OtherMessageType);
+	}
+}
+
 Message MessageParser::parse(uint8_t *data, uint32_t length) {
 	ASSERT_INTERNAL(length >= 6, ErrorHandler::UnacceptablePacket);
 
diff --git a/src/Service.cpp b/src/Service.cpp
index ab0d0139..66fdd045 100644
--- a/src/Service.cpp
+++ b/src/Service.cpp
@@ -1,33 +1 @@
 #include "Service.hpp"
-#include "ServicePool.hpp"
-
-void Service::execute(Message& message) {
-	switch (message.serviceType) {
-		case 5:
-			Services.eventReport.execute(message); // ST[05]
-			break;
-		case 6:
-			Services.memoryManagement.rawDataMemorySubservice.execute(message); // ST[06]
-			break;
-		case 8:
-			Services.functionManagement.execute(message); // ST[08]
-			break;
-		case 9:
-			Services.timeManagement.execute(message); // ST[09]
-			break;
-		case 11:
-			Services.timeBasedScheduling.execute(message); // ST[11]
-			break;
-		case 17:
-			Services.testService.execute(message); // ST[17]
-			break;
-		case 19:
-			Services.eventAction.execute(message); // ST[19]
-			break;
-		case 20:
-			Services.parameterManagement.execute(message); // ST[20]
-			break;
-		default:
-			ErrorHandler::reportInternalError(ErrorHandler::OtherMessageType);
-	}
-}
diff --git a/src/Services/EventActionService.cpp b/src/Services/EventActionService.cpp
index 95ed674f..450003a2 100644
--- a/src/Services/EventActionService.cpp
+++ b/src/Services/EventActionService.cpp
@@ -185,7 +185,7 @@ void EventActionService::executeAction(uint16_t eventID) {
 					MessageParser messageParser;
 					Message message = messageParser.parseRequestTC(
 						definition.request);
-					Service::execute(message);
+					MessageParser::execute(message);
 				}
 			}
 		}
diff --git a/src/main.cpp b/src/main.cpp
index 3125c421..50a1540d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -161,7 +161,7 @@ int main() {
 	                                             eventReportData);
 
 	Message trivialMessage = Message();
-	Service::execute(trivialMessage);
+	MessageParser::execute(trivialMessage);
 
 	// ErrorHandler test
 	std::cout << std::flush;
diff --git a/test/Services/EventActionService.cpp b/test/Services/EventActionService.cpp
index 3941e548..3e0ec21f 100644
--- a/test/Services/EventActionService.cpp
+++ b/test/Services/EventActionService.cpp
@@ -19,7 +19,7 @@ TEST_CASE("Add event-action definitions TC[19,1]", "[service][st19]") {
 	String<64> data = "123";
 	message.appendString(data);
 
-	Service::execute(message);
+	MessageParser::execute(message);
 	CHECK(eventActionService.eventActionDefinitionArray[0].empty == 0);
 	CHECK(eventActionService.eventActionDefinitionArray[0].applicationId == 0);
 	CHECK(eventActionService.eventActionDefinitionArray[0].eventDefinitionID == 2);
@@ -35,7 +35,7 @@ TEST_CASE("Add event-action definitions TC[19,1]", "[service][st19]") {
 	data = "456";
 	message2.appendString(data);
 
-	Service::execute(message2);
+	MessageParser::execute(message2);
 	CHECK(eventActionService.eventActionDefinitionArray[1].empty == 0);
 	CHECK(eventActionService.eventActionDefinitionArray[1].applicationId == 1);
 	CHECK(eventActionService.eventActionDefinitionArray[1].eventDefinitionID == 3);
@@ -52,31 +52,31 @@ TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 	message0.appendEnum16(0);
 	String<64> data = "0";
 	message0.appendString(data);
-	Service::execute(message0);
+	MessageParser::execute(message0);
 	Message message1(19, 1, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
 	data = "1";
 	message1.appendString(data);
-	Service::execute(message1);
+	MessageParser::execute(message1);
 	Message message2(19, 1, Message::TC, 0);
 	message2.appendEnum16(1);
 	message2.appendEnum16(2);
 	data = "2";
 	message2.appendString(data);
-	Service::execute(message2);
+	MessageParser::execute(message2);
 	Message message3(19, 1, Message::TC, 0);
 	message3.appendEnum16(1);
 	message3.appendEnum16(3);
 	data = "3";
 	message3.appendString(data);
-	Service::execute(message3);
+	MessageParser::execute(message3);
 	Message message4(19, 1, Message::TC, 0);
 	message4.appendEnum16(1);
 	message4.appendEnum16(4);
 	data = "4";
 	message4.appendString(data);
-	Service::execute(message4);
+	MessageParser::execute(message4);
 
 	Message message(19, 2, Message::TC, 0);
 	message.appendUint16(2);
@@ -84,7 +84,7 @@ TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 	message.appendEnum16(4);
 	message.appendEnum16(1);
 	message.appendEnum16(2);
-	Service::execute(message);
+	MessageParser::execute(message);
 
 	CHECK(eventActionService.eventActionDefinitionArray[0].empty == 0);
 	CHECK(eventActionService.eventActionDefinitionArray[0].applicationId == 1);
@@ -124,31 +124,31 @@ TEST_CASE("Delete all event-action definitions TC[19,3]", "[service][st19]") {
 	message0.appendEnum16(0);
 	String<64> data = "0";
 	message0.appendString(data);
-	Service::execute(message0);
+	MessageParser::execute(message0);
 	Message message1(19, 1, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
 	data = "1";
 	message1.appendString(data);
-	Service::execute(message1);
+	MessageParser::execute(message1);
 	Message message2(19, 1, Message::TC, 0);
 	message2.appendEnum16(1);
 	message2.appendEnum16(2);
 	data = "2";
 	message2.appendString(data);
-	Service::execute(message2);
+	MessageParser::execute(message2);
 	Message message3(19, 1, Message::TC, 0);
 	message3.appendEnum16(1);
 	message3.appendEnum16(3);
 	data = "3";
 	message3.appendString(data);
-	Service::execute(message3);
+	MessageParser::execute(message3);
 	Message message4(19, 1, Message::TC, 0);
 	message4.appendEnum16(1);
 	message4.appendEnum16(4);
 	data = "4";
 	message4.appendString(data);
-	Service::execute(message4);
+	MessageParser::execute(message4);
 
 	Message message(19, 3, Message::TC, 0);
 	eventActionService.deleteAllEventActionDefinitions(message);
@@ -167,20 +167,20 @@ TEST_CASE("Enable event-action definitions TC[19,4]", "[service][st19]") {
 	message0.appendEnum16(0);
 	String<64> data = "0";
 	message0.appendString(data);
-	Service::execute(message0);
+	MessageParser::execute(message0);
 	Message message1(19, 1, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
 	data = "00";
 	message1.appendString(data);
-	Service::execute(message1);
+	MessageParser::execute(message1);
 	Message message2(19, 4, Message::TC, 0);
 	message2.appendUint16(2);
 	message2.appendEnum16(1);
 	message2.appendEnum16(0);
 	message2.appendEnum16(1);
 	message2.appendEnum16(1);
-	Service::execute(message2);
+	MessageParser::execute(message2);
 	CHECK(eventActionService.eventActionDefinitionArray[0].enabled == 1);
 	CHECK(eventActionService.eventActionDefinitionArray[1].enabled == 1);
 
@@ -192,25 +192,25 @@ TEST_CASE("Disable event-action definitions TC[19,5]", "[service][st19]") {
 	message0.appendEnum16(0);
 	String<64> data = "0";
 	message0.appendString(data);
-	Service::execute(message0);
+	MessageParser::execute(message0);
 	Message message1(19, 1, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(0);
 	data = "00";
 	message1.appendString(data);
-	Service::execute(message1);
+	MessageParser::execute(message1);
 	Message message2(19, 5, Message::TC, 0);
 	message2.appendUint16(1);
 	message2.appendEnum16(1);
 	message2.appendEnum16(0);
-	Service::execute(message2);
+	MessageParser::execute(message2);
 	CHECK(eventActionService.eventActionDefinitionArray[0].enabled == 0);
 	CHECK(eventActionService.eventActionDefinitionArray[1].enabled == 0);
 }
 
 TEST_CASE("Request event-action definition status TC[19,6]", "[service][st19]") {
 	Message message(19, 6, Message::TC, 0);
-	Service::execute(message);
+	MessageParser::execute(message);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message report = ServiceTests::get(0);
@@ -223,18 +223,18 @@ TEST_CASE("Event-action status report TM[19,7]", "[service][st19]") {
 	message0.appendEnum16(0);
 	String<64> data = "0";
 	message0.appendString(data);
-	Service::execute(message0);
+	MessageParser::execute(message0);
 	Message message1(19, 1, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(2);
 	data = "2";
 	message1.appendString(data);
-	Service::execute(message1);
+	MessageParser::execute(message1);
 	Message message2(19, 5, Message::TC, 0);
 	message2.appendUint16(1);
 	message2.appendEnum16(1);
 	message2.appendEnum16(0);
-	Service::execute(message2);
+	MessageParser::execute(message2);
 	eventActionService.eventActionStatusReport();
 	REQUIRE(ServiceTests::hasOneMessage());
 
@@ -248,15 +248,15 @@ TEST_CASE("Event-action status report TM[19,7]", "[service][st19]") {
 	CHECK(report.readUint8() == 1);
 }
 
-TEST_CASE("Enable event-action function TC[19,8]", "[service][st19]") {
+TEST_CASE("Enable event-action function TC[19,8]", "[MessageParser][st19]") {
 	Message message(19, 8, Message::TC, 0);
-	Service::execute(message);
+	MessageParser::execute(message);
 	CHECK(eventActionService.getEventActionFunctionStatus() == true);
 }
 
 TEST_CASE("Disable event-action function TC[19,9]", "[service][st19]") {
 	Message message(19, 9, Message::TC, 0);
-	Service::execute(message);
+	MessageParser::execute(message);
 	CHECK(eventActionService.getEventActionFunctionStatus() == false);
 }
 
diff --git a/test/Services/EventReportService.cpp b/test/Services/EventReportService.cpp
index 2e3cfee0..d2892cd9 100644
--- a/test/Services/EventReportService.cpp
+++ b/test/Services/EventReportService.cpp
@@ -90,7 +90,7 @@ TEST_CASE("Enable Report Generation TC[5,5]", "[service][st05]") {
 	message.appendUint16(2);
 	message.appendEnum16(eventID[0]);
 	message.appendEnum16(eventID[1]);
-	Service::execute(message);
+	MessageParser::execute(message);
 	CHECK(eventReportService.getStateOfEvents()[2] == 1);
 	CHECK(eventReportService.getStateOfEvents()[4] == 1);
 }
@@ -102,7 +102,7 @@ TEST_CASE("Disable Report Generation TC[5,6]", "[service][st05]") {
 	message.appendUint16(2);
 	message.appendEnum16(eventID[0]);
 	message.appendEnum16(eventID[1]);
-	Service::execute(message);
+	MessageParser::execute(message);
 	CHECK(eventReportService.getStateOfEvents()[0] == 0);
 	CHECK(eventReportService.getStateOfEvents()[5] == 0);
 
@@ -114,7 +114,7 @@ TEST_CASE("Disable Report Generation TC[5,6]", "[service][st05]") {
 
 TEST_CASE("Request list of disabled events TC[5,7]", "[service][st05]") {
 	Message message(5, 7, Message::TC, 1);
-	Service::execute(message);
+	MessageParser::execute(message);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message report = ServiceTests::get(0);
@@ -130,7 +130,7 @@ TEST_CASE("List of Disabled Events Report TM[5,8]", "[service][st05]") {
 	message.appendEnum16(eventID[0]);
 	message.appendEnum16(eventID[1]);
 	// Disable 3rd and 6th
-	Service::execute(message);
+	MessageParser::execute(message);
 	eventReportService.listOfDisabledEventsReport();
 	REQUIRE(ServiceTests::hasOneMessage());
 
@@ -151,7 +151,7 @@ TEST_CASE("List of observables 6.5.6", "[service][st05]") {
 	Message message(5, 6, Message::TC, 1);
 	message.appendUint16(1);
 	message.appendEnum16(eventID[0]);
-	Service::execute(message);
+	MessageParser::execute(message);
 
 	const String<64> eventReportData = "HelloWorld";
 
diff --git a/test/Services/FunctionManagementService.cpp b/test/Services/FunctionManagementService.cpp
index 1b8ca1c9..235e1198 100644
--- a/test/Services/FunctionManagementService.cpp
+++ b/test/Services/FunctionManagementService.cpp
@@ -17,7 +17,7 @@ TEST_CASE("ST[08] - Call Tests") {
 		fms.include(String<FUNC_NAME_LENGTH>("test"), &test);
 		Message msg(8, 1, Message::TC, 1);
 		msg.appendString(String<FUNC_NAME_LENGTH>("t3st"));
-		Service::execute(msg);
+		MessageParser::execute(msg);
 		CHECK(ServiceTests::get(0).messageType == 4);
 		CHECK(ServiceTests::get(0).serviceType == 1);
 	}
@@ -29,7 +29,7 @@ TEST_CASE("ST[08] - Call Tests") {
 		msg.appendString(String<FUNC_NAME_LENGTH>("test"));
 		msg.appendString(String<65>
 		    ("eqrhjweghjhwqgthjkrghthjkdsfhgsdfhjsdjsfdhgkjdfsghfjdgkdfsgdfgsgd"));
-		Service::execute(msg);
+		MessageParser::execute(msg);
 		CHECK(ServiceTests::get(0).messageType == 4);
 		CHECK(ServiceTests::get(0).serviceType == 1);
 	}
diff --git a/test/Services/MemoryManagementService.cpp b/test/Services/MemoryManagementService.cpp
index 9176a55d..4861c6a7 100644
--- a/test/Services/MemoryManagementService.cpp
+++ b/test/Services/MemoryManagementService.cpp
@@ -23,7 +23,7 @@ TEST_CASE("TC[6,2]", "[service][st06]") {
 	receivedPacket.appendUint64(reinterpret_cast<uint64_t >(pStr + 2)); // Start address
 	receivedPacket.appendOctetString(String<1>(data)); // Append CRC
 	receivedPacket.appendBits(16, CRCHelper::calculateCRC(data, 1));
-	Service::execute(receivedPacket);
+	MessageParser::execute(receivedPacket);
 
 	CHECK(pStr[0] == 'h');
 	CHECK(pStr[1] == 'R');
@@ -50,7 +50,7 @@ TEST_CASE("TC[6,5]", "[service][st06]") {
 
 	receivedPacket.appendUint64(reinterpret_cast<uint64_t >(testString_3));
 	receivedPacket.appendUint16(sizeof(testString_3) / sizeof(testString_3[0]));
-	Service::execute(receivedPacket);
+	MessageParser::execute(receivedPacket);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
@@ -109,7 +109,7 @@ TEST_CASE("TC[6,9]", "[service][st06]") {
 
 	receivedPacket.appendUint64(reinterpret_cast<uint64_t >(testString_2));
 	receivedPacket.appendUint16(sizeof(testString_2) / sizeof(testString_2[0]));
-	Service::execute(receivedPacket);
+	MessageParser::execute(receivedPacket);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
diff --git a/test/Services/ParameterService.cpp b/test/Services/ParameterService.cpp
index 8f971c04..5ea20d52 100644
--- a/test/Services/ParameterService.cpp
+++ b/test/Services/ParameterService.cpp
@@ -14,7 +14,7 @@ TEST_CASE("Parameter Report Subservice") {
 		request.appendUint16(34672);  // faulty ID in this context
 		request.appendUint16(1);      // valid
 
-		Service::execute(request);
+		MessageParser::execute(request);
 		report = ServiceTests::get(0);
 		request.resetRead();
 
@@ -33,7 +33,7 @@ TEST_CASE("Parameter Report Subservice") {
 	SECTION("Wrong Message Type Handling Test") {
 		Message falseRequest(15, 3, Message::TM, 1);   // a totally wrong message
 
-		Service::execute(falseRequest);
+		MessageParser::execute(falseRequest);
 		Message errorNotif = ServiceTests::get(0);
 		CHECK(errorNotif.messageType == 4); // check for proper failed start of
 		// execution notification
@@ -68,19 +68,19 @@ TEST_CASE("Parameter Setting Subservice") {
 		// Since every reporting and setting is called with the same (sometimes faulty) parameters,
 		// and there are errors generated (as should be) it is important to catch and check for
 		// them in order to preserve the integrity of the test.
-		Service::execute(reportRequest);
+		MessageParser::execute(reportRequest);
 		Message errorNotif1 = ServiceTests::get(0);
 		CHECK(errorNotif1.messageType == 4);
 		CHECK(errorNotif1.serviceType == 1);
 
 		Message before = ServiceTests::get(1);
 
-		Service::execute(setRequest);
+		MessageParser::execute(setRequest);
 		Message errorNotif2 = ServiceTests::get(2);
 		CHECK(errorNotif2.messageType == 4);
 		CHECK(errorNotif2.serviceType == 1);
 
-		Service::execute(reportRequest);
+		MessageParser::execute(reportRequest);
 		Message errorNotif3 = ServiceTests::get(3);
 		CHECK(errorNotif3.messageType == 4);
 		CHECK(errorNotif3.serviceType == 1);
diff --git a/test/Services/TestService.cpp b/test/Services/TestService.cpp
index 6e5126da..b2a3ce68 100644
--- a/test/Services/TestService.cpp
+++ b/test/Services/TestService.cpp
@@ -7,7 +7,7 @@ TestService & testService = Services.testService;
 
 TEST_CASE("TM[17,1]", "[service][st17]") {
 	Message receivedPacket = Message(17, 1, Message::TC, 1);
-	Service::execute(receivedPacket);
+	MessageParser::execute(receivedPacket);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
@@ -19,7 +19,7 @@ TEST_CASE("TM[17,1]", "[service][st17]") {
 TEST_CASE("TM[17,3]", "[service][st17]") {
 	Message receivedPacket = Message(17, 3, Message::TC, 1);
 	receivedPacket.appendEnum16(40);
-	Service::execute(receivedPacket);
+	MessageParser::execute(receivedPacket);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
diff --git a/test/Services/TimeBasedSchedulingService.cpp b/test/Services/TimeBasedSchedulingService.cpp
index 11ae0e87..e6f5ec56 100644
--- a/test/Services/TimeBasedSchedulingService.cpp
+++ b/test/Services/TimeBasedSchedulingService.cpp
@@ -97,7 +97,7 @@ TEST_CASE("TC[11,1] Enable Schedule Execution", "[service][st11]") {
 	Services.reset();
 	Message receivedMessage(11, 1, Message::TC, 1);
 
-	Service::execute(receivedMessage);//timeService.enableScheduleExecution(receivedMessage);
+	MessageParser::execute(receivedMessage);//timeService.enableScheduleExecution(receivedMessage);
 	CHECK(unit_test::Tester::executionFunctionStatus(timeBasedService));
 }
 
@@ -105,7 +105,7 @@ TEST_CASE("TC[11,2] Disable Schedule Execution", "[service][st11]") {
 	Services.reset();
 	Message receivedMessage(11, 2, Message::TC, 1);
 
-	Service::execute(receivedMessage);//timeService.disableScheduleExecution(receivedMessage);
+	MessageParser::execute(receivedMessage);//timeService.disableScheduleExecution(receivedMessage);
 	CHECK(not unit_test::Tester::executionFunctionStatus(timeBasedService));
 }
 
@@ -128,7 +128,7 @@ TEST_CASE("TC[11,4] Activity Insertion", "[service][st11]") {
 		receivedMessage.appendUint16(1); // Total number of requests
 
 		receivedMessage.appendUint32(currentTime - 15564350);
-		Service::execute(receivedMessage);//timeService.insertActivities(receivedMessage);
+		MessageParser::execute(receivedMessage);//timeService.insertActivities(receivedMessage);
 
 		REQUIRE(ServiceTests::thrownError(ErrorHandler::InstructionExecutionStartError));
 	}
@@ -145,7 +145,7 @@ TEST_CASE("TC[11,15] Time shift all scheduled activities", "[service][st11]") {
 		receivedMessage.appendSint32(-timeShift);
 
 		CHECK(scheduledActivities.size() == 4);
-		Service::execute(receivedMessage);//timeService.timeShiftAllActivities(receivedMessage);
+		MessageParser::execute(receivedMessage);//timeService.timeShiftAllActivities(receivedMessage);
 
 		REQUIRE(scheduledActivities.at(0)->requestReleaseTime == currentTime + 1556435 - timeShift);
 		REQUIRE(scheduledActivities.at(1)->requestReleaseTime == currentTime + 1726435 - timeShift);
@@ -157,7 +157,7 @@ TEST_CASE("TC[11,15] Time shift all scheduled activities", "[service][st11]") {
 		receivedMessage.appendSint32(timeShift);
 
 		CHECK(scheduledActivities.size() == 4);
-		Service::execute(receivedMessage);//timeService.timeShiftAllActivities(receivedMessage);
+		MessageParser::execute(receivedMessage);//timeService.timeShiftAllActivities(receivedMessage);
 
 		REQUIRE(scheduledActivities.at(0)->requestReleaseTime == currentTime + 1556435 + timeShift);
 		REQUIRE(scheduledActivities.at(1)->requestReleaseTime == currentTime + 1726435 + timeShift);
@@ -169,7 +169,7 @@ TEST_CASE("TC[11,15] Time shift all scheduled activities", "[service][st11]") {
 		receivedMessage.appendSint32(-6789000); // Provide a huge time shift to cause an error
 
 		CHECK(scheduledActivities.size() == 4);
-		Service::execute(receivedMessage);//timeService.timeShiftAllActivities(receivedMessage);
+		MessageParser::execute(receivedMessage);//timeService.timeShiftAllActivities(receivedMessage);
 
 		REQUIRE(ServiceTests::thrownError(ErrorHandler::SubServiceExecutionStartError));
 	}
diff --git a/test/Services/TimeManagementService.cpp b/test/Services/TimeManagementService.cpp
index f8d0ba75..7055523b 100644
--- a/test/Services/TimeManagementService.cpp
+++ b/test/Services/TimeManagementService.cpp
@@ -33,6 +33,7 @@ TEST_CASE("TM[9,3]", "[service][st09]") {
 	message.appendHalfword(static_cast<uint16_t >(timeFormat >> 32));
 	message.appendWord(static_cast<uint32_t >(timeFormat));
 
+	MessageParser::execute(message);
 	TimeInfo = timeService.cdsTimeRequest(message);
 	CHECK(TimeInfo.year == 2020);
 	CHECK(TimeInfo.month == 4);
-- 
GitLab