diff --git a/test/distance_batsim_output.py b/test/distance_batsim_output.py
old mode 100644
new mode 100755
index b5e324e4b05be9eee72eeff1e4d7a8900e517e80..b8938a8bb8f3c2c4b64a82139c6d71d166b50414
--- a/test/distance_batsim_output.py
+++ b/test/distance_batsim_output.py
@@ -22,7 +22,7 @@ def clean_and_select(df):
     select["job_id"] = select["job_id"].str.split(':', expand=True)[0]
     select.job_id = select.job_id.astype(int)
 
-    return select.sort_values(by="job_id")
+    return select.sort_values(by="job_id").set_index("job_id")
 
 
 def open_and_compare(file1, file2):
@@ -35,7 +35,7 @@ def open_and_compare(file1, file2):
     out1 = clean_and_select(out1)
     out2 = clean_and_select(out2)
 
-    if not out1.job_id.equals(out2.job_id):
+    if not out1.index.equals(out2.index):
         raise KeyError(
             f"{file1} and {file2} cannot be compared: they don't have the same job_ids")
 
diff --git a/test/test_fb_users.py b/test/test_fb_users.py
index 25a2ed8412db7bb5885e0250749018af3109df6c..678029116a4ee21049849f7cc326b901a1207fb0 100644
--- a/test/test_fb_users.py
+++ b/test/test_fb_users.py
@@ -95,7 +95,7 @@ def test_tt_only_simple_workload():
     launch_fb_test_1user(user_category='fb_user_think_time_only',
                    test_input='proto_SABjson_v2')
 
-def assert_simu_output_are_close_enough(out_dir1, out_dir2):
+def 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."""
@@ -104,9 +104,10 @@ def assert_simu_output_are_close_enough(out_dir1, out_dir2):
     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
+
+    return dis["submission_time"]["normalized_euclidean"] < epsilon and (
+        dis["starting_time"]["normalized_euclidean"] < epsilon) and (
+        dis["finish_time"]["normalized_euclidean"] < epsilon)
 
 
 def test_tt_only_multiuser():
@@ -139,7 +140,7 @@ def test_tt_only_multiuser():
         user_name=names, user_category=[category]*4, input_json=jsons)
     feedback_dir = run_user(category, mc_europar_platform, empty_workload, 
                             test_name=f'{category}-{test_name}', schedconf=schedconf_file)
-    assert_simu_output_are_close_enough(feedback_dir, rigid_dir)
+    assert simu_output_are_close_enough(feedback_dir, rigid_dir)
 
     # mc_10_days_l60
     test_name = "mc_10days_l60"
@@ -148,7 +149,7 @@ def test_tt_only_multiuser():
         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)
-    assert_simu_output_are_close_enough(feedback_dir, rigid_dir)
+    assert simu_output_are_close_enough(feedback_dir, rigid_dir)
 
 
     # mc_10_days_m60
@@ -158,7 +159,53 @@ def test_tt_only_multiuser():
         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)
-    assert_simu_output_are_close_enough(feedback_dir, rigid_dir)
+    assert simu_output_are_close_enough(feedback_dir, rigid_dir)
+
+
+def test_tt_only_multiuser_undersized_platform():
+    """Same test than the previous one, but with an undersized plateform."""
+    names = ["user5", "user9", "user10", "user11"]
+    
+    # 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, two_machine_platform, empty_workload, 
+                         test_name=f'{category}-{test_name}_undersized', 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
+    test_name = "mc_10days_a60"
+    jsons = [f"test/workloads/SABjson/{test_name}/{user}.SABjson" for user in names]
+    make_fb_user_description_file(
+        user_name=names, user_category=[category]*4, input_json=jsons)
+    feedback_dir = run_user(category, two_machine_platform, empty_workload, 
+                            test_name=f'{category}-{test_name}_undersized', schedconf=schedconf_file)
+    assert not simu_output_are_close_enough(feedback_dir, rigid_dir)
+
+    # mc_10_days_l60
+    test_name = "mc_10days_l60"
+    jsons = [f"test/workloads/SABjson/{test_name}/{user}.SABjson" for user in names]
+    make_fb_user_description_file(
+        user_name=names, user_category=[category]*4, input_json=jsons)
+    run_user(category, two_machine_platform, empty_workload, 
+             test_name=f'{category}-{test_name}_undersized', schedconf=schedconf_file)
+    assert not simu_output_are_close_enough(feedback_dir, rigid_dir)
+
+
+    # mc_10_days_m60
+    test_name = "mc_10days_m60"
+    jsons = [f"test/workloads/SABjson/{test_name}/{user}.SABjson" for user in names]
+    make_fb_user_description_file(
+        user_name=names, user_category=[category]*4, input_json=jsons)
+    run_user(category, two_machine_platform, empty_workload, 
+             test_name=f'{category}-{test_name}_undersized', schedconf=schedconf_file)
+    assert not simu_output_are_close_enough(feedback_dir, rigid_dir)