Scheduler
processTest.cpp
Go to the documentation of this file.
1 
10 #include <gtest/gtest.h>
11 #include <scheduler/process.h>
12 #include <utils/randomGenerator.h>
13 
14 using namespace Scheduler;
15 
16 TEST(ProcessTest, createProcess)
17 {
19  auto process = Process::createProcess(1.0, 1.0);
20  ASSERT_NE(process, nullptr);
21  EXPECT_FALSE(process->isRealTime());
22 
23 }
24 
25 TEST(ProcessTest, priority)
26 {
28  auto process = Process::createProcess(1.0,1.0);
29  process->setPriority(5);
30  EXPECT_EQ(process->getPriority(), 5);
31 }
32 
33 TEST(ProcessTest, createRealTimeTask)
34 {
36  double wcet = 10.0;
37  double period = 30.0;
38  double deadline = 28;
39  int pid = 4;
40  int priority = 1;
41  double bcet = wcet;
42  auto process = Process::createRealTimeTask(wcet, period, deadline, pid, priority, bcet);
43  ASSERT_NE(process, nullptr);
44  EXPECT_TRUE(process->isRealTime());
45  EXPECT_EQ(process->getPid(), pid);
46  EXPECT_DOUBLE_EQ(process->getPeriod(), period);
47  EXPECT_DOUBLE_EQ(process->getDeadline(), deadline);
48  EXPECT_EQ(process->getJobNumber(), (unsigned)0);
49  EXPECT_DOUBLE_EQ(process->getWcet(), wcet);
50  process->incrementJobNumber();
51  EXPECT_EQ(process->getJobNumber(), (unsigned)1);
52 }
53 
54 TEST(ProcessTest, createNextJob)
55 {
57  double wcet = 10.0;
58  double period = 30.0;
59  double deadline = 28;
60  int pid = 4;
61  int priority = 1;
62  double bcet = wcet;
63  auto process1 = Process::createRealTimeTask(wcet, period, deadline, pid, priority, bcet);
64  auto process2 = Process::createNextJob(*process1);
65  ASSERT_NE(process2, nullptr);
66  EXPECT_TRUE(process2->isRealTime());
67  EXPECT_EQ(process2->getPid(), pid);
68  EXPECT_DOUBLE_EQ(process2->getPeriod(), period);
69  EXPECT_DOUBLE_EQ(process2->getDeadline(), deadline);
70  EXPECT_DOUBLE_EQ(process2->getWcet(), wcet);
71  EXPECT_EQ(process2->getJobNumber(), (unsigned)1);
72 }
73 
74 TEST(ProcessTest, getNewPid)
75 {
77  auto pid1 = Process::getNewPid();
78  auto pid2 = Process::getNewPid();
79  EXPECT_EQ(pid2, pid1+1);
80 }
81 
82 TEST(ProcessTest, DISABLED_randomGenerator)
83 {
85  double wcet = 10.0;
86  double period = 30.0;
87  double deadline = 28;
88  int pid = 4;
89  int priority = 1;
90  double bcet = wcet;
91  auto process = Process::createRealTimeTask(wcet, period, deadline, pid, priority, bcet);
92  ASSERT_NE(process, nullptr);
93 }
94 
95 TEST(ProcessTest, manageAow)
96 {
98  double wcet = 10.0;
99  double period = 30.0;
100  double deadline = 28;
101  int pid = 4;
102  int priority = 1;
103  double bcet = wcet;
104  auto process = Process::createRealTimeTask(wcet, period, deadline, pid, priority, bcet);
105  ASSERT_NE(process, nullptr);
106  EXPECT_DOUBLE_EQ(process->getCurrentCpuAow(), wcet);
107  process->advanceBurst();//TODO poor design
108  process->updateCurrentAow(8.5);
109  EXPECT_DOUBLE_EQ(process->getCurrentCpuAow(), 8.5);
110 }
111 
112 TEST(ProcessTest, deadlineTime)
113 {
115  double wcet = 10.0;
116  double period = 30.0;
117  double deadline = 28;
118  int pid = 4;
119  int priority = 1;
120  double bcet = wcet;
121  auto process = Process::createRealTimeTask(wcet, period, deadline, pid, priority, bcet);
122  ASSERT_NE(process, nullptr);
123 
124  process->setDeadlineTimeFromStartTime(1.0);
125  EXPECT_DOUBLE_EQ(process->getDeadline(), deadline);
126  EXPECT_DOUBLE_EQ(process->getDeadlineTime(), deadline + 1.0);
127 }
128 
129 
130 
131 
132 
133 
134 
135 
136 
137 
138 
static std::shared_ptr< Process > createRealTimeTask(double wcet, double T, double dl, int pid, int priority=0, double bcet=0.0)
creates a real time task
Definition: process.cpp:67
static void setRandomGenerator(Utils::RandomGenerator *gen)
specify what random generator to use for interactive task length
Definition: process.cpp:99
static std::shared_ptr< Process > createProcess(double cpuLambda, double ioLambda)
creates an "interactive" process
Definition: process.cpp:52
static int getNewPid()
returns new process identifier. The value returned gets incremented at each call
Definition: process.cpp:88
TEST(ProcessTest, createProcess)
Definition: processTest.cpp:16
static std::shared_ptr< Process > createNextJob(const Process &task)
create the next job for a task
Definition: process.cpp:31