Exemplo n.º 1
0
Arquivo: slot.py Projeto: fr0uty/oartm
def intersec_ts_ph_itvs_slots(slots, sid_left, sid_right, job):

    sid = sid_left
    itvs_acc = []
    while True:
        slot = slots[sid]
        itvs = slot.itvs

        if job.ts:
            if "*" in slot.ts_itvs:  # slot.ts_itvs[user][name]
                if "*" in slot.ts_itvs["*"]:
                    itvs = add_intervals(itvs, slot.ts_itvs["*"]["*"])
                elif job.name in slot.ts_itvs["*"]:
                    itvs = add_intervals(itvs, slot.ts_itvs["*"][job.name])
            elif job.user in slot.ts_itvs:
                if "*" in slot.ts_itvs[job.user]:
                    itvs = add_intervals(itvs, slot.ts_itvs[job.user]["*"])
                elif job.name in slot.ts_itvs[job.user]:
                    itvs = add_intervals(
                        itvs, slot.ts_itvs[job.user][job.name])

        if job.ph == ALLOW:
            if job.ph_name in slot.ph_itvs:
                itvs = add_intervals(itvs, slot.ph_itvs[job.ph_name])

        if not itvs_acc:
            itvs_acc = itvs
        else:
            itvs_acc = intersec(itvs_acc, itvs)

        if sid == sid_right:
            break
        sid = slots[sid].next

    return itvs_acc
Exemplo n.º 2
0
Arquivo: slot.py Projeto: fr0uty/oartm
    def add_slot_during_job(self, slot, job):
        slot.b = max(slot.b, job.start_time)
        slot.e = min(slot.e, job.start_time + job.walltime - 1)
        if (not job.ts) and (job.ph == NO_PLACEHOLDER):
            slot.itvs = add_intervals(slot.itvs, job.res_set[:])
        if job.ts:
            if job.ts_user not in slot.ts_itvs:
                slot.ts_itvs[job.ts_user] = {}
            if job.ts_name not in slot.ts_itvs[job.ts_user]:
                slot.ts_itvs[job.ts_user][job.ts_name] = job.res_set[:]
            else:
                itvs = slot.ts_itvs[job.ts_user][job.ts_name]
                slot.ts_itvs[job.ts_user][job.ts_name] = add_intervals(itvs, job.res_set[:])

        if job.ph == PLACEHOLDER:
            if job.ph_name in slot.ph_itvs:
                slot.ph_itvs[job.ph_name] = \
                    add_intervals(slot.ph_itvs[job.ph_name], job.res_set)
            else:
                slot.ph_itvs[job.ph_name] = job.res_set[:]
Exemplo n.º 3
0
def test_add_intervals5():
    r = [(1, 30)]
    assert add_intervals([], r) == r
Exemplo n.º 4
0
def test_add_intervals4():
    r = [(1, 30)]
    assert add_intervals(r, []) == r
Exemplo n.º 5
0
def test_add_intervals3():
    r = [(1, 30)]
    x = [(3, 4), (6, 7), (9, 17), (19, 30)]
    y = [(1, 10), (15, 20), (22, 24)]
    a = add_intervals(x, y)
    assert a == r
Exemplo n.º 6
0
def test_add_intervals2():
    r = [(1, 9)]
    x = [(1, 4), (6, 9)]
    y = [(2, 7)]
    a = add_intervals(x, y)
    assert a == r