REST: nothing triggers rest
[oweals/gnunet.git] / src / ats / test_ats_reservation_api.c
index e45ffe2cc49739e78d300114ecd9fd996079469e..e7791343e03cf736e286acd22dfde277c26c8930 100644 (file)
@@ -1,25 +1,25 @@
 /*
      This file is part of GNUnet.
-     Copyright (C) 2010-2015 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2010-2015 GNUnet e.V.
 
-     GNUnet is free software; you can redistribute it and/or modify
-     it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 3, or (at your
-     option) any later version.
+     GNUnet is free software: you can redistribute it and/or modify it
+     under the terms of the GNU Affero General Public License as published
+     by the Free Software Foundation, either version 3 of the License,
+     or (at your option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
      WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-     General Public License for more details.
+     Affero General Public License for more details.
+    
+     You should have received a copy of the GNU Affero General Public License
+     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-     You should have received a copy of the GNU General Public License
-     along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     SPDX-License-Identifier: AGPL3.0-or-later
 */
 /**
  * @file ats/test_ats_reservation_api.c
- * @brief test ATS
+ * @brief test ATS bandwidth reservation API
  * @author Christian Grothoff
  */
 #include "platform.h"
@@ -28,7 +28,7 @@
 /**
  * Global timeout for the testcase.
  */
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 3)
+#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 15)
 
 /**
  * Definition of the test as a sequence of commands.
@@ -44,7 +44,7 @@ static struct Command test_commands[] = {
       .session = 0,
       .properties = {
         /* use network with 65k quota! */
-        .scope = GNUNET_ATS_NET_WAN
+        .scope = GNUNET_NT_WAN
       }
     }
   },
@@ -63,36 +63,35 @@ static struct Command test_commands[] = {
       .add_label = "add-address-0-0"
     }
   },
-  /* 3: reserve 32k -- should work */
+  /* 3: sleep 7s, should give us 5s * 64k/s = 320k buffer;
+     Note that this depends on MAX_BANDWIDTH_CARRY_S.  We
+     sleep more than 5s to show that only MAX_BANDWIDTH carries. */
   {
-    .code = CMD_RESERVE_BANDWIDTH,
-    .label = "initial reservation",
-    .details.reserve_bandwidth = {
-      .pid = 0,
-      .amount = 32 * 1024,
-      .expected_result = GNUNET_OK
-    }
+    .code = CMD_SLEEP,
+    .label = "sleep",
+    .details.sleep.delay = { 7 * 1000LL * 1000LL }
   },
-  /* 4: reserve another 32k -- might work */
+  /* 4: reserve 128k -- should work (5s carry, so we had 320k) */
   {
     .code = CMD_RESERVE_BANDWIDTH,
     .details.reserve_bandwidth = {
       .pid = 0,
-      .amount = 32 * 1024,
-      .expected_result = GNUNET_NO
+      .amount = 128 * 1024,
+      .expected_result = GNUNET_YES
     }
   },
-  /* 5: reserve another 128k -- might work */
+  /* 5: reserve another 192k -- should just work (now exactly pushing the limit) */
   {
     .code = CMD_RESERVE_BANDWIDTH,
     .label = "big reservation",
     .details.reserve_bandwidth = {
       .pid = 0,
-      .amount = 128 * 1024,
-      .expected_result = GNUNET_NO
+      .amount = 192 * 1024,
+      .expected_result = GNUNET_YES
     }
   },
-  /* 6: reserve another 32k -- should now fail */
+  /* 6: reserve another 32k -- should now fail (if MAX_BANDWIDTH_CARRY_S
+     is precisely observed) */
   {
     .code = CMD_RESERVE_BANDWIDTH,
     .label = "failing reservation",
@@ -102,21 +101,37 @@ static struct Command test_commands[] = {
       .expected_result = GNUNET_SYSERR
     }
   },
-  /* 7: remove address */
+  /* 7: sleep 3s, should give us 3s * 64k/s - 32k = 160k buffer */
+  {
+    .code = CMD_SLEEP,
+    .label = "sleep",
+    .details.sleep.delay = { 6 * 1000LL * 1000LL }
+  },
+  /* 8: reserve another 160k -- should now work */
+  {
+    .code = CMD_RESERVE_BANDWIDTH,
+    .label = "successful final reservation",
+    .details.reserve_bandwidth = {
+      .pid = 0,
+      .amount = 160 * 1024,
+      .expected_result = GNUNET_YES
+    }
+  },
+  /* 9: remove address */
   {
     .code = CMD_DEL_ADDRESS,
     .details.del_address = {
       .add_label = "add-address-0-0"
     }
   },
-  /* 8: check we got disconnected */
+  /* 10: check we got disconnected */
   {
     .code = CMD_AWAIT_DISCONNECT_SUGGESTION,
     .details.await_disconnect_suggestion = {
       .pid = 0
     }
   },
-  /* 9: just for symmetry, also stop asking for the connection */
+  /* 11: just for symmetry, also stop asking for the connection */
   {
     .code = CMD_REQUEST_CONNECTION_STOP,
     .details.request_connection_stop = {