def test_assign_resources_mld_job_split_slots_2(): v = [(0, 59, [(17, 21)]), (60, 100, [(1, 32)])] res = [(1, 32)] ss = SlotSet(Slot(1, 0, 0, res, 0, 100)) hy = {"node": [[(1, 8)], [(9, 16)], [(17, 24)], [(25, 32)]], "switch": [[(1, 16)], [(17, 21)]], "gpu": [[(22, 32)]]} j1 = JobPseudo(id=1, key_cache={}, mld_res_rqts=[(1, 60, [([("node", 2)], res), ([("gpu", 1)], res)])]) assign_resources_mld_job_split_slots(ss, j1, hy, -1) ss.show_slots() assert compare_slots_val_ref(ss.slots, v)
def test_quotas_four_jobs_rule_1(): config['QUOTAS'] = 'yes' # quotas.set_quotas_rules({('*', '*', '*', '/'): [1, -1, -1]}) # global quotas_rules qts.quotas_rules = {('*', '*', '*', '/'): [16, -1, -1], ('*', 'yop', '*', '*'): [-1, 1, -1]} res = [(1, 32)] rs.default_resource_itvs = deepcopy(res) ss = SlotSet(Slot(1, 0, 0, deepcopy(res), 0, 10000)) all_ss = {"default": ss} hy = {'node': [[(1, 8)], [(9, 16)], [(17, 24)], [(25, 32)]]} j1 = JobPseudo(id=1, start_time=0, walltime=20, queue='default', user='******', project='', res_set=[(9, 24)], types={}, ts=False, ph=0) j2 = JobPseudo(id=2, start_time=0, walltime=50, queue='default', user='******', project='yop', res_set=[(1, 8)]) j3 = JobPseudo(id=3, queue='default', user='******', project='') j3.simple_req(('node', 1), 10, res) j4 = JobPseudo(id=4, queue='default', user='******', project='yop') j4.simple_req(('node', 1), 60, res) set_slots_with_prev_scheduled_jobs(all_ss, [j1, j2], 5) ss.show_slots() # pdb.set_trace() schedule_id_jobs_ct(all_ss, {3: j3, 4: j4}, hy, [3, 4], 5) print(j3.start_time, j4.start_time) assert j3.start_time == 20 assert j3.res_set == [(9, 16)] assert j4.start_time == 50 assert j4.res_set == [(1, 8)]