From d15da92375d52ca35e99192bee69c8f2167018b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=ABl=20Madon?= <mael.madon@irit.fr>
Date: Fri, 28 Oct 2022 08:53:11 +0200
Subject: [PATCH] test: add edge cases SABjson tested in batmen

---
 test/expected_output/load_platform.SABjson    | 105 ++++++++++++++++++
 test/expected_output/many_following.SABjson   | 102 +++++++++++++++++
 test/expected_output/many_preceding.SABjson   | 102 +++++++++++++++++
 .../many_start_sessions.SABjson               |  86 ++++++++++++++
 test/expected_output/no_session.SABjson       |   5 +
 .../one_session_many_jobs.SABjson             |  85 ++++++++++++++
 test/expected_output/zero_think_time.SABjson  |  38 +++++++
 7 files changed, 523 insertions(+)
 create mode 100644 test/expected_output/load_platform.SABjson
 create mode 100644 test/expected_output/many_following.SABjson
 create mode 100644 test/expected_output/many_preceding.SABjson
 create mode 100644 test/expected_output/many_start_sessions.SABjson
 create mode 100644 test/expected_output/no_session.SABjson
 create mode 100644 test/expected_output/one_session_many_jobs.SABjson
 create mode 100644 test/expected_output/zero_think_time.SABjson

diff --git a/test/expected_output/load_platform.SABjson b/test/expected_output/load_platform.SABjson
new file mode 100644
index 0000000..d035a6e
--- /dev/null
+++ b/test/expected_output/load_platform.SABjson
@@ -0,0 +1,105 @@
+{
+    "description": "Test feedback when platform is fully loaded.",
+    "nb_res": 16,
+    "sessions": [
+        {
+            "id": 1,
+            "first_submit_time": 0.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 1,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 2,
+            "first_submit_time": 2000.0,
+            "preceding_sessions": [1],
+            "thinking_time_after_preceding_session": [1000],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 2,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 3,
+            "first_submit_time": 10000.0,
+            "preceding_sessions": [
+                2
+            ],
+            "thinking_time_after_preceding_session": [
+                7000.0
+            ],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 3,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 4,
+            "first_submit_time": 12000.0,
+            "preceding_sessions": [
+                3
+            ],
+            "thinking_time_after_preceding_session": [
+                1000.0
+            ],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 4,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 5,
+            "first_submit_time": 9000.0,
+            "preceding_sessions": [
+                2
+            ],
+            "thinking_time_after_preceding_session": [
+                6000.0
+            ],
+            "nb_jobs": 2,
+            "jobs": [
+                {
+                    "id": 5,
+                    "profile": "5000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                },
+                {
+                    "id": 6,
+                    "profile": "5000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/test/expected_output/many_following.SABjson b/test/expected_output/many_following.SABjson
new file mode 100644
index 0000000..35a1e9c
--- /dev/null
+++ b/test/expected_output/many_following.SABjson
@@ -0,0 +1,102 @@
+{
+    "description": "A session (session 1) has five followers, four with a think time of 1000s and one with a think time of 2000s.",
+    "nb_res": 16,
+    "sessions": [
+        {
+            "id": 1,
+            "first_submit_time": 0.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 1,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 2,
+            "first_submit_time": 2000.0,
+            "preceding_sessions": [1],
+            "thinking_time_after_preceding_session": [1000],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 2,
+                    "profile": "2000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 3,
+            "first_submit_time": 2000.0,
+            "preceding_sessions": [1],
+            "thinking_time_after_preceding_session": [1000],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 3,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 4,
+            "first_submit_time": 2000.0,
+            "preceding_sessions": [1],
+            "thinking_time_after_preceding_session": [1000],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 4,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 5,
+            "first_submit_time": 2000.0,
+            "preceding_sessions": [1],
+            "thinking_time_after_preceding_session": [1000],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 5,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 6,
+            "first_submit_time": 3000.0,
+            "preceding_sessions": [1],
+            "thinking_time_after_preceding_session": [2000],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 6,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/test/expected_output/many_preceding.SABjson b/test/expected_output/many_preceding.SABjson
new file mode 100644
index 0000000..8ca4d28
--- /dev/null
+++ b/test/expected_output/many_preceding.SABjson
@@ -0,0 +1,102 @@
+{
+    "description": "A session (session 6) depends on five others, with a think time of 1000s.",
+    "nb_res": 16,
+    "sessions": [
+        {
+            "id": 1,
+            "first_submit_time": 1000.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 1,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 2,
+            "first_submit_time": 1000.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 2,
+                    "profile": "2000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 3,
+            "first_submit_time": 1000.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 3,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 4,
+            "first_submit_time": 1500.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 4,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 5,
+            "first_submit_time": 2000.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 5,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 6,
+            "first_submit_time": 2000.0,
+            "preceding_sessions": [1,2,3,4,5],
+            "thinking_time_after_preceding_session": [1000,1000,1000,1000,1000],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 6,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/test/expected_output/many_start_sessions.SABjson b/test/expected_output/many_start_sessions.SABjson
new file mode 100644
index 0000000..2a48296
--- /dev/null
+++ b/test/expected_output/many_start_sessions.SABjson
@@ -0,0 +1,86 @@
+{
+    "description": "Five start sessions with no dependency between them.",
+    "nb_res": 16,
+    "sessions": [
+        {
+            "id": 1,
+            "first_submit_time": 1000.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 1,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 2,
+            "first_submit_time": 1000.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 2,
+                    "profile": "2000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 3,
+            "first_submit_time": 1000.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 3,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 4,
+            "first_submit_time": 1500.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 4,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 5,
+            "first_submit_time": 2000.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 5,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/test/expected_output/no_session.SABjson b/test/expected_output/no_session.SABjson
new file mode 100644
index 0000000..12a6e78
--- /dev/null
+++ b/test/expected_output/no_session.SABjson
@@ -0,0 +1,5 @@
+{
+    "description": "Empty SABjson.",
+    "nb_res": 0,
+    "sessions": []
+}
\ No newline at end of file
diff --git a/test/expected_output/one_session_many_jobs.SABjson b/test/expected_output/one_session_many_jobs.SABjson
new file mode 100644
index 0000000..b3f9556
--- /dev/null
+++ b/test/expected_output/one_session_many_jobs.SABjson
@@ -0,0 +1,85 @@
+{
+    "description": "One session that contains ten jobs.",
+    "nb_res": 16,
+    "sessions": [
+        {
+            "id": 1,
+            "first_submit_time": 0.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 10,
+            "jobs": [
+                {
+                    "id": 750,
+                    "profile": "450",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 86400.0
+                },
+                {
+                    "id": 751,
+                    "profile": "210",
+                    "res": 16,
+                    "subtime": 591.0,
+                    "walltime": 86400.0
+                },
+                {
+                    "id": 752,
+                    "profile": "81540",
+                    "res": 16,
+                    "subtime": 767.0,
+                    "walltime": 163068.0
+                },
+                {
+                    "id": 757,
+                    "profile": "86140",
+                    "res": 16,
+                    "subtime": 895.0,
+                    "walltime": 172260.0
+                },
+                {
+                    "id": 758,
+                    "profile": "86130",
+                    "res": 16,
+                    "subtime": 959.0,
+                    "walltime": 172250.0
+                },
+                {
+                    "id": 768,
+                    "profile": "920",
+                    "res": 16,
+                    "subtime": 1537.0,
+                    "walltime": 86400.0
+                },
+                {
+                    "id": 781,
+                    "profile": "290",
+                    "res": 16,
+                    "subtime": 1841.0,
+                    "walltime": 86400.0
+                },
+                {
+                    "id": 791,
+                    "profile": "86130",
+                    "res": 16,
+                    "subtime": 2068.0,
+                    "walltime": 172248.0
+                },
+                {
+                    "id": 794,
+                    "profile": "86120",
+                    "res": 16,
+                    "subtime": 2149.0,
+                    "walltime": 172226.0
+                },
+                {
+                    "id": 795,
+                    "profile": "86130",
+                    "res": 16,
+                    "subtime": 2533.0,
+                    "walltime": 172246.0
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/test/expected_output/zero_think_time.SABjson b/test/expected_output/zero_think_time.SABjson
new file mode 100644
index 0000000..f88e328
--- /dev/null
+++ b/test/expected_output/zero_think_time.SABjson
@@ -0,0 +1,38 @@
+{
+    "description": "Two sessions following each other, with a think time of 0s between them.",
+    "nb_res": 16,
+    "sessions": [
+        {
+            "id": 1,
+            "first_submit_time": 0.0,
+            "preceding_sessions": [],
+            "thinking_time_after_preceding_session": [],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 1,
+                    "profile": "1000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        },
+        {
+            "id": 2,
+            "first_submit_time": 2000.0,
+            "preceding_sessions": [1],
+            "thinking_time_after_preceding_session": [0],
+            "nb_jobs": 1,
+            "jobs": [
+                {
+                    "id": 2,
+                    "profile": "2000",
+                    "res": 16,
+                    "subtime": 0.0,
+                    "walltime": 2592000.0
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
-- 
GitLab