Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
[simgrid.git] / teshsuite / surf / trace_usage / trace_usage.cpp
1 /* A few tests for the trace library                                       */
2
3 /* Copyright (c) 2004-2006, 2009-2015. The SimGrid Team.
4  * All rights reserved.                                                     */
5
6 /* This program is free software; you can redistribute it and/or modify it
7  * under the terms of the license (GNU LGPL) which comes with this package. */
8
9 #include "surf/surf.h"
10 #include "xbt/log.h"
11 #include "src/surf/network_cm02.hpp"
12 #include "src/surf/trace_mgr.hpp"
13
14 XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test, "Messages specific for surf example");
15
16 class DummyTestResource
17     : public simgrid::surf::Resource {
18 public:
19   DummyTestResource(const char *name) : Resource(nullptr,name) {}
20   bool isUsed() override {return false;}
21   void apply_event(tmgr_trace_iterator_t it, double value) override {}
22 };
23
24 int main(int argc, char **argv)
25 {
26   surf_init(&argc, argv);
27
28   simgrid::trace_mgr::future_evt_set *fes = new simgrid::trace_mgr::future_evt_set();
29   tmgr_trace_t trace_A = tmgr_trace_new_from_file("trace_A.txt");
30   tmgr_trace_t trace_B = tmgr_trace_new_from_file("trace_B.txt");
31   double next_event_date = -1.0;
32   double value = -1.0;
33   simgrid::surf::Resource *resource = NULL;
34   simgrid::surf::Resource *hostA = new DummyTestResource("Host A");
35   simgrid::surf::Resource *hostB = new DummyTestResource("Host B");
36
37   fes->add_trace(trace_A, 1.0, hostA);
38   fes->add_trace(trace_B, 0.0, hostB);
39
40   while ((next_event_date = fes->next_date()) != -1.0) {
41     XBT_INFO("%g:", next_event_date);
42     while (fes->pop_leq(next_event_date, &value, &resource)) {
43       XBT_INFO("   %s: %g", resource->getName(), value);
44     }
45     if (next_event_date > 100)
46       break;
47   }
48
49   delete fes;
50   delete hostA;
51   delete hostB;
52
53   surf_exit();
54   return 0;
55 }