Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
cmakelists cleanup
[simgrid.git] / teshsuite / simdag / basic4.c
1 /* Copyright (c) 2007-2012. The SimGrid Team.
2  * All rights reserved.                                                     */
3
4 /* This program is free software; you can redistribute it and/or modify it
5  * under the terms of the license (GNU LGPL) which comes with this package. */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include "simdag/simdag.h"
10 #include "xbt/log.h"
11
12 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(basic4, sd, "SimDag test basic4");
13
14 /* Basic SimDag Test 4
15  * Scenario:
16  *   - Create a chain of tasks (Init, A, Fin)
17  *   - Have a 1B communication between two no-op tasks.
18  * Verify that the tasks are actually simulated in the right order.
19  * The simulated time should be equal to the network latency: 0.0001 seconds.
20  */
21 int main(int argc, char **argv)
22 {
23   /* creation of the tasks and their dependencies */
24
25   SD_task_t taskInit;
26   SD_task_t taskA;
27   SD_task_t taskFin;
28   xbt_dynar_t ret;
29
30   /* scheduling parameters */
31
32   double no_cost[] = { 0., 0., 0., 0. };
33   double amount[] = { 0., 1., 0., 0. };
34
35   /* initialisation of SD */
36   SD_init(&argc, argv);
37
38   /* creation of the environment */
39   SD_create_environment(argv[1]);
40
41   /* creation of the tasks and their dependencies */
42   taskInit = SD_task_create("Task Init", NULL, 1.0);
43   taskA = SD_task_create("Task A", NULL, 1.0);
44   taskFin = SD_task_create("Task Fin", NULL, 1.0);
45
46
47   /* let's launch the simulation! */
48   SD_task_schedule(taskInit, 1, SD_workstation_get_list(), no_cost,
49                    no_cost, -1.0);
50   SD_task_schedule(taskA, 2, SD_workstation_get_list(), no_cost, amount,
51                    -1.0);
52   SD_task_schedule(taskFin, 1, SD_workstation_get_list(), no_cost, no_cost,
53                    -1.0);
54
55   SD_task_dependency_add(NULL, NULL, taskInit, taskA);
56   SD_task_dependency_add(NULL, NULL, taskA, taskFin);
57
58   ret = SD_simulate(-1.0);
59   xbt_dynar_free(&ret);
60   SD_task_destroy(taskInit);
61   SD_task_destroy(taskA);
62   SD_task_destroy(taskFin);
63
64   XBT_INFO("Simulation time: %f", SD_get_clock());
65
66   SD_exit();
67   return 0;
68 }