+ MSG_vm_destroy(vm2);
+
+ XBT_INFO("### Put three VMs on a PM, and put a task to each VM");
+ vm0 = MSG_vm_create_core(pm2, "VM0");
+ vm1 = MSG_vm_create_core(pm2, "VM1");
+ vm2 = MSG_vm_create_core(pm2, "VM2");
+ MSG_vm_start(vm0);
+ MSG_vm_start(vm1);
+ MSG_vm_start(vm2);
+ run_test("( [X]1 [o]1 [o]1 )2", vm0, flop_amount*2/3);
+ run_test("( [o]1 [X]1 [o]1 )2", vm1, flop_amount*2/3);
+ run_test("( [o]1 [o]1 [X]1 )2", vm2, flop_amount*2/3);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+ MSG_vm_destroy(vm1);
+ MSG_vm_destroy(vm2);
+
+ XBT_INFO("## Test 6 (ended)");
+
+ XBT_INFO("# TEST ON TWO-CORE PMs AND TWO-CORE VMs");
+
+ XBT_INFO("## Test 7 (started): check impact of a single VM (there is no degradation for the moment)");
+
+ XBT_INFO("### Put a VM on a PM, and put a task to the VM");
+ vm0 = MSG_vm_create_multicore(pm2, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [X]2 )2", vm0, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put two tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm2, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [Xo]2 )2", vm0, flop_amount);
+ run_test("( [oX]2 )2", vm0, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put three tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm2, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [Xoo]2 )2", vm0, flop_amount*2/3);
+ run_test("( [oXo]2 )2", vm0, flop_amount*2/3);
+ run_test("( [ooX]2 )2", vm0, flop_amount*2/3);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("## Test 7 (ended)");
+
+ XBT_INFO("## Test 8 (started): check impact of a single VM collocated with a task (there is no degradation for the moment)");
+
+ XBT_INFO("### Put a VM on a PM, and put a task to the PM");
+ vm0 = MSG_vm_create_multicore(pm2, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [ ]2 X )2", pm2, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, put one task to the PM and one task to the VM");
+ vm0 = MSG_vm_create_multicore(pm2, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [o]2 X )2", pm2, flop_amount);
+ run_test("( [X]2 o )2", vm0, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, put one task to the PM and two tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm2, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [oo]2 X )2", pm2, flop_amount*2/3);
+ run_test("( [Xo]2 o )2", vm0, flop_amount*2/3);
+ run_test("( [oX]2 o )2", vm0, flop_amount*2/3);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, put one task to the PM and three tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm2, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [ooo]2 X )2", pm2, flop_amount*2/3);
+ run_test("( [Xoo]2 o )2", vm0, flop_amount*2/9);
+ run_test("( [oXo]2 o )2", vm0, flop_amount*2/9);
+ run_test("( [ooX]2 o )2", vm0, flop_amount*2/9);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put two tasks to the PM");
+ vm0 = MSG_vm_create_multicore(pm2, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [ ]2 Xo )2", pm2, flop_amount);
+ run_test("( [ ]2 oX )2", pm2, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, put one task to the PM and one task to the VM");
+ vm0 = MSG_vm_create_multicore(pm2, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [o]2 Xo )2", pm2, flop_amount*2/3);
+ run_test("( [o]2 oX )2", pm2, flop_amount*2/3);
+ run_test("( [X]2 oo )2", vm0, flop_amount*2/3);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, put one task to the PM and two tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm2, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [oo]2 Xo )2", pm2, flop_amount/2);
+ run_test("( [oo]2 oX )2", pm2, flop_amount/2);
+ run_test("( [Xo]2 oo )2", vm0, flop_amount/2);
+ run_test("( [oX]2 oo )2", vm0, flop_amount/2);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, put one task to the PM and three tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm2, "VM0", 2);
+ MSG_vm_start(vm0);
+ run_test("( [ooo]2 Xo )2", pm2, flop_amount*2/4);
+ run_test("( [ooo]2 oX )2", pm2, flop_amount*2/4);
+ run_test("( [Xoo]2 oo )2", vm0, flop_amount/3);
+ run_test("( [oXo]2 oo )2", vm0, flop_amount/3);
+ run_test("( [ooX]2 oo )2", vm0, flop_amount/3);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("## Test 8 (ended)");
+
+ XBT_INFO("# TEST ON FOUR-CORE PMs AND TWO-CORE VMs");
+
+ msg_host_t pm4 = MSG_host_by_name("node-0.4cores.org");
+ xbt_assert(pm4, "Host node-0.4cores.org does not seem to exist");
+
+ XBT_INFO("## Test 9 (started): check impact of a single VM");
+
+ XBT_INFO("### Put a VM on a PM, and put a task to the VM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0", 2);
+ MSG_vm_start(vm0);
+ run_test("( [X]2 )4", vm0, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put two tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [Xo]2 )4", vm0, flop_amount);
+ run_test("( [oX]2 )4", vm0, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### ( [ooo]2 )4: Put a VM on a PM, and put three tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [Xoo]2 )4", vm0, flop_amount*2/3);
+ run_test("( [oXo]2 )4", vm0, flop_amount*2/3);
+ run_test("( [ooX]2 )4", vm0, flop_amount*2/3);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("## Test 9 (ended)");
+
+ XBT_INFO("## Test 10 (started): check impact of a single emtpy VM collocated with tasks");
+
+ XBT_INFO("### Put a VM on a PM, and put a task to the PM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [ ]2 X )4", pm4, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put two tasks to the PM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [ ]2 Xo )4", pm4, flop_amount);
+ run_test("( [ ]2 oX )4", pm4, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put three tasks to the PM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [ ]2 Xoo )4", pm4, flop_amount);
+ run_test("( [ ]2 oXo )4", pm4, flop_amount);
+ run_test("( [ ]2 ooX )4", pm4, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put four tasks to the PM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [ ]2 Xooo )4", pm4, flop_amount);
+ run_test("( [ ]2 oXoo )4", pm4, flop_amount);
+ run_test("( [ ]2 ooXo )4", pm4, flop_amount);
+ run_test("( [ ]2 oooX )4", pm4, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("## Test 10 (ended)");
+
+ XBT_INFO("## Test 11 (started): check impact of a single working VM collocated with tasks");
+
+ XBT_INFO("### Put a VM on a PM, and put one task to the PM and one task to the VM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0", 2);
+ MSG_vm_start(vm0);
+ run_test("( [X]2 o )4", vm0, flop_amount);
+ run_test("( [o]2 X )4", pm4, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put two tasks to the PM and one task to the VM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [X]2 oo )4", vm0, flop_amount);
+ run_test("( [o]2 Xo )4", pm4, flop_amount);
+ run_test("( [o]2 oX )4", pm4, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put two tasks to the PM and two tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [Xo]2 oo )4", vm0, flop_amount);
+ run_test("( [oX]2 oo )4", vm0, flop_amount);
+ run_test("( [oo]2 Xo )4", pm4, flop_amount);
+ run_test("( [oo]2 oX )4", pm4, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put three tasks to the PM and one tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [X]2 ooo )4", vm0, flop_amount);
+ run_test("( [o]2 Xoo )4", pm4, flop_amount);
+ run_test("( [o]2 oXo )4", pm4, flop_amount);
+ run_test("( [o]2 ooX )4", pm4, flop_amount);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put three tasks to the PM and two tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [Xo]2 ooo )4", vm0, flop_amount*4/5);
+ run_test("( [oX]2 ooo )4", vm0, flop_amount*4/5);
+ run_test("( [oo]2 Xoo )4", pm4, flop_amount*4/5);
+ run_test("( [oo]2 oXo )4", pm4, flop_amount*4/5);
+ run_test("( [oo]2 ooX )4", pm4, flop_amount*4/5);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("### Put a VM on a PM, and put three tasks to the PM and three tasks to the VM");
+ vm0 = MSG_vm_create_multicore(pm4, "VM0",2);
+ MSG_vm_start(vm0);
+ run_test("( [Xoo]2 ooo )4", vm0, flop_amount*(8/5) * 1/3); // The VM has 8/5 of the PM
+ run_test("( [oXo]2 ooo )4", vm0, flop_amount*(8/5) * 1/3);
+ run_test("( [ooX]2 ooo )4", vm0, flop_amount*(8/5) * 1/3);
+
+ run_test("( [ooo]2 Xoo )4", pm4, flop_amount*4/5);
+ run_test("( [ooo]2 oXo )4", pm4, flop_amount*4/5);
+ run_test("( [ooo]2 ooX )4", pm4, flop_amount*4/5);
+ MSG_process_sleep(2);
+ MSG_vm_destroy(vm0);
+
+ XBT_INFO("## Test 11 (ended)");