Skip to content
Snippets Groups Projects
Commit e166eb22 authored by jgatt's avatar jgatt
Browse files

reformat file + correction function_name + added docstring

parent 7961ac82
No related branches found
No related tags found
1 merge request!16Merge request multibehavior
from helper import * from helper import *
from test_users import run_user from test_users import run_user
import json import json
Workload = namedtuple('Workload', ['name', 'filename']) Workload = namedtuple('Workload', ['name', 'filename'])
Platform = namedtuple('Platform', ['name', 'filename']) Platform = namedtuple('Platform', ['name', 'filename'])
two_machine_platform = Platform(name='two_machine_platform', filename='test/platforms/multicore/2machines.xml') two_machine_platform = Platform(name='two_machine_platform', filename='test/platforms/multicore/2machines.xml')
def make_monolithic_file(user_name, input_json, probability_name, seed=None, red_windows=None, yellow_windows=None): def make_monolithic_file(user_name, input_json, probability_name, seed=None, red_windows=None, yellow_windows=None):
""" create a user_description where every user with names in user_name and workload in input_json do only the behavior """ create a user_description where every user with names in user_name and workload in input_json do only the behavior
given in probability_name with the provided seed and red_windows and yellow_windows """ given in probability_name with the provided seed and red_windows and yellow_windows """
...@@ -17,67 +20,84 @@ def make_monolithic_file(user_name, input_json, probability_name, seed=None, red ...@@ -17,67 +20,84 @@ def make_monolithic_file(user_name, input_json, probability_name, seed=None, red
"category": "dm_user_multi_behavior", "category": "dm_user_multi_behavior",
"param": { "param": {
"input_json": input_json_user, "input_json": input_json_user,
probability_name : 1.0 probability_name: 1.0
} }
} }
for name, input_json_user in zip(user_name, input_json) for name, input_json_user in zip(user_name, input_json)
] ]
} }
if seed : if seed:
error_file["seed"] =seed error_file["seed"] = seed
if red_windows : if red_windows:
error_file["red_windows"] = red_windows error_file["red_windows"] = red_windows
if yellow_windows : if yellow_windows:
error_file["yellow_windows"] = yellow_windows error_file["yellow_windows"] = yellow_windows
with open(schedconf_file, 'w+') as error_description_file : with open(schedconf_file, 'w+') as error_description_file:
json.dump(error_file,error_description_file) json.dump(error_file, error_description_file)
def monolithics_test(proba_names,names,input_json,seed=None,red_windows=None,yellow_windows=None) : def monolithics_test(proba_names, names, input_json, seed=None, red_windows=None, yellow_windows=None):
""" test a monolithic behavior on red_windows or yellow_windows and compare to their dm_user_replay class equivalent""" """ test a monolithic behavior on red_windows or yellow_windows and compare to their user_replay class equivalent"""
schedconf_file = 'test-instances/user_description_file.json' schedconf_file = 'test-instances/user_description_file.json'
for proba_name in proba_names : for proba_name in proba_names:
behavior_name = proba_name.split("_")[-1] behavior_name = proba_name.split("_")[-1]
make_monolithic_file(names, input_json, proba_name,seed=seed, red_windows=red_windows,yellow_windows=yellow_windows) make_monolithic_file(names, input_json, proba_name, seed=seed, red_windows=red_windows,
test_file_name=f'dm_user_multi_behavior_{proba_name}_only' yellow_windows=yellow_windows)
test_file_name = f'dm_user_multi_behavior_{proba_name}_only'
out_dir = run_user(test_file_name, two_machine_platform, out_dir = run_user(test_file_name, two_machine_platform,
test_name=test_file_name, schedconf = schedconf_file) test_name=test_file_name, schedconf=schedconf_file)
if not("comm" in out_dir): if not ("comm" in out_dir):
content_job = open(out_dir + "/_jobs.csv").readlines() content_job = open(out_dir + "/_jobs.csv").readlines()
if not("rigid" in out_dir): if not ("rigid" in out_dir):
expected_log = open(f"test/expected_log/dm_user_{behavior_name}-2machines_jobs.csv").readlines() expected_log = open(f"test/expected_log/dm_user_{behavior_name}-2machines_jobs.csv").readlines()
else : else:
expected_log = open(f"test/expected_log/replay_user_rigid-2machines_jobs.csv").readlines() expected_log = open(f"test/expected_log/replay_user_rigid-2machines_jobs.csv").readlines()
assert content_job == expected_log assert content_job == expected_log
def test_dm_user_multi_behavior(platform_multiC) :
def test_dm_user_multi_behavior(platform_multiC):
""" test dm_user_multi_behavior class and check that writing [200000,300000] as an unique interval
or a sorted list of disjoint interval has the same effect. Allowing us to check that the windows union operation is
done correctly"""
out_dir_1 = run_user("dm_user_multi_behavior", platform_multiC) out_dir_1 = run_user("dm_user_multi_behavior", platform_multiC)
out_dir_2 = run_user("dm_user_multi_behavior_many_windows",platform_multiC) out_dir_2 = run_user("dm_user_multi_behavior_many_windows", platform_multiC)
with open(f"{out_dir_1}/_jobs.csv") as job_file_1 : with open(f"{out_dir_1}/_jobs.csv") as job_file_1:
job_line_1 = job_file_1.readlines() job_line_1 = job_file_1.readlines()
with open(f"{out_dir_2}/_jobs.csv") as job_file_2 : with open(f"{out_dir_2}/_jobs.csv") as job_file_2:
job_line_2 = job_file_2.readlines() job_line_2 = job_file_2.readlines()
assert job_line_1 == job_line_2 assert job_line_1 == job_line_2
def test_dm_user_multi_behavior_yellow(platform_multiC) :
run_user("dm_user_multi_behavior_yellow",platform_multiC)
def test_dm_user_multi_behavior_C_you_later_only(platform_multiC) :
def test_dm_user_multi_behavior_yellow(platform_multiC):
""" test dm_user_multi_behavior with yellow_windows"""
run_user("dm_user_multi_behavior_yellow", platform_multiC)
def test_dm_user_multi_behavior_C_you_later_only(platform_multiC):
""" Test users that only do see_you_later behavior in red_windows""" """ Test users that only do see_you_later behavior in red_windows"""
run_user("dm_user_multi_behavior_C_you_later_only", platform_multiC) run_user("dm_user_multi_behavior_C_you_later_only", platform_multiC)
run_user("dm_user_multi_behavior_C_you_later_only_two_jobs", platform_multiC) run_user("dm_user_multi_behavior_C_you_later_only_two_jobs", platform_multiC)
def test_dm_user_multi_behavior_monobehavior_red(platform_multiC) :
def test_dm_user_multi_behavior_mono_behavior_red(platform_multiC):
""" Test users that only do one behavior in red_window""" """ Test users that only do one behavior in red_window"""
proba_names= ["red_prob_degrad", "red_prob_rigid", "red_prob_reconfig", "red_prob_renonce"] proba_names = ["red_prob_degrad", "red_prob_rigid", "red_prob_reconfig", "red_prob_renonce"]
names = ["user" + str(i+14) for i in range(3)] + ["user18"] names = ["user" + str(i + 14) for i in range(3)] + ["user18"]
input_json = ["test/workloads/dyn/user" + str(i+14) + ".json" for i in range(3)] + ["test/workloads/dyn/user18.json"] input_json = ["test/workloads/dyn/user" + str(i + 14) + ".json" for i in range(3)] + [
"test/workloads/dyn/user18.json"]
monolithics_test(proba_names, names, input_json, seed=3, red_windows=[[200000, 300000]]) monolithics_test(proba_names, names, input_json, seed=3, red_windows=[[200000, 300000]])
def test_dm_user_multi_behabior_monobehavior_yellow(platform_multiC) :
def test_dm_user_multi_behavior_mono_behavior_yellow(platform_multiC):
""" Test users that only do one behavior in yellow_windows""" """ Test users that only do one behavior in yellow_windows"""
proba_names = ["yellow_prob_reconfig", "yellow_prob_degrad","yellow_prob_rigid"] proba_names = ["yellow_prob_reconfig", "yellow_prob_degrad", "yellow_prob_rigid"]
names = ["user" + str(i+14) for i in range(3)] + ["user18"] names = ["user" + str(i + 14) for i in range(3)] + ["user18"]
input_json = ["test/workloads/dyn/user" + str(i+14) + ".json" for i in range(3)] + ["test/workloads/dyn/user18.json"] input_json = ["test/workloads/dyn/user" + str(i + 14) + ".json" for i in range(3)] + [
"test/workloads/dyn/user18.json"]
monolithics_test(proba_names, names, input_json, seed=3, yellow_windows=[[200000, 300000]]) monolithics_test(proba_names, names, input_json, seed=3, yellow_windows=[[200000, 300000]])
def test_dm_user_small_workload(platform_multiC) :
def test_dm_user_small_workload(platform_multiC):
""" test multi_behavior on small workload file (<100 jobs) for human checkable log""" """ test multi_behavior on small workload file (<100 jobs) for human checkable log"""
for i in range(1, 6): for i in range(1, 6):
run_user(f"dm_user_multi_behavior_small_workload_{i}", platform_multiC) run_user(f"dm_user_multi_behavior_small_workload_{i}", platform_multiC)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment