gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r25889 - gnunet/src/testbed


From: gnunet
Subject: [GNUnet-SVN] r25889 - gnunet/src/testbed
Date: Thu, 24 Jan 2013 18:01:06 +0100

Author: harsha
Date: 2013-01-24 18:01:06 +0100 (Thu, 24 Jan 2013)
New Revision: 25889

Modified:
   gnunet/src/testbed/test_testbed_api_operations.c
Log:
test harder

Modified: gnunet/src/testbed/test_testbed_api_operations.c
===================================================================
--- gnunet/src/testbed/test_testbed_api_operations.c    2013-01-24 16:14:59 UTC 
(rev 25888)
+++ gnunet/src/testbed/test_testbed_api_operations.c    2013-01-24 17:01:06 UTC 
(rev 25889)
@@ -37,12 +37,12 @@
 /**
  * Queue A. Initially the max active is set to 2 and then reduced to 0 - this
  * should block op2 even after op1 has finished. Later the max active is set to
- * 1 and this should start op2
+ * 2 and this should start op2
  */
 struct OperationQueue *q1;
 
 /**
- * Queue B. Max active set to 1
+ * Queue B. Max active set to 2 is not changed throughout the test
  */
 struct OperationQueue *q2;
 
@@ -57,12 +57,39 @@
 struct GNUNET_TESTBED_Operation *op2;
 
 /**
- * This operation should go into both queues and should be started after op2 
has
- * been released.
+ * This operation should go into both queues and should consume 2 units of
+ * resources on both queues. Since op2 needs a resource from both queues and is
+ * queues before this operation, it will be blocked until op2 is released even
+ * though q1 has 
  */
 struct GNUNET_TESTBED_Operation *op3;
 
 /**
+ * Just like op3, this operation also consumes 2 units of resources on both
+ * queues. Since this is queued after op3 and both queues are at max active
+ * 2. This will be blocked until op3 is done.
+ */
+struct GNUNET_TESTBED_Operation *op4;
+
+/**
+ * This operation is started after op4 is released and should consume only 1
+ * resource on queue q1. It should be started along with op6 and op7
+ */
+struct GNUNET_TESTBED_Operation *op5;
+
+/**
+ * This operation is started after op4 is released and should consume only 1
+ * resource on q2. It should be started along with op5 and op7
+ */
+struct GNUNET_TESTBED_Operation *op6;
+
+/**
+ * This operation is started after op4 is released and should consume 1 
resource
+ * on both queues q1 and q1. It should be started along with op5 and op6
+ */
+struct GNUNET_TESTBED_Operation *op7;
+
+/**
  * The delay task identifier
  */
 GNUNET_SCHEDULER_TaskIdentifier step_task;
@@ -112,7 +139,37 @@
   /**
    * op3 has finished
    */
-  TEST_OP3_RELEASED
+  TEST_OP3_RELEASED,
+
+  /**
+   * op4 has started
+   */
+  TEST_OP4_STARTED,
+  
+  /**
+   * op4 has released
+   */
+  TEST_OP4_RELEASED,
+
+  /**
+   * op5, op6, op7 started
+   */
+  TEST_OP5_6_7_STARTED,
+
+  /**
+   * op5 has released
+   */
+  TEST_OP5_RELEASED,
+
+  /**
+   * op6 has released
+   */
+  TEST_OP6_RELEASED,
+
+  /**
+   * op7 has released
+   */
+  TEST_OP7_RELEASED
 };
 
 /**
@@ -159,14 +216,18 @@
   case TEST_OP1_STARTED:
     GNUNET_TESTBED_operation_release_ (op1);
     GNUNET_TESTBED_operation_queue_reset_max_active_ (q1, 0);
-    op3 = GNUNET_TESTBED_operation_create_ (&op3, &start_cb, &release_cb);    
-    GNUNET_TESTBED_operation_queue_insert_ (q1, op3);
-    GNUNET_TESTBED_operation_queue_insert_ (q2, op3);
+    op3 = GNUNET_TESTBED_operation_create_ (&op3, &start_cb, &release_cb);
+    GNUNET_TESTBED_operation_queue_insert2_ (q1, op3, 2);
+    GNUNET_TESTBED_operation_queue_insert2_ (q2, op3, 2);
     GNUNET_TESTBED_operation_begin_wait_ (op3);
+    op4 = GNUNET_TESTBED_operation_create_ (&op4, &start_cb, &release_cb);
+    GNUNET_TESTBED_operation_queue_insert2_ (q1, op4, 2);
+    GNUNET_TESTBED_operation_queue_insert2_ (q2, op4, 2);
+    GNUNET_TESTBED_operation_begin_wait_ (op4);
     break;
   case TEST_OP1_RELEASED:
     result = TEST_PAUSE;
-    GNUNET_TESTBED_operation_queue_reset_max_active_ (q1, 1);
+    GNUNET_TESTBED_operation_queue_reset_max_active_ (q1, 2);
     break;
   case TEST_OP2_STARTED:
     GNUNET_TESTBED_operation_release_ (op2);
@@ -174,6 +235,9 @@
   case TEST_OP3_STARTED:
     GNUNET_TESTBED_operation_release_ (op3);
     break;
+  case TEST_OP4_STARTED:
+    GNUNET_TESTBED_operation_release_ (op4);
+    break;
   default:
     GNUNET_assert (0);
   }
@@ -208,6 +272,26 @@
     GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == step_task);
     step_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &step, 
NULL);
     break;
+  case TEST_OP3_RELEASED:
+    GNUNET_assert (&op4 == cls);
+    result = TEST_OP4_STARTED;
+    GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == step_task);
+    step_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &step,
+                                              NULL);
+    break;
+  case TEST_OP4_RELEASED:
+    {
+      static int nops;
+      
+      nops++;
+      if (nops == 3)
+      {
+        result = TEST_OP5_6_7_STARTED;
+        GNUNET_TESTBED_operation_release_ (op5);
+        op5 = NULL;
+      }
+    }
+    break;
   default:
     GNUNET_assert (0);
   }
@@ -244,8 +328,40 @@
   case TEST_OP3_STARTED:
     GNUNET_assert (&op3 == cls);
     result = TEST_OP3_RELEASED;
+    GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == step_task);
+    break;
+  case TEST_OP4_STARTED:
+    GNUNET_assert (&op4 == cls);
+    result = TEST_OP4_RELEASED;
+    GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == step_task);
+    op5 = GNUNET_TESTBED_operation_create_ (&op5, &start_cb, &release_cb);
+    GNUNET_TESTBED_operation_queue_insert2_ (q1, op5, 1);
+    GNUNET_TESTBED_operation_begin_wait_ (op5);
+    op6 = GNUNET_TESTBED_operation_create_ (&op6, &start_cb, &release_cb);
+    GNUNET_TESTBED_operation_queue_insert2_ (q2, op6, 1);
+    GNUNET_TESTBED_operation_begin_wait_ (op6);
+    op7 = GNUNET_TESTBED_operation_create_ (&op7, &start_cb, &release_cb);
+    GNUNET_TESTBED_operation_queue_insert2_ (q1, op7, 1);
+    GNUNET_TESTBED_operation_queue_insert2_ (q2, op7, 1);
+    GNUNET_TESTBED_operation_begin_wait_ (op7);
+    break;
+  case TEST_OP5_6_7_STARTED:
+    result = TEST_OP5_RELEASED;
+    op5 = NULL;
+    GNUNET_TESTBED_operation_release_ (op6);
+    break;
+  case TEST_OP5_RELEASED:
+    op6 = NULL;
+    result = TEST_OP6_RELEASED;
+    GNUNET_TESTBED_operation_release_ (op7);
+    break;
+  case TEST_OP6_RELEASED:
+    result = TEST_OP7_RELEASED;
+    op7 = NULL;
     GNUNET_TESTBED_operation_queue_destroy_ (q1);
     GNUNET_TESTBED_operation_queue_destroy_ (q2);
+    q1 = NULL;
+    q2 = NULL;
     break;
   default:
     GNUNET_assert (0);
@@ -281,6 +397,7 @@
   result = TEST_INIT;
 }
 
+
 /**
  * Main function
  */
@@ -297,7 +414,7 @@
       GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1, argv2,
                           "test_testbed_api_operations", "nohelp", options,
                           &run, NULL);
-  if ((GNUNET_OK != ret) || (TEST_OP3_RELEASED != result))
+  if ((GNUNET_OK != ret) || (TEST_OP7_RELEASED != result))
     return 1;
   op1 = NULL;
   op2 = NULL;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]