Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
828b4ca1ec6c46752e1e3297fcb4a214442b95bb
[simgrid.git] / teshsuite / simdag / platforms / Evaluate_get_route_time.c
1 /* Copyright (c) 2008, 2009, 2010. 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 //for i in $(seq 1 100); do teshsuite/simdag/platforms/evaluate_get_route_time ../examples/platforms/One_cluster.xml 1 2> /tmp/null ; done
8
9
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include "simdag/simdag.h"
13 #include "surf/surf_private.h"
14 #include <time.h>
15
16 #define BILLION  1000000000L;
17 extern routing_global_t global_routing;
18
19 int main(int argc, char **argv)
20 {
21         SD_workstation_t w1, w2;
22         const SD_workstation_t *workstations;
23         int i, j;
24         int list_size;
25         struct timespec start, stop;
26         double accum;
27
28         /* initialisation of SD */
29         SD_init(&argc, argv);
30
31         /* creation of the environment */
32         SD_create_environment(argv[1]);
33
34         workstations = SD_workstation_get_list();
35         list_size = SD_workstation_get_number();
36
37         unsigned int seed;
38         struct timespec time;
39         clock_gettime( CLOCK_REALTIME, &time);
40         seed = time.tv_nsec;
41
42         srand(seed);
43
44         do{
45                 i = rand()%list_size;
46                 j = rand()%list_size;
47         }while(i==j);
48
49         w1 = workstations[i];
50         w2 = workstations[j];
51         printf("%d\tand\t%d\t\t",i,j);
52
53         if( clock_gettime( CLOCK_REALTIME, &start) == -1 ) {
54         perror( "clock gettime" );
55         return EXIT_FAILURE;
56         }
57
58         SD_route_get_list(w1, w2);
59
60         if( clock_gettime( CLOCK_REALTIME, &stop) == -1 ) {
61         perror( "clock gettime" );
62         return EXIT_FAILURE;
63         }
64
65         accum = ( stop.tv_sec - start.tv_sec )
66            + (double)( stop.tv_nsec - start.tv_nsec )
67                  / (double)BILLION;
68         printf("%lf\n", accum);
69
70         SD_exit();
71
72         return 0;
73 }