Skip to content
Snippets Groups Projects
Commit 20245fb4 authored by Maël Madon's avatar Maël Madon
Browse files

test: add a test to check that the simulation outputs in 'replay with...

test: add a test to check that the simulation outputs in 'replay with feedback' mode are 'very close' to the simulation outputs in 'replay rigid' mode, in case of an oversized platform file
parent c9c3eff6
No related branches found
No related tags found
1 merge request!2Feature "replay with feedback" ready and tested
...@@ -95,18 +95,51 @@ def test_tt_only_simple_workload(): ...@@ -95,18 +95,51 @@ def test_tt_only_simple_workload():
launch_fb_test_1user(user_category='fb_user_think_time_only', launch_fb_test_1user(user_category='fb_user_think_time_only',
test_input='proto_SABjson_v2') test_input='proto_SABjson_v2')
def assert_simu_output_are_close_enough(out_dir1, out_dir2):
"""Returns true if the jobs.csv in both directories are epsilon-close (for
the normalized euclidean distance) for each of the fields submission time,
start time and finish time."""
epsilon = 1e-6 # precision of 0.0001%
dis = distances(f"{out_dir1}/_jobs.csv", f"{out_dir2}/_jobs.csv",
euclidean=False, norm_eucl=True,
field=["submission_time", "starting_time", "finish_time"])
assert dis["submission_time"]["normalized_euclidean"] < epsilon
assert dis["starting_time"]["normalized_euclidean"] < epsilon
assert dis["finish_time"]["normalized_euclidean"] < epsilon
def test_tt_only_multiuser(): def test_tt_only_multiuser():
"""4 users generated from the 10 first days of metacentrum log.""" """Workload: 4 users taken from the 10 first days of metacentrum log.
This tests checks:
- that the simulation with feedback doesn't fail for multiuser instances
- that the simulation outputs are "very close" to the rigid replay, no
matter the delimitation approach, because the platform is oversized.
To test the "closeness" we make use of custom distances (see batmen-tools).
"""
names = ["user5", "user9", "user10", "user11"] names = ["user5", "user9", "user10", "user11"]
category = "fb_user_think_time_only"
# Launch a simulation with replay rigid, for comparison
category = "replay_user_rigid"
test_name = "mc_10days"
jsons = [f"test/workloads/split_by_user/{user}.json" for user in names]
make_fb_user_description_file(
user_name=names, user_category=[category]*4, input_json=jsons)
rigid_dir = run_user(category, mc_europar_platform, empty_workload,
test_name=f'{category}-{test_name}', schedconf=schedconf_file)
# Launch feedback users on the same original log, and compare with rigid
category = "fb_user_think_time_only"
# mc_10_days_a60 # mc_10_days_a60
test_name = "mc_10days_a60" test_name = "mc_10days_a60"
jsons = [f"test/workloads/SABjson/{test_name}/{user}.SABjson" for user in names] jsons = [f"test/workloads/SABjson/{test_name}/{user}.SABjson" for user in names]
make_fb_user_description_file( make_fb_user_description_file(
user_name=names, user_category=[category]*4, input_json=jsons) user_name=names, user_category=[category]*4, input_json=jsons)
run_user(category, mc_europar_platform, empty_workload, feedback_dir = run_user(category, mc_europar_platform, empty_workload,
test_name=f'{category}-{test_name}', schedconf=schedconf_file) test_name=f'{category}-{test_name}', schedconf=schedconf_file)
assert_simu_output_are_close_enough(feedback_dir, rigid_dir)
# mc_10_days_l60 # mc_10_days_l60
test_name = "mc_10days_l60" test_name = "mc_10days_l60"
...@@ -115,6 +148,7 @@ def test_tt_only_multiuser(): ...@@ -115,6 +148,7 @@ def test_tt_only_multiuser():
user_name=names, user_category=[category]*4, input_json=jsons) user_name=names, user_category=[category]*4, input_json=jsons)
run_user(category, mc_europar_platform, empty_workload, run_user(category, mc_europar_platform, empty_workload,
test_name=f'{category}-{test_name}', schedconf=schedconf_file) test_name=f'{category}-{test_name}', schedconf=schedconf_file)
assert_simu_output_are_close_enough(feedback_dir, rigid_dir)
# mc_10_days_m60 # mc_10_days_m60
...@@ -124,13 +158,7 @@ def test_tt_only_multiuser(): ...@@ -124,13 +158,7 @@ def test_tt_only_multiuser():
user_name=names, user_category=[category]*4, input_json=jsons) user_name=names, user_category=[category]*4, input_json=jsons)
run_user(category, mc_europar_platform, empty_workload, run_user(category, mc_europar_platform, empty_workload,
test_name=f'{category}-{test_name}', schedconf=schedconf_file) test_name=f'{category}-{test_name}', schedconf=schedconf_file)
assert_simu_output_are_close_enough(feedback_dir, rigid_dir)
# Replay rigid, for comparison
category = "replay_user_rigid"
test_name = "mc_10days"
jsons = [f"test/workloads/split_by_user/{user}.json" for user in names]
make_fb_user_description_file(
user_name=names, user_category=[category]*4, input_json=jsons)
run_user(category, mc_europar_platform, empty_workload,
test_name=f'{category}-{test_name}', schedconf=schedconf_file)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment