Index: /trunk/src/VBox/ValidationKit/testmanager/config.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/config.py	(revision 61508)
+++ /trunk/src/VBox/ValidationKit/testmanager/config.py	(revision 61509)
@@ -8,5 +8,5 @@
 __copyright__ = \
 """
-Copyright (C) 2012-2015 Oracle Corporation
+Copyright (C) 2012-2016 Oracle Corporation
 
 This file is part of VirtualBox Open Source Edition (OSE), as
@@ -93,8 +93,18 @@
 
 
+## @name Scheduling parameters
+## @{
+
 ## The time to wait for a gang to gather (in seconds).
-g_kcSecGangGathering    = 600;
+g_kcSecGangGathering                    = 600;
 ## The max time allowed to spend looking for a new task (in seconds).
-g_kcSecMaxNewTask       = 60;
+g_kcSecMaxNewTask                       = 60;
+## Minimum time since last task started.
+g_kcSecMinSinceLastTask                 = 120; # (2 min)
+## Minimum time since last failed task.
+g_kcSecMinSinceLastFailedTask           = 180; # (3 min)
+
+## @}
+
 
 
Index: /trunk/src/VBox/ValidationKit/testmanager/core/testboxcontroller.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/core/testboxcontroller.py	(revision 61508)
+++ /trunk/src/VBox/ValidationKit/testmanager/core/testboxcontroller.py	(revision 61509)
@@ -568,6 +568,7 @@
         # If idling and enabled try schedule a new task.
         #
-        if fIdle \
+        if    fIdle \
           and oTestBoxData.fEnabled \
+          and not TestSetLogic(oDb).isTestBoxExecutingToRapidly(oTestBoxData.idTestBox) \
           and oStatusData.enmState == TestBoxStatusData.ksTestBoxState_Idle: # (paranoia)
             dResponse = SchedulerBase.scheduleNewTask(oDb, oTestBoxData, oStatusData.iWorkItem, self._oSrvGlue.getBaseUrl());
Index: /trunk/src/VBox/ValidationKit/testmanager/core/testset.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/core/testset.py	(revision 61508)
+++ /trunk/src/VBox/ValidationKit/testmanager/core/testset.py	(revision 61509)
@@ -711,4 +711,30 @@
         return aoRet;
 
+    def isTestBoxExecutingToRapidly(self, idTestBox):
+        """
+        Checks whether the specified test box is executing tests too rapidly.
+
+        The parameters defining too rapid execution are defined in config.py.
+
+        Returns True if it does, False if it doesn't.
+        May raise database problems.
+        """
+
+        self._oDb.execute('(\n'
+                          'SELECT   tsCreated\n'
+                          'FROM     TestSets\n'
+                          'WHERE    idTestBox = %s\n'
+                          '     AND tsCreated >= (CURRENT_TIMESTAMP - interval \'%s seconds\')\n'
+                          ') UNION (\n'
+                          'SELECT   tsCreated\n'
+                          'FROM     TestSets\n'
+                          'WHERE    idTestBox = %s\n'
+                          '     AND tsCreated >= (CURRENT_TIMESTAMP - interval \'%s seconds\')\n'
+                          '     AND enmStatus >= \'failure\'\n'
+                          ')'
+                          , ( idTestBox, config.g_kcSecMinSinceLastTask,
+                              idTestBox, config.g_kcSecMinSinceLastFailedTask, ));
+        return self._oDb.getRowCount() > 0;
+
 
     #
