Index: /trunk/src/VBox/ValidationKit/testmanager/batch/virtual_test_sheriff.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/batch/virtual_test_sheriff.py	(revision 62272)
+++ /trunk/src/VBox/ValidationKit/testmanager/batch/virtual_test_sheriff.py	(revision 62273)
@@ -141,4 +141,29 @@
         return self.isVBoxTest() \
            and self.oTestCase.sName.lower().startswith('install:');
+
+    def isVBoxUSBTest(self):
+        """ Test case classification: VirtualBox USB test. """
+        return self.isVBoxTest() \
+           and self.oTestCase.sName.lower().startswith('usb:');
+
+    def isVBoxStorageTest(self):
+        """ Test case classification: VirtualBox Storage test. """
+        return self.isVBoxTest() \
+           and self.oTestCase.sName.lower().startswith('storage:');
+
+    def isVBoxGAsTest(self):
+        """ Test case classification: VirtualBox Guest Additions test. """
+        return self.isVBoxTest() \
+           and self.oTestCase.sName.lower().startswith('ga\'s tests');
+
+    def isVBoxAPITest(self):
+        """ Test case classification: VirtualBox API test. """
+        return self.isVBoxTest() \
+           and self.oTestCase.sName.lower().startswith('api:');
+
+    def isVBoxBenchmarkTest(self):
+        """ Test case classification: VirtualBox Benchmark test. """
+        return self.isVBoxTest() \
+           and self.oTestCase.sName.lower().startswith('benchmark:');
 
     def isVBoxSmokeTest(self):
@@ -893,4 +918,11 @@
 
         #
+        # XPCOM screwup
+        #
+        if   sMainLog.find('AttributeError: \'NoneType\' object has no attribute \'addObserver\'') > 0:
+            oCaseFile.noteReason(self.ktReason_Buggy_Build_Broken_Build);
+            return self.caseClosed(oCaseFile);
+
+        #
         # Go thru each failed result.
         #
@@ -917,9 +949,4 @@
                or sResultLog.find('(len(self._asXml, asText))') > 0:
                 oCaseFile.noteReasonForId(self.ktReason_Ignore_Buggy_Test_Driver, oFailedResult.idTestResult);
-
-            if   sMainLog.find('AttributeError: \'NoneType\' object has no attribute \'addObserver\'') > 0 \
-              or sMainLog.find('Details: code NS_ERROR_INVALID_POINTER') > 0:
-                oCaseFile.noteReason(self.ktReason_Buggy_Build_Broken_Build);
-                return self.caseClosed(oCaseFile);
 
             else:
@@ -965,4 +992,5 @@
             oCaseFile = VirtualTestSheriffCaseFile(self, oTestSet, oTree, oBuild, oTestBox, oTestGroup, oTestCase);
 
+            self.dprint(u'usb = %s.' % (oCaseFile.isVBoxUSBTest()));
             if oTestSet.enmStatus == TestSetData.ksTestStatus_BadTestBox:
                 self.dprint(u'investigateBadTestBox is taking over %s.' % (oCaseFile.sLongName,));
@@ -976,4 +1004,24 @@
                 self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
                 fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = True);
+
+            elif oCaseFile.isVBoxUSBTest():
+                self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
+                fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = True);
+
+            elif oCaseFile.isVBoxStorageTest():
+                self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
+                fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = True);
+
+            elif oCaseFile.isVBoxGAsTest():
+                self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
+                fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = True);
+
+            elif oCaseFile.isVBoxAPITest():
+                self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
+                fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = True);
+
+            elif oCaseFile.isVBoxBenchmarkTest():
+                self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
+                fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = False);
 
             elif oCaseFile.isVBoxSmokeTest():
