Skip to content

Commit

Permalink
can perform endtoend delay calculations
Browse files Browse the repository at this point in the history
  • Loading branch information
vovatrykoz committed Nov 13, 2024
1 parent 672d9df commit 4fa2026
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 3 deletions.
19 changes: 17 additions & 2 deletions source/TimedPath.cpp
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
#include "TimedPath.h"

void TimedPath::popTaskInstance() {
if(this->tasks.empty()) {
if (this->tasks.empty()) {
return;
}

this->tasks.pop_back();
}

int TimedPath::endToEndDelay() const { return 0; }
int TimedPath::endToEndDelay() const {
if (this->tasks.empty()) {
return 0;
}

int size = this->tasks.size();
if (size == 1) {
return this->tasks[0].baseTask.wcet;
}

const TaskInstance& lastTaskInstance = this->tasks[size - 1];
const TaskInstance& firstTaskInstance = this->tasks[0];

return lastTaskInstance.activationTime + lastTaskInstance.baseTask.wcet -
firstTaskInstance.activationTime;
}
48 changes: 47 additions & 1 deletion tests/TimedPathTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ TEST(TimedPath, CanAppendTaskToPath) {
TimedPath tp;
tp.appendTaskInstance(taskInstance);

std::vector<TaskInstance> expected = { taskInstance };
std::vector<TaskInstance> expected = {taskInstance};
std::vector<TaskInstance> actual = tp.toVector();

EXPECT_EQ(expected, actual);
Expand All @@ -19,10 +19,56 @@ TEST(TimedPath, CanPopTaskFromPath) {
TaskInstance taskInstance(task, 10);

TimedPath tp;
tp.appendTaskInstance(taskInstance);
tp.popTaskInstance();

std::vector<TaskInstance> expected;
std::vector<TaskInstance> actual = tp.toVector();

EXPECT_EQ(expected, actual);
}

TEST(TimedPath, ReturnsZeroWhenCalculatingEndToEndDelayForEmptyTaskPath) {
TimedPath tp;

int expected = 0;
int actual = tp.endToEndDelay();

EXPECT_EQ(expected, actual);
}

TEST(TimedPath, ReturnsWcetWhenCalculatingEndToEndDelayForTaskPathWithOneTask) {
Task t1(40, 4, 1);
TaskInstance t1Instance(t1, 4);

TimedPath tp;
tp.appendTaskInstance(t1Instance);

int expected = t1.wcet;
int actual = tp.endToEndDelay();

EXPECT_EQ(expected, actual);
}

TEST(TimedPath, CanCalculateEndToEndDelayForTaskPath) {
Task t1(40, 4, 1);
Task t2(10, 3, 1);
Task t3(30, 2, 1);
Task t4(20, 1, 1);

TaskInstance t1Instance(t1, 4);
TaskInstance t2Instance(t2, 11);
TaskInstance t3Instance(t3, 15);
TaskInstance t4Instance(t4, 22);

TimedPath tp;
tp.appendTaskInstance(t1Instance);
tp.appendTaskInstance(t2Instance);
tp.appendTaskInstance(t3Instance);
tp.appendTaskInstance(t4Instance);

int expected = 19;
int actual = tp.endToEndDelay();

EXPECT_EQ(expected, actual);
}

0 comments on commit 4fa2026

Please sign in to comment.