From ef61832bc4acd691ce2d70ba197985b0c9fcee92 Mon Sep 17 00:00:00 2001 From: Dimitrios Stoupis <dimitris.apple@gmail.com> Date: Sun, 17 Mar 2019 21:12:38 +0000 Subject: [PATCH] Almost all test cases are complete --- test/Services/TimeBasedSchedulingService.cpp | 142 +++++++++++++++---- 1 file changed, 111 insertions(+), 31 deletions(-) diff --git a/test/Services/TimeBasedSchedulingService.cpp b/test/Services/TimeBasedSchedulingService.cpp index bd1b7db6..c7529fad 100644 --- a/test/Services/TimeBasedSchedulingService.cpp +++ b/test/Services/TimeBasedSchedulingService.cpp @@ -55,10 +55,12 @@ TEST_CASE("TC(11,4) Activity Insertion", "[service][st11]") { testMessage1.serviceType = 6; testMessage1.messageType = 5; testMessage1.packetType = Message::TC; + testMessage1.applicationId = 8; // todo: Remove the dummy application ID testMessage2.serviceType = 4; testMessage2.messageType = 5; testMessage2.packetType = Message::TC; + testMessage2.applicationId = 4; // todo: Remove the dummy application ID testMessage3.serviceType = 3; testMessage3.messageType = 2; @@ -68,7 +70,6 @@ TEST_CASE("TC(11,4) Activity Insertion", "[service][st11]") { testMessage4.messageType = 23; testMessage4.packetType = Message::TC; - Message receivedMessage(11, 4, Message::TC, 1); receivedMessage.appendUint16(4); // Total number of requests @@ -106,6 +107,9 @@ TEST_CASE("TC(11,4) Activity Insertion", "[service][st11]") { REQUIRE(scheduledActivities->at(1).request == testMessage3); REQUIRE(scheduledActivities->at(2).request == testMessage2); REQUIRE(scheduledActivities->at(3).request == testMessage4); + + scheduledActivities->at(0).requestID.applicationID = 8; // Append a dummy application ID + scheduledActivities->at(2).requestID.applicationID = 4; // Append a dummy application ID } TEST_CASE("TC[11,15] Time shift all scheduled activities (Positive shift)", "[service][st11]") { @@ -146,49 +150,128 @@ TEST_CASE("TC[11,7] Time shift activities by ID", "[service][st11]") { auto scheduledActivities = unit_test::Tester::scheduledActivities(timeSchedulingService); 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); + SECTION("Positive Shift") { + // 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 + 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(testMessage2.applicationId); // todo: Remove the dummy app ID + 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); + timeSchedulingService.timeShiftActivitiesByID(receivedMessage); - REQUIRE(scheduledActivities->at(2).requestReleaseTime == currentTime + 1957232 + timeShift); - REQUIRE(scheduledActivities->at(2).request == testMessage2); + REQUIRE(scheduledActivities->at(2).requestReleaseTime == currentTime + 1957232 + timeShift); + REQUIRE(scheduledActivities->at(2).request == testMessage2); + } + + SECTION("Negative Shift") { + // 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(testMessage2.applicationId); // todo: Remove the dummy app ID + receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count + + + timeSchedulingService.timeShiftActivitiesByID(receivedMessage); + REQUIRE(scheduledActivities->at(2).requestReleaseTime == currentTime + 1957232); + 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); + Message receivedMessage(11, 9, Message::TC, 1); - receivedMessage.appendUint16(4); + receivedMessage.appendUint16(2); // Two instructions in the request + receivedMessage.appendUint8(0); // Source ID is not implemented + receivedMessage.appendUint16(testMessage2.applicationId); // todo: Remove the dummy app ID + receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count - CHECK(scheduledActivities->size() == 4); - REQUIRE(*unit_test::Tester::currentNumberOfActivities(timeSchedulingService) == 4); + receivedMessage.appendUint8(0); // Source ID is not implemented + receivedMessage.appendUint16(testMessage1.applicationId); // todo: Remove the dummy app ID + receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count + + timeSchedulingService.detailReportActivitiesByID(receivedMessage); + REQUIRE(ServiceTests::hasOneMessage()); + Message response = ServiceTests::get(0); + CHECK(response.serviceType == 11); + CHECK(response.messageType == 10); + + uint16_t iterationCount = response.readUint16(); + for (uint16_t i = 0; i < iterationCount; i++) { + uint32_t receivedReleaseTime = response.readUint32(); + + Message receivedTCPacket; + uint8_t receivedDataStr[ECSS_TC_REQUEST_STRING_SIZE]; + response.readString(receivedDataStr, ECSS_TC_REQUEST_STRING_SIZE); + receivedTCPacket = msgParser.parseRequestTC(receivedDataStr); + + if (i == 0) { + REQUIRE(receivedReleaseTime == scheduledActivities->at(0).requestReleaseTime); + REQUIRE(receivedTCPacket == scheduledActivities->at(0).request); + } else { + REQUIRE(receivedReleaseTime == scheduledActivities->at(2).requestReleaseTime); + REQUIRE(receivedTCPacket == scheduledActivities->at(2).request); + } + } } TEST_CASE("TC[11,12] Summary report scheduled activities by ID", "[service][st11]") { auto scheduledActivities = unit_test::Tester::scheduledActivities(timeSchedulingService); + Message receivedMessage(11, 12, Message::TC, 1); - receivedMessage.appendUint16(4); + receivedMessage.appendUint16(2); // Two instructions in the request + receivedMessage.appendUint8(0); // Source ID is not implemented + receivedMessage.appendUint16(testMessage2.applicationId); // todo: Remove the dummy app ID + receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count - CHECK(scheduledActivities->size() == 4); - REQUIRE(*unit_test::Tester::currentNumberOfActivities(timeSchedulingService) == 4); + receivedMessage.appendUint8(0); // Source ID is not implemented + receivedMessage.appendUint16(testMessage1.applicationId); // todo: Remove the dummy app ID + receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count + + timeSchedulingService.summaryReportActivitiesByID(receivedMessage); + REQUIRE(ServiceTests::hasOneMessage()); + + Message response = ServiceTests::get(0); + CHECK(response.serviceType == 11); + CHECK(response.messageType == 13); + + uint16_t iterationCount = response.readUint16(); + for (uint16_t i = 0; i < iterationCount; i++) { + uint32_t receivedReleaseTime = response.readUint32(); + uint8_t receivedSourceID = response.readUint8(); + uint16_t receivedApplicationID = response.readUint16(); + uint16_t receivedSequenceCount = response.readUint16(); + + if (i == 0) { + REQUIRE(receivedReleaseTime == scheduledActivities->at(0).requestReleaseTime); + REQUIRE(receivedSourceID == scheduledActivities->at(0).requestID.sourceID); + REQUIRE(receivedApplicationID == scheduledActivities->at(0).requestID.applicationID); + REQUIRE(receivedSequenceCount == scheduledActivities->at(0).requestID.sequenceCount); + } else { + REQUIRE(receivedReleaseTime == scheduledActivities->at(2).requestReleaseTime); + REQUIRE(receivedSourceID == scheduledActivities->at(2).requestID.sourceID); + REQUIRE(receivedApplicationID == scheduledActivities->at(2).requestID.applicationID); + REQUIRE(receivedSequenceCount == scheduledActivities->at(2).requestID.sequenceCount); + } + } } -*/ + TEST_CASE("TC[11,16] Detail report all scheduled activities", "[service][st11]") { auto scheduledActivities = unit_test::Tester::scheduledActivities(timeSchedulingService); @@ -208,8 +291,8 @@ TEST_CASE("TC[11,16] Detail report all scheduled activities", "[service][st11]") uint32_t receivedReleaseTime = response.readUint32(); Message receivedTCPacket; - uint8_t receivedDataStr[ECSS_EVENT_SERVICE_STRING_SIZE]; - response.readString(receivedDataStr, ECSS_EVENT_SERVICE_STRING_SIZE); + uint8_t receivedDataStr[ECSS_TC_REQUEST_STRING_SIZE]; + response.readString(receivedDataStr, ECSS_TC_REQUEST_STRING_SIZE); receivedTCPacket = msgParser.parseRequestTC(receivedDataStr); REQUIRE(receivedReleaseTime == scheduledActivities->at(i).requestReleaseTime); @@ -217,7 +300,7 @@ TEST_CASE("TC[11,16] Detail report all scheduled activities", "[service][st11]") } } /* -TEST_CASE("TC[11,5] Activity deletion by ID", "[service][st11]") { +TEST_CASE("TC[12,5] Activity deletion by ID", "[service][st11]") { auto scheduledActivities = unit_test::Tester::scheduledActivities(timeSchedulingService); Message receivedMessage(11, 5, Message::TC, 1); @@ -226,9 +309,6 @@ TEST_CASE("TC[11,5] Activity deletion by ID", "[service][st11]") { 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); @@ -237,8 +317,8 @@ TEST_CASE("TC[11,5] Activity deletion by ID", "[service][st11]") { 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