Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
A whole bunch of test units from Sascha and Fred. Many thanks, dudes
[simgrid.git] / teshsuite / simdag / network / test_reinit_costs.c
diff --git a/teshsuite/simdag/network/test_reinit_costs.c b/teshsuite/simdag/network/test_reinit_costs.c
new file mode 100644 (file)
index 0000000..68a2c99
--- /dev/null
@@ -0,0 +1,106 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "simdag/simdag.h"
+
+/*
+ * SimDag
+ * Computation tests
+ * Copyright (C) 2007 
+ * Sascha Hunold, Frederic Suter
+ */
+
+/*
+ * This test checks if the reinitialization of
+ * surf works properly. 
+ * 1 test: empty task, reinit, empty task
+ * 2 test: comm cost task, reinit, empty task
+ * 
+ * output should be:
+ * 0
+ * 1.5
+ */
+
+static SD_task_t create_empty_cost_root() {
+       double no_cost[] = { 0.0 };
+       SD_task_t root;
+
+       root = SD_task_create("Root", NULL, 1.0);
+       SD_task_schedule(root, 1, SD_workstation_get_list(), no_cost, no_cost, -1.0);
+
+       return root;
+}
+
+static void zero_cost_test(int *argc, char *argv[]) {
+       double time;
+       SD_task_t task;
+       
+       SD_init(argc, argv);
+       SD_create_environment(argv[1]);
+       
+       task = create_empty_cost_root();
+       SD_simulate(-1.0);
+       SD_task_destroy(task);
+       
+       SD_application_reinit();
+       
+       task = create_empty_cost_root();
+       SD_simulate(-1.0);
+       SD_task_destroy(task);
+       
+       SD_simulate(-1.0);
+       
+       time = SD_get_clock();
+       printf("%g\n", time);
+       fflush(stdout);
+       
+       SD_exit();
+}
+
+static SD_task_t create_root_with_costs() {
+       double comp_cost[] = { 0.0, 0.0 };
+       double comm_cost[] = { 0.0, 1.0, 0.0, 0.0 };
+       SD_task_t root;
+
+       root = SD_task_create("Root", NULL, 1.0);
+       SD_task_schedule(root, 2, SD_workstation_get_list(), comp_cost, comm_cost,
+                       -1.0);  
+       
+       return root;
+}
+
+static void zero_cost_test2(int *argc, char *argv[]) {
+       double time;
+       SD_task_t task;
+       
+       SD_init(argc, argv);
+       SD_create_environment(argv[1]);
+       
+       task = create_root_with_costs();
+       SD_simulate(-1.0);
+       SD_task_destroy(task);
+       
+       SD_application_reinit();
+       
+       task = create_empty_cost_root();
+       SD_simulate(-1.0);
+       SD_task_destroy(task);
+       
+       SD_simulate(-1.0);
+       
+       time = SD_get_clock();
+       printf("%g\n", time);
+       fflush(stdout);
+       
+       SD_exit();
+}
+
+int main(int argc, char **argv) {
+
+  zero_cost_test(&argc, argv);
+
+  zero_cost_test2(&argc, argv);
+
+  return 0;
+}
+