--- /dev/null
+/*
+ * vm_bug.c
+ *
+ * Created on: Jan 30, 2014
+ * Author: bedaride
+ */
+
+#include <stdio.h>
+#include "msg/msg.h"
+#include "xbt/sysdep.h"
+
+#include "xbt/log.h"
+#include "xbt/asserts.h"
+XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test,
+ "Messages specific for this msg example");
+
+msg_task_t atask = NULL;
+
+static int computation_fun(int argc, char *argv[])
+{
+ const char *pr_name = MSG_process_get_name(MSG_process_self());
+ const char *host_name = MSG_host_get_name(MSG_host_self());
+ double clock_sta, clock_end;
+ atask = MSG_task_create("Task1", 1e9, 1e9, NULL);
+ clock_sta = MSG_get_clock();
+ XBT_INFO("%s:%s task 1 created %g", host_name, pr_name, clock_sta);
+ MSG_task_execute(atask);
+ clock_end = MSG_get_clock();
+
+ XBT_INFO("%s:%s task 1 executed %g", host_name, pr_name, clock_end - clock_sta);
+
+ MSG_task_destroy(atask);
+ atask = NULL;
+
+ MSG_process_sleep(1);
+
+ atask = MSG_task_create("Task2", 1e10, 1e10, NULL);
+
+ clock_sta = MSG_get_clock();
+ XBT_INFO("%s:%s task 2 created %g", host_name, pr_name, clock_sta);
+ MSG_task_execute(atask);
+ clock_end = MSG_get_clock();
+
+ XBT_INFO("%s:%s task 2 executed %g", host_name, pr_name, clock_end - clock_sta);
+
+ MSG_task_destroy(atask);
+ atask = NULL;
+
+ return 0;
+}
+
+static void launch_computation_worker(msg_host_t host)
+{
+ const char *pr_name = "compute";
+ char **argv = xbt_new(char *, 2);
+ argv[0] = xbt_strdup(pr_name);
+ argv[1] = NULL;
+
+ MSG_process_create_with_arguments(pr_name, computation_fun, NULL, host, 1, argv);
+}
+
+static int master_main(int argc, char *argv[])
+{
+ xbt_dynar_t hosts_dynar = MSG_hosts_as_dynar();
+ msg_host_t pm0 = xbt_dynar_get_as(hosts_dynar, 0, msg_host_t);
+ msg_vm_t vm0;
+ vm0 = MSG_vm_create_core(pm0, "VM0");
+
+ //MSG_process_sleep(1);
+
+ launch_computation_worker(pm0);
+
+ while(MSG_get_clock()<100) {
+ if (atask != NULL)
+ XBT_INFO("aTask remaining duration: %g", MSG_task_get_remaining_computation(atask));
+ MSG_process_sleep(1);
+ }
+
+ MSG_process_sleep(10000);
+ return 1;
+}
+
+static void launch_master(msg_host_t host)
+{
+ const char *pr_name = "master_";
+ char **argv = xbt_new(char *, 2);
+ argv[0] = xbt_strdup(pr_name);
+ argv[1] = NULL;
+
+ MSG_process_create_with_arguments(pr_name, master_main, NULL, host, 1, argv);
+}
+
+int main(int argc, char *argv[]){
+ MSG_init(&argc, argv);
+
+ xbt_assert(argc == 2);
+ MSG_create_environment(argv[1]);
+
+ xbt_dynar_t hosts_dynar = MSG_hosts_as_dynar();
+ msg_host_t pm0 = xbt_dynar_get_as(hosts_dynar, 0, msg_host_t);
+ launch_master(pm0);
+
+ int res = MSG_main();
+ XBT_INFO("Bye (simulation time %g)", MSG_get_clock());
+
+ return !(res == MSG_OK);
+}
+
+
+
+
--- /dev/null
+#! ./tesh
+
+p Testing a vm with two successive tasks
+
+$ $SG_TEST_EXENV two_tasks_vm$EXEEXT ${srcdir:=.}/simple_plat.xml
+> [0.000000] [surf_vm_workstation/INFO] Create VM(VM0)@PM(PM0) with 0 mounted disks
+> [PM0:compute:(2) 0.000000] [msg_test/INFO] PM0:compute task 1 created 0
+> [PM0:master_:(1) 0.000000] [msg_test/INFO] aTask remaining duration: 1e+09
+> [PM0:master_:(1) 1.000000] [msg_test/INFO] aTask remaining duration: 9e+08
+> [PM0:master_:(1) 2.000000] [msg_test/INFO] aTask remaining duration: 8e+08
+> [PM0:master_:(1) 3.000000] [msg_test/INFO] aTask remaining duration: 7e+08
+> [PM0:master_:(1) 4.000000] [msg_test/INFO] aTask remaining duration: 6e+08
+> [PM0:master_:(1) 5.000000] [msg_test/INFO] aTask remaining duration: 5e+08
+> [PM0:master_:(1) 6.000000] [msg_test/INFO] aTask remaining duration: 4e+08
+> [PM0:master_:(1) 7.000000] [msg_test/INFO] aTask remaining duration: 3e+08
+> [PM0:master_:(1) 8.000000] [msg_test/INFO] aTask remaining duration: 2e+08
+> [PM0:master_:(1) 9.000000] [msg_test/INFO] aTask remaining duration: 1e+08
+> [PM0:compute:(2) 10.000000] [msg_test/INFO] PM0:compute task 1 executed 10
+> [PM0:master_:(1) 10.000000] [msg_test/INFO] aTask remaining duration: 0
+> [PM0:compute:(2) 11.000000] [msg_test/INFO] PM0:compute task 2 created 11
+> [PM0:master_:(1) 12.000000] [msg_test/INFO] aTask remaining duration: 9.9e+09
+> [PM0:master_:(1) 13.000000] [msg_test/INFO] aTask remaining duration: 9.8e+09
+> [PM0:master_:(1) 14.000000] [msg_test/INFO] aTask remaining duration: 9.7e+09
+> [PM0:master_:(1) 15.000000] [msg_test/INFO] aTask remaining duration: 9.6e+09
+> [PM0:master_:(1) 16.000000] [msg_test/INFO] aTask remaining duration: 9.5e+09
+> [PM0:master_:(1) 17.000000] [msg_test/INFO] aTask remaining duration: 9.4e+09
+> [PM0:master_:(1) 18.000000] [msg_test/INFO] aTask remaining duration: 9.3e+09
+> [PM0:master_:(1) 19.000000] [msg_test/INFO] aTask remaining duration: 9.2e+09
+> [PM0:master_:(1) 20.000000] [msg_test/INFO] aTask remaining duration: 9.1e+09
+> [PM0:master_:(1) 21.000000] [msg_test/INFO] aTask remaining duration: 9e+09
+> [PM0:master_:(1) 22.000000] [msg_test/INFO] aTask remaining duration: 8.9e+09
+> [PM0:master_:(1) 23.000000] [msg_test/INFO] aTask remaining duration: 8.8e+09
+> [PM0:master_:(1) 24.000000] [msg_test/INFO] aTask remaining duration: 8.7e+09
+> [PM0:master_:(1) 25.000000] [msg_test/INFO] aTask remaining duration: 8.6e+09
+> [PM0:master_:(1) 26.000000] [msg_test/INFO] aTask remaining duration: 8.5e+09
+> [PM0:master_:(1) 27.000000] [msg_test/INFO] aTask remaining duration: 8.4e+09
+> [PM0:master_:(1) 28.000000] [msg_test/INFO] aTask remaining duration: 8.3e+09
+> [PM0:master_:(1) 29.000000] [msg_test/INFO] aTask remaining duration: 8.2e+09
+> [PM0:master_:(1) 30.000000] [msg_test/INFO] aTask remaining duration: 8.1e+09
+> [PM0:master_:(1) 31.000000] [msg_test/INFO] aTask remaining duration: 8e+09
+> [PM0:master_:(1) 32.000000] [msg_test/INFO] aTask remaining duration: 7.9e+09
+> [PM0:master_:(1) 33.000000] [msg_test/INFO] aTask remaining duration: 7.8e+09
+> [PM0:master_:(1) 34.000000] [msg_test/INFO] aTask remaining duration: 7.7e+09
+> [PM0:master_:(1) 35.000000] [msg_test/INFO] aTask remaining duration: 7.6e+09
+> [PM0:master_:(1) 36.000000] [msg_test/INFO] aTask remaining duration: 7.5e+09
+> [PM0:master_:(1) 37.000000] [msg_test/INFO] aTask remaining duration: 7.4e+09
+> [PM0:master_:(1) 38.000000] [msg_test/INFO] aTask remaining duration: 7.3e+09
+> [PM0:master_:(1) 39.000000] [msg_test/INFO] aTask remaining duration: 7.2e+09
+> [PM0:master_:(1) 40.000000] [msg_test/INFO] aTask remaining duration: 7.1e+09
+> [PM0:master_:(1) 41.000000] [msg_test/INFO] aTask remaining duration: 7e+09
+> [PM0:master_:(1) 42.000000] [msg_test/INFO] aTask remaining duration: 6.9e+09
+> [PM0:master_:(1) 43.000000] [msg_test/INFO] aTask remaining duration: 6.8e+09
+> [PM0:master_:(1) 44.000000] [msg_test/INFO] aTask remaining duration: 6.7e+09
+> [PM0:master_:(1) 45.000000] [msg_test/INFO] aTask remaining duration: 6.6e+09
+> [PM0:master_:(1) 46.000000] [msg_test/INFO] aTask remaining duration: 6.5e+09
+> [PM0:master_:(1) 47.000000] [msg_test/INFO] aTask remaining duration: 6.4e+09
+> [PM0:master_:(1) 48.000000] [msg_test/INFO] aTask remaining duration: 6.3e+09
+> [PM0:master_:(1) 49.000000] [msg_test/INFO] aTask remaining duration: 6.2e+09
+> [PM0:master_:(1) 50.000000] [msg_test/INFO] aTask remaining duration: 6.1e+09
+> [PM0:master_:(1) 51.000000] [msg_test/INFO] aTask remaining duration: 6e+09
+> [PM0:master_:(1) 52.000000] [msg_test/INFO] aTask remaining duration: 5.9e+09
+> [PM0:master_:(1) 53.000000] [msg_test/INFO] aTask remaining duration: 5.8e+09
+> [PM0:master_:(1) 54.000000] [msg_test/INFO] aTask remaining duration: 5.7e+09
+> [PM0:master_:(1) 55.000000] [msg_test/INFO] aTask remaining duration: 5.6e+09
+> [PM0:master_:(1) 56.000000] [msg_test/INFO] aTask remaining duration: 5.5e+09
+> [PM0:master_:(1) 57.000000] [msg_test/INFO] aTask remaining duration: 5.4e+09
+> [PM0:master_:(1) 58.000000] [msg_test/INFO] aTask remaining duration: 5.3e+09
+> [PM0:master_:(1) 59.000000] [msg_test/INFO] aTask remaining duration: 5.2e+09
+> [PM0:master_:(1) 60.000000] [msg_test/INFO] aTask remaining duration: 5.1e+09
+> [PM0:master_:(1) 61.000000] [msg_test/INFO] aTask remaining duration: 5e+09
+> [PM0:master_:(1) 62.000000] [msg_test/INFO] aTask remaining duration: 4.9e+09
+> [PM0:master_:(1) 63.000000] [msg_test/INFO] aTask remaining duration: 4.8e+09
+> [PM0:master_:(1) 64.000000] [msg_test/INFO] aTask remaining duration: 4.7e+09
+> [PM0:master_:(1) 65.000000] [msg_test/INFO] aTask remaining duration: 4.6e+09
+> [PM0:master_:(1) 66.000000] [msg_test/INFO] aTask remaining duration: 4.5e+09
+> [PM0:master_:(1) 67.000000] [msg_test/INFO] aTask remaining duration: 4.4e+09
+> [PM0:master_:(1) 68.000000] [msg_test/INFO] aTask remaining duration: 4.3e+09
+> [PM0:master_:(1) 69.000000] [msg_test/INFO] aTask remaining duration: 4.2e+09
+> [PM0:master_:(1) 70.000000] [msg_test/INFO] aTask remaining duration: 4.1e+09
+> [PM0:master_:(1) 71.000000] [msg_test/INFO] aTask remaining duration: 4e+09
+> [PM0:master_:(1) 72.000000] [msg_test/INFO] aTask remaining duration: 3.9e+09
+> [PM0:master_:(1) 73.000000] [msg_test/INFO] aTask remaining duration: 3.8e+09
+> [PM0:master_:(1) 74.000000] [msg_test/INFO] aTask remaining duration: 3.7e+09
+> [PM0:master_:(1) 75.000000] [msg_test/INFO] aTask remaining duration: 3.6e+09
+> [PM0:master_:(1) 76.000000] [msg_test/INFO] aTask remaining duration: 3.5e+09
+> [PM0:master_:(1) 77.000000] [msg_test/INFO] aTask remaining duration: 3.4e+09
+> [PM0:master_:(1) 78.000000] [msg_test/INFO] aTask remaining duration: 3.3e+09
+> [PM0:master_:(1) 79.000000] [msg_test/INFO] aTask remaining duration: 3.2e+09
+> [PM0:master_:(1) 80.000000] [msg_test/INFO] aTask remaining duration: 3.1e+09
+> [PM0:master_:(1) 81.000000] [msg_test/INFO] aTask remaining duration: 3e+09
+> [PM0:master_:(1) 82.000000] [msg_test/INFO] aTask remaining duration: 2.9e+09
+> [PM0:master_:(1) 83.000000] [msg_test/INFO] aTask remaining duration: 2.8e+09
+> [PM0:master_:(1) 84.000000] [msg_test/INFO] aTask remaining duration: 2.7e+09
+> [PM0:master_:(1) 85.000000] [msg_test/INFO] aTask remaining duration: 2.6e+09
+> [PM0:master_:(1) 86.000000] [msg_test/INFO] aTask remaining duration: 2.5e+09
+> [PM0:master_:(1) 87.000000] [msg_test/INFO] aTask remaining duration: 2.4e+09
+> [PM0:master_:(1) 88.000000] [msg_test/INFO] aTask remaining duration: 2.3e+09
+> [PM0:master_:(1) 89.000000] [msg_test/INFO] aTask remaining duration: 2.2e+09
+> [PM0:master_:(1) 90.000000] [msg_test/INFO] aTask remaining duration: 2.1e+09
+> [PM0:master_:(1) 91.000000] [msg_test/INFO] aTask remaining duration: 2e+09
+> [PM0:master_:(1) 92.000000] [msg_test/INFO] aTask remaining duration: 1.9e+09
+> [PM0:master_:(1) 93.000000] [msg_test/INFO] aTask remaining duration: 1.8e+09
+> [PM0:master_:(1) 94.000000] [msg_test/INFO] aTask remaining duration: 1.7e+09
+> [PM0:master_:(1) 95.000000] [msg_test/INFO] aTask remaining duration: 1.6e+09
+> [PM0:master_:(1) 96.000000] [msg_test/INFO] aTask remaining duration: 1.5e+09
+> [PM0:master_:(1) 97.000000] [msg_test/INFO] aTask remaining duration: 1.4e+09
+> [PM0:master_:(1) 98.000000] [msg_test/INFO] aTask remaining duration: 1.3e+09
+> [PM0:master_:(1) 99.000000] [msg_test/INFO] aTask remaining duration: 1.2e+09
+> [PM0:compute:(2) 111.000000] [msg_test/INFO] PM0:compute task 2 executed 100
+> [10100.000000] [msg_test/INFO] Bye (simulation time 10100)