X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/eb00b032747eab3a3c97d69fa8bdaaa59a7df77e..188bfe299d297c8ebaaa4aab015c16dada25b827:/examples/simdag/sd_test.c diff --git a/examples/simdag/sd_test.c b/examples/simdag/sd_test.c index d0eca654fa..0729329d21 100644 --- a/examples/simdag/sd_test.c +++ b/examples/simdag/sd_test.c @@ -13,6 +13,8 @@ int main(int argc, char **argv) { /* initialisation of SD */ SD_init(&argc, argv); + /* xbt_log_control_set("sd.thres=debug"); */ + if (argc < 2) { INFO1("Usage: %s platform_file", argv[0]); INFO1("example: %s sd_platform.xml", argv[0]); @@ -20,13 +22,14 @@ int main(int argc, char **argv) { } /* creation of the environment */ - const char * platform_file = argv[0]; + const char * platform_file = argv[1]; SD_create_environment(platform_file); /* test the estimation functions */ const SD_workstation_t *workstations = SD_workstation_get_list(); SD_workstation_t w1 = workstations[0]; SD_workstation_t w2 = workstations[1]; + SD_workstation_set_access_mode(w2, SD_WORKSTATION_SEQUENTIAL_ACCESS); const char *name1 = SD_workstation_get_name(w1); const char *name2 = SD_workstation_get_name(w2); const double computation_amount1 = 2000000; @@ -39,7 +42,7 @@ int main(int argc, char **argv) { SD_workstation_get_computation_time(w2, computation_amount2)); INFO2("Route between %s and %s:", name1, name2); - SD_link_t *route = SD_route_get_list(w1, w2); + const SD_link_t *route = SD_route_get_list(w1, w2); int route_size = SD_route_get_size(w1, w2); for (i = 0; i < route_size; i++) { INFO3("\tLink %s: latency = %f, bandwidth = %f", SD_link_get_name(route[i]), @@ -51,7 +54,6 @@ int main(int argc, char **argv) { SD_route_get_communication_time(w1, w2, communication_amount12)); INFO4("Communication time for %f bytes between %s and %s: %f", communication_amount21, name2, name1, SD_route_get_communication_time(w2, w1, communication_amount21)); - xbt_free(route); /* creation of the tasks and their dependencies */ SD_task_t taskA = SD_task_create("Task A", NULL, 10.0); @@ -70,32 +72,42 @@ int main(int argc, char **argv) { TRY { SD_task_dependency_add(NULL, NULL, taskA, taskA); /* shouldn't work and must raise an exception */ - xbt_assert0(0, "Hey, I can add a dependency between Task A and Task A!"); + xbt_die("Hey, I can add a dependency between Task A and Task A!"); } CATCH (ex) { + if (ex.category != arg_error) + RETHROW; /* this is a serious error */ + xbt_ex_free(ex); } TRY { - SD_task_dependency_add(NULL, NULL, taskA, taskB); /* shouldn't work and must raise an exception */ - xbt_assert0(0, "Oh oh, I can add an already existing dependency!"); + SD_task_dependency_add(NULL, NULL, taskB, taskA); /* shouldn't work and must raise an exception */ + xbt_die("Oh oh, I can add an already existing dependency!"); } CATCH (ex) { + if (ex.category != arg_error) + RETHROW; + xbt_ex_free(ex); } - SD_task_dependency_remove(taskA, taskB); - TRY { - SD_task_dependency_remove(taskC, taskA); /* shouldn't work and must raise an exception */ - xbt_assert0(0, "Dude, I can remove an unknown dependency!"); + SD_task_dependency_remove(taskA, taskC); /* shouldn't work and must raise an exception */ + xbt_die("Dude, I can remove an unknown dependency!"); } CATCH (ex) { + if (ex.category != arg_error) + RETHROW; + xbt_ex_free(ex); } TRY { SD_task_dependency_remove(taskC, taskC); /* shouldn't work and must raise an exception */ - xbt_assert0(0, "Wow, I can remove a dependency between Task C and itself!"); + xbt_die("Wow, I can remove a dependency between Task C and itself!"); } CATCH (ex) { + if (ex.category != arg_error) + RETHROW; + xbt_ex_free(ex); } @@ -105,7 +117,7 @@ int main(int argc, char **argv) { SD_task_watch(taskD, SD_DONE); SD_task_watch(taskB, SD_DONE); SD_task_unwatch(taskD, SD_DONE); - + /* scheduling parameters */ @@ -139,12 +151,18 @@ int main(int argc, char **argv) { SD_task_t *changed_tasks; changed_tasks = SD_simulate(-1.0); + for (i = 0; changed_tasks[i] != NULL; i++) { + INFO3("Task '%s' start time: %f, finish time: %f", + SD_task_get_name(changed_tasks[i]), + SD_task_get_start_time(changed_tasks[i]), + SD_task_get_finish_time(changed_tasks[i])); + } + xbt_assert0(changed_tasks[0] == taskD && changed_tasks[1] == taskB && - changed_tasks[2] == taskC && - changed_tasks[3] == NULL, + changed_tasks[2] == NULL, "Unexpected simulation results"); - + xbt_free(changed_tasks); DEBUG0("Destroying tasks...");