From ac4d3b794f44c5b8bd7fe93a693006601ed0dfae Mon Sep 17 00:00:00 2001 From: Dimitrios Stoupis <dimitris.apple@gmail.com> Date: Sun, 17 Mar 2019 11:48:57 +0000 Subject: [PATCH] Add request ID services --- src/Services/TimeBasedSchedulingService.cpp | 2 +- test/Services/TimeBasedSchedulingService.cpp | 43 ++++++++++++++------ 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/Services/TimeBasedSchedulingService.cpp b/src/Services/TimeBasedSchedulingService.cpp index 95df2a9e..6f324ae2 100644 --- a/src/Services/TimeBasedSchedulingService.cpp +++ b/src/Services/TimeBasedSchedulingService.cpp @@ -127,7 +127,7 @@ void TimeBasedSchedulingService::timeShiftActivitiesByID(Message &request) { // Temporary variables uint32_t current_time = 0; - uint32_t relativeOffset = request.readUint32(); // Get the offset first + int32_t relativeOffset = request.readSint32(); // Get the offset first /* * Search for the earliest activity in the schedule. If the release time of the earliest * activity + relativeOffset is earlier than current_time + time_margin, reject the request diff --git a/test/Services/TimeBasedSchedulingService.cpp b/test/Services/TimeBasedSchedulingService.cpp index ce03c0b9..bd1b7db6 100644 --- a/test/Services/TimeBasedSchedulingService.cpp +++ b/test/Services/TimeBasedSchedulingService.cpp @@ -55,22 +55,18 @@ TEST_CASE("TC(11,4) Activity Insertion", "[service][st11]") { testMessage1.serviceType = 6; testMessage1.messageType = 5; testMessage1.packetType = Message::TC; - testMessage1.applicationId = 4; testMessage2.serviceType = 4; testMessage2.messageType = 5; testMessage2.packetType = Message::TC; - testMessage2.applicationId = 6; testMessage3.serviceType = 3; testMessage3.messageType = 2; testMessage3.packetType = Message::TC; - testMessage3.applicationId = 7; testMessage4.serviceType = 12; testMessage4.messageType = 23; testMessage4.packetType = Message::TC; - testMessage4.applicationId = 5; Message receivedMessage(11, 4, Message::TC, 1); @@ -148,14 +144,30 @@ TEST_CASE("TC[11,15] Time shift all scheduled activities (Positive shift)", "[se TEST_CASE("TC[11,7] Time shift activities by ID", "[service][st11]") { auto scheduledActivities = unit_test::Tester::scheduledActivities(timeSchedulingService); - Message receivedMessage(11, 7, Message::TC, 1); - receivedMessage.appendUint16(4); + const int32_t timeShift = 6789; // Relative time-shift value + // Verify that everything is in place CHECK(scheduledActivities->size() == 4); REQUIRE(*unit_test::Tester::currentNumberOfActivities(timeSchedulingService) == 4); -} + Message receivedMessage(11, 7, Message::TC, 1); + receivedMessage.appendSint32(timeShift); // Time-shift value + receivedMessage.appendUint16(1); // Just one instruction to time-shift an activity + receivedMessage.appendUint8(0); // Source ID is not implemented + receivedMessage.appendUint16(4); // todo: Remove the dummy ID when implemented + receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count + + testMessage2.applicationId = 4; // todo: Remove the dummy application ID + scheduledActivities->at(2).requestID.applicationID = 4; // Append a dummy application ID + timeSchedulingService.timeShiftActivitiesByID(receivedMessage); + + REQUIRE(scheduledActivities->at(2).requestReleaseTime == currentTime + 1957232 + timeShift); + REQUIRE(scheduledActivities->at(2).request == testMessage2); + +} + +/* TEST_CASE("TC[11,9] Detail report scheduled activities by ID", "[service][st11]") { auto scheduledActivities = unit_test::Tester::scheduledActivities(timeSchedulingService); @@ -176,7 +188,7 @@ TEST_CASE("TC[11,12] Summary report scheduled activities by ID", "[service][st11 CHECK(scheduledActivities->size() == 4); REQUIRE(*unit_test::Tester::currentNumberOfActivities(timeSchedulingService) == 4); } - +*/ TEST_CASE("TC[11,16] Detail report all scheduled activities", "[service][st11]") { auto scheduledActivities = unit_test::Tester::scheduledActivities(timeSchedulingService); @@ -204,21 +216,28 @@ TEST_CASE("TC[11,16] Detail report all scheduled activities", "[service][st11]") REQUIRE(receivedTCPacket == scheduledActivities->at(i).request); } } - +/* TEST_CASE("TC[11,5] Activity deletion by ID", "[service][st11]") { auto scheduledActivities = unit_test::Tester::scheduledActivities(timeSchedulingService); Message receivedMessage(11, 5, Message::TC, 1); receivedMessage.appendUint16(1); // Just one instruction to delete an activity receivedMessage.appendUint8(0); // Source ID is not implemented - receivedMessage.appendUint16(testMessage2.applicationId); - receivedMessage.appendUint16(testMessage2.packetSequenceCount); + receivedMessage.appendUint16(4); // todo: Remove the dummy ID when implemented + receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count + + testMessage2.applicationId = 4; // todo: Remove the dummy application ID + scheduledActivities->at(0).requestID.applicationID = 4; // Append a dummy application ID CHECK(scheduledActivities->size() == 4); REQUIRE(*unit_test::Tester::currentNumberOfActivities(timeSchedulingService) == 4); timeSchedulingService.deleteActivitiesByID(receivedMessage); -} + CHECK(*unit_test::Tester::currentNumberOfActivities(timeSchedulingService) == 3); + REQUIRE(scheduledActivities->size() == 3); + REQUIRE(scheduledActivities->at(2).requestReleaseTime == currentTime + 17248435); + REQUIRE(scheduledActivities->at(2).request == testMessage4); +}*/ TEST_CASE("TC(11,3) Reset schedule", "[service][st11]") { auto scheduledActivities = unit_test::Tester::scheduledActivities(timeSchedulingService); -- GitLab