Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove attribute amount from structure task
[simgrid.git] / examples / simdag / sd_test.c
index 0d901b4..e9e9a31 100644 (file)
@@ -10,7 +10,7 @@ int main(int argc, char **argv) {
 
   if (argc < 2) {
      printf ("Usage: %s platform_file\n", argv[0]);
-     printf ("example: %s msg_platform.xml\n", argv[0]);
+     printf ("example: %s sd_platform.xml\n", argv[0]);
      exit(1);
   }
 
@@ -19,53 +19,17 @@ int main(int argc, char **argv) {
   SD_create_environment(platform_file);
 
   /* creation of the tasks and their dependencies */
-  SD_task_t taskA = SD_task_create("Task A", NULL, 10.0);
-  SD_task_t taskB = SD_task_create("Task B", NULL, 40.0);
-  SD_task_t taskC = SD_task_create("Task C", NULL, 30.0);
-  SD_task_t taskD = SD_task_create("Task D", NULL, 60.0);
+  SD_task_t taskA = SD_task_create("Task A", NULL);
+  SD_task_t taskB = SD_task_create("Task B", NULL);
+  SD_task_t taskC = SD_task_create("Task C", NULL);
+  SD_task_t taskD = SD_task_create("Task D", NULL);
   
-
   SD_task_dependency_add(NULL, NULL, taskB, taskA);
   SD_task_dependency_add(NULL, NULL, taskC, taskA);
   SD_task_dependency_add(NULL, NULL, taskD, taskB);
   SD_task_dependency_add(NULL, NULL, taskD, taskC);
   /*  SD_task_dependency_add(NULL, NULL, taskA, taskD); /\* deadlock */
 
-/*   xbt_ex_t ex; */
-
-/*   TRY { */
-/*     SD_task_dependency_add(NULL, NULL, taskA, taskA); /\* shouldn't work and must raise an exception *\/ */
-/*     xbt_assert0(0, "Hey, I can add a dependency between Task A and Task A!"); */
-/*   } */
-/*   CATCH (ex) { */
-/*   } */
-  
-/*   TRY { */
-/*     SD_task_dependency_add(NULL, NULL, taskA, taskB); /\* shouldn't work and must raise an exception *\/ */
-/*     xbt_assert0(0, "Oh oh, I can add an already existing dependency!"); */
-/*   } */
-/*   CATCH (ex) { */
-/*   } */
-
-/*   SD_task_dependency_remove(taskA, taskB); */
-
-/*   TRY { */
-/*     SD_task_dependency_remove(taskC, taskA); /\* shouldn't work and must raise an exception *\/ */
-/*     xbt_assert0(0, "Dude, I can remove an unknown dependency!"); */
-/*   } */
-/*   CATCH (ex) { */
-/*   } */
-
-/*   TRY { */
-/*     SD_task_dependency_remove(taskC, taskC); /\* shouldn't work and must raise an exception *\/ */
-/*     xbt_assert0(0, "Wow, I can remove a dependency between Task C and itself!"); */
-/*   } */
-/*   CATCH (ex) { */
-/*   } */
-
-
-  /* if everything is ok, no exception is forwarded or rethrown by main() */
-
   /* watch points */
   /*  SD_task_watch(taskB, SD_DONE);*/
 
@@ -91,25 +55,43 @@ int main(int argc, char **argv) {
   SD_task_schedule(taskD, workstation_number, workstation_list,
                   computation_amount, communication_amount, rate);
 
-  printf("Launching simulation...\n");
-  SD_task_t *changed_tasks = SD_simulate(100);
-  int i = 0;
+  SD_task_watch(taskC, SD_DONE);
+
+  SD_task_t *changed_tasks;
+  int i;
+
+  changed_tasks = SD_simulate(100);
   
-  printf("Simulation results:\n");
-  while(changed_tasks[i] != NULL) {
-    switch (SD_task_get_state(changed_tasks[i])) {
-    case SD_DONE:
-      printf("%s is done.\n", SD_task_get_name(changed_tasks[i]));
-      break;
-    case SD_FAILED:
-      printf("%s is failed.\n", SD_task_get_name(changed_tasks[i]));
-      break;
-    default:
-      printf("Unknown status for %s\n", SD_task_get_name(changed_tasks[i]));
-      break;
+  while (changed_tasks[0] != NULL) {
+    printf("Tasks whose state has changed:\n");
+    i = 0;
+    while(changed_tasks[i] != NULL) {
+      switch (SD_task_get_state(changed_tasks[i])) {
+      case SD_SCHEDULED:
+       printf("%s is scheduled.\n", SD_task_get_name(changed_tasks[i]));
+       break;
+      case SD_READY:
+       printf("%s is ready.\n", SD_task_get_name(changed_tasks[i]));
+       break;
+      case SD_RUNNING:
+       printf("%s is running.\n", SD_task_get_name(changed_tasks[i]));
+       break;
+      case SD_DONE:
+       printf("%s is done.\n", SD_task_get_name(changed_tasks[i]));
+       break;
+      case SD_FAILED:
+       printf("%s is failed.\n", SD_task_get_name(changed_tasks[i]));
+       break;
+      default:
+       printf("Unknown status for %s\n", SD_task_get_name(changed_tasks[i]));
+       break;
+      }
+      i++;
     }
-    i++;
+    free(changed_tasks);
+    changed_tasks = SD_simulate(100);
   }
+
   free(changed_tasks);
 
   SD_task_destroy(taskA);