def test_insert_sends(): jobson = {1: 'a', 2: 'b', 3: 'a'} succ = {1: (3, 2)} aorder = [Event(1, 0, 2), Event(3, 3, 5)] result = insert_sends(aorder, jobson, succ) assert result[0] == aorder[0] assert result[-1] == aorder[-1] assert result[1].job == send('a', 'b', 1, 2) assert jobson[send('a', 'b', 1, 2)] == 'a' assert insert_sends([], jobson, succ) == []
def test_insert_recvs(): jobson = {1: 'a', 2: 'b', 3: 'a'} prec = {3: (1, 2)} aorder = [Event(1, 0, 2), Event(3, 3, 5)] result = insert_recvs(aorder, jobson, prec) assert result[0] == aorder[0] assert result[-1] == aorder[-1] assert result[1].job == recv('b', 'a', 2, 3) assert jobson[recv('b', 'a', 2, 3)] == 'a' assert insert_recvs([], jobson, prec) == []
def test_insert_sendrecvs(): prec = {3: (1, 2), 2: (1, )} succ = reverse_dict(prec) jobson = {1: 'a', 2: 'b', 3: 'a'} orders = {'a': [Event(1, 0, 1), Event(3, 4, 8)], 'b': [Event(2, 2, 3)]} neworders, newjobson = insert_sendrecvs(orders, jobson, succ, send, recv) print(neworders) print(newjobson) assert Event(send('a', 'b', 1, 2), 1, 1) in neworders['a'] assert Event(recv('a', 'b', 1, 2), 2, 2) in neworders['b'] assert all(e in neworders[agent] for agent in orders for e in orders[agent])
def test_earliest_finish_time(): orders = {'a': [Event(2, 0, 3)], 'b': []} jobson = {2: 'a'} prec = {3: (2, )} assert start_time(3, orders, jobson, prec, commcost, compcost, 'a') == 3 assert start_time(3, orders, jobson, prec, commcost, compcost, 'b') == 3 + 3
def test_schedule(): orders, jobson = schedule(dag, 'abc', compcost, commcost) a = jobson[4] b = jobson[3] c = (set('abc') - set((a, b))).pop() print a, b, c print orders assert orders == {a: [Event(4, 0, 4), Event(6, 4, 10), Event(7, 11, 18), Event(9, 18, 27)], b: [Event(3, 0, 3), Event(5, 3, 8), Event(8, 21, 29)], c: []}
def test_endtime(): events = [Event(0, 1, 2), Event(1, 2, 3), Event(2, 3, 4)] assert endtime(0, events) == 2 assert endtime(1, events) == 3
def test_makespan(): assert makespan({'a': [Event(0, 0, 1), Event(1, 2, 3)], 'b': [Event(2, 3, 4)]}) == 4