Skip to content

Commit

Permalink
refactor task intance to contain a task struct inside
Browse files Browse the repository at this point in the history
  • Loading branch information
vovatrykoz committed Nov 13, 2024
1 parent 2682a7d commit 9e6ce43
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 15 deletions.
5 changes: 3 additions & 2 deletions include/Task.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@ struct Task {
};

struct TaskInstance {
Task baseTask;
int activationTime;
int wcet;

TaskInstance(int activationTime, int wcet) : activationTime(activationTime), wcet(wcet) {}
TaskInstance(const Task& baseTask, int activationTime)
: baseTask(baseTask), activationTime(activationTime) {}
};

#endif
2 changes: 1 addition & 1 deletion source/MathFramework.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ bool att(const TaskInstance& writerTaskInstance,
bool crit(const TaskInstance& writerTaskInstance,
const TaskInstance& readerTaskInstance) {
int writerTaskTerminationTime =
writerTaskInstance.activationTime + writerTaskInstance.wcet;
writerTaskInstance.activationTime + writerTaskInstance.baseTask.wcet;

if (readerTaskInstance.activationTime < writerTaskTerminationTime) {
return true;
Expand Down
36 changes: 24 additions & 12 deletions tests/MathFrameworkTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,53 @@
#include <gtest/gtest.h>

TEST(MathFramework, CanDetectTimeTravel) {
const TaskInstance writerTask(10, 5);
const TaskInstance readerTask(5, 5);
Task writerTask(10, 5);
Task readerTask(5, 5);

TaskInstance writerTaskInstance(writerTask, 10);
TaskInstance readerTaskInstance(readerTask, 5);

bool expected = true;
bool actual = att(writerTask, readerTask);
bool actual = att(writerTaskInstance, readerTaskInstance);

EXPECT_EQ(expected, actual);
}

TEST(MathFramework, CanDetectWhenThereIsNoTimeTravel) {
const TaskInstance writerTask(5, 5);
const TaskInstance readerTask(10, 5);
Task writerTask(10, 5);
Task readerTask(5, 5);

TaskInstance writerTaskInstance(writerTask, 5);
TaskInstance readerTaskInstance(readerTask, 10);

bool expected = false;
bool actual = att(writerTask, readerTask);
bool actual = att(writerTaskInstance, readerTaskInstance);

EXPECT_EQ(expected, actual);
}

TEST(MathFramework, CritFunctionCanDetectExecutionOverlap) {
const TaskInstance writerTask(10, 5);
const TaskInstance readerTask(12, 5);
Task writerTask(10, 5);
Task readerTask(5, 5);

TaskInstance writerTaskInstance(writerTask, 10);
TaskInstance readerTaskInstance(readerTask, 12);

bool expected = true;
bool actual = crit(writerTask, readerTask);
bool actual = crit(writerTaskInstance, readerTaskInstance);

EXPECT_EQ(expected, actual);
}

TEST(MathFramework, CritFunctionCanDetectWhenThereIsNoExecutionOverlap) {
const TaskInstance writerTask(10, 5);
const TaskInstance readerTask(16, 5);
Task writerTask(10, 5);
Task readerTask(5, 5);

TaskInstance writerTaskInstance(writerTask, 10);
TaskInstance readerTaskInstance(readerTask, 16);

bool expected = false;
bool actual = crit(writerTask, readerTask);
bool actual = crit(writerTaskInstance, readerTaskInstance);

EXPECT_EQ(expected, actual);
}

0 comments on commit 9e6ce43

Please sign in to comment.