Exemplo n.º 1
0
    def test_local_resources_msrp2(self):
        self.rsi1 = cpp.ResourceSharingInfo(7)

        self.rsi1.add_task(100, 100, 0, 0)
        self.rsi1.add_request(0, 1, 77)

        self.rsi1.add_task(50, 50, 0, 1)
        self.rsi1.add_request(0, 1, 6)

        self.rsi1.add_task(10, 10, 0, 2)
        self.rsi1.add_request(0, 1, 5)

        self.rsi1.add_task(10, 10, 1, 3)
        self.rsi1.add_request(0, 1, 7)

        self.rsi1.add_task(20, 20, 2, 4)
        self.rsi1.add_request(0, 4, 1)

        self.rsi1.add_task(30, 30, 2, 5)
        self.rsi1.add_request(0, 1, 7)
        self.rsi1.add_request(99, 1, 1)

        self.rsi1.add_task(100, 100, 2, 6)
        self.rsi1.add_request(99, 100, 123456)
        res = cpp.msrp_bounds_holistic(self.rsi1)
        self.assertEqual(7 + 7 + 77, res.get_arrival_blocking(4))
        self.assertEqual(3 * 7 + 2 * 77 + 2 * 6, res.get_remote_blocking(4))
        self.assertEqual(123456, res.get_arrival_blocking(5))
        self.assertEqual(123456 + 7 + 77, res.get_blocking_term(5))
        self.assertEqual(7 + 77, res.get_remote_blocking(5))
        self.assertEqual(0, res.get_blocking_term(6))
        self.assertEqual(0, res.get_arrival_blocking(6))
Exemplo n.º 2
0
    def test_priority_ceiling(self):
        self.rsi = cpp.ResourceSharingInfo(4)

        self.rsi.add_task(10, 10, 2, 100)
        self.rsi.add_request(0, 1, 3)

        self.rsi.add_task(25, 25, 3, 200)
        self.rsi.add_request(0, 1, 5)

        self.rsi.add_task(50, 50, 4, 300)
        self.rsi.add_request(1, 1, 7)

        self.rsi.add_task(100, 100, 1, 400)
        self.rsi.add_request(1, 1, 9)

        self.loc = cpp.ResourceLocality()
        self.loc.assign_resource(0, 1)
        self.loc.assign_resource(1, 1)

        res = cpp.dpcp_bounds(self.rsi, self.loc)

        self.assertEqual(1, res.get_remote_count(0))
        self.assertEqual(5, res.get_remote_blocking(0))

        self.assertEqual(4, res.get_remote_count(1))
        self.assertEqual(4 * 3, res.get_remote_blocking(1))

        self.assertEqual(6 + 3 + 1, res.get_remote_count(2))
        self.assertEqual(6 * 3 + 3 * 5 + 1 * 9, res.get_remote_blocking(2))

        self.assertEqual(0, res.get_remote_count(3))
        self.assertEqual(0, res.get_remote_blocking(3))

        self.assertEqual(11 + 5 + 3, res.get_local_count(3))
        self.assertEqual(11 * 3 + 5 * 5 + 3 * 7, res.get_local_blocking(3))
Exemplo n.º 3
0
    def setUp(self):
        self.rsi = cpp.ResourceSharingInfo(16)

        idx = 0
        for cluster, length in zip(range(4), [1, 3, 5, 7]):
            for _ in range(4):
                self.rsi.add_task(100, 100, cluster, idx)
                self.rsi.add_request(0, 1, length)
                idx += 1

        self.rsi_rw = cpp.ResourceSharingInfo(16)

        idx = 0
        for cluster, length in zip(range(4), [1, 3, 5, 7]):
            for _ in range(4):
                self.rsi_rw.add_task(100, 100, cluster, idx)
                self.rsi_rw.add_request_rw(0, 1, length,
                                           cpp.READ if cluster > 0 else cpp.WRITE)
                idx += 1
Exemplo n.º 4
0
def get_cpp_model(all_tasks, use_task_period=False):
    rsi = cpp.ResourceSharingInfo(len(all_tasks))
    for t in all_tasks:
        rsi.add_task(t.period,
                     t.period if use_task_period else t.response_time,
                     t.partition, t.locking_prio)
        for req in t.resmodel:
            req = t.resmodel[req]
            rsi.add_request_rw(req.res_id, req.max_requests, req.max_length,
                               cpp.WRITE)
    return rsi
Exemplo n.º 5
0
def get_cpp_model(all_tasks, use_task_period=False):
    rsi = cpp.ResourceSharingInfo(len(all_tasks))
    for t in all_tasks:
        rsi.add_task(t.period,
                     t.period if use_task_period else t.response_time,
                     t.partition,
                     t.preemption_level, # mapped to fixed priorities in the C++ code
                     t.cost,
                     t.deadline)
        for req in t.resmodel:
            req = t.resmodel[req]
            if req.max_requests > 0:
                rsi.add_request(req.res_id, req.max_requests, req.max_length, req.priority)
    return rsi
Exemplo n.º 6
0
    def setUp(self):
        self.rsi = cpp.ResourceSharingInfo(4)

        self.rsi.add_task(10, 10, 2, 100)
        self.rsi.add_request(0, 1, 3)

        self.rsi.add_task(25, 25, 3, 200)
        self.rsi.add_request(0, 1, 5)

        self.rsi.add_task(50, 50, 4, 300)
        self.rsi.add_request(0, 1, 7)

        self.rsi.add_task(100, 100, 1, 400)

        self.loc = cpp.ResourceLocality()
        self.loc.assign_resource(0, 1)
Exemplo n.º 7
0
def get_cpp_model_rw(all_tasks, use_task_period=False):
    rsi = cpp.ResourceSharingInfo(len(all_tasks))
    for t in all_tasks:
        rsi.add_task(t.period,
                     t.period if use_task_period else t.response_time,
                     t.partition, t.id, t.cost)
        for req in t.resmodel:
            req = t.resmodel[req]
            if req.max_writes > 0:
                rsi.add_request_rw(req.res_id, req.max_writes,
                                   req.max_write_length, cpp.WRITE,
                                   t.locking_prio)
            if req.max_reads > 0:
                rsi.add_request_rw(req.res_id, req.max_reads,
                                   req.max_read_length, cpp.READ,
                                   t.locking_prio)
    return rsi
Exemplo n.º 8
0
    def setUp(self):
        self.rsi1 = cpp.ResourceSharingInfo(6)

        self.rsi1.add_task(100, 100, 0, 0)
        self.rsi1.add_request(0, 1, 77)

        self.rsi1.add_task(50, 50, 0, 1)
        self.rsi1.add_request(0, 1, 6)

        self.rsi1.add_task(10, 10, 0, 2)
        self.rsi1.add_request(0, 1, 5)

        self.rsi1.add_task(10, 10, 1, 3)
        self.rsi1.add_request(0, 1, 7)

        self.rsi1.add_task(20, 20, 2, 4)
        self.rsi1.add_request(0, 4, 1)

        self.rsi1.add_task(30, 30, 2, 5)
        self.rsi1.add_request(0, 1, 7)