Index: /trunk/src/VBox/ValidationKit/testdriver/base.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/base.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/testdriver/base.py	(revision 70521)
@@ -58,4 +58,8 @@
 except: __file__ = sys.argv[0];
 g_ksValidationKitDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)));
+
+# Python 3 hacks:
+if sys.version_info[0] >= 3:
+    long = int;     # pylint: disable=redefined-builtin,invalid-name
 
 
Index: /trunk/src/VBox/ValidationKit/testdriver/reporter.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/reporter.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/testdriver/reporter.py	(revision 70521)
@@ -393,9 +393,9 @@
             sLogDir = os.path.abspath(os.environ.get('TESTBOX_REPORTER_LOG_DIR', self.sDefLogDir));
             if not os.path.isdir(sLogDir):
-                os.makedirs(sLogDir, 0x1e8); # 0750 = 0x1e8
+                os.makedirs(sLogDir, 0o750);
         except:
             sLogDir = self.sDefLogDir;
             if not os.path.isdir(sLogDir):
-                os.makedirs(sLogDir, 0x1e8); # 0750 = 0x1e8
+                os.makedirs(sLogDir, 0o750);
 
         #
@@ -405,8 +405,8 @@
         self.sLogDir = sLogDir = os.path.join(sLogDir, '%s-%s' % (sTs, self.sName));
         try:
-            os.makedirs(self.sLogDir, 0x1e8); # 0750 = 0x1e8
+            os.makedirs(self.sLogDir, 0o750);
         except:
             self.sLogDir = '%s-%s' % (self.sLogDir, os.getpid());
-            os.makedirs(self.sLogDir, 0x1e8); # 0750 = 0x1e8
+            os.makedirs(self.sLogDir, 0o750);
 
         #
Index: /trunk/src/VBox/ValidationKit/testdriver/tst-txsclient.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/tst-txsclient.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/testdriver/tst-txsclient.py	(revision 70521)
@@ -42,4 +42,8 @@
 import testdriver.reporter as reporter
 from common import utils;
+
+# Python 3 hacks:
+if sys.version_info[0] >= 3:
+    long = int;     # pylint: disable=redefined-builtin,invalid-name
 
 g_cTests = 0;
@@ -60,5 +64,5 @@
     global g_cTests, g_cFailures;
     g_cTests = g_cTests + 1;
-    if isinstance(rc, basestring):
+    if utils.isString(rc):
         if rc == sExpect:
             return 'PASSED';
Index: /trunk/src/VBox/ValidationKit/testdriver/txsclient.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/txsclient.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/testdriver/txsclient.py	(revision 70521)
@@ -30,20 +30,25 @@
 
 # Standard Python imports.
-import array
-import errno
-import os
-import select
-import socket
-import threading
-import time
-import types
-import zlib
-import uuid
+import array;
+import errno;
+import os;
+import select;
+import socket;
+import sys;
+import threading;
+import time;
+import types;
+import zlib;
+import uuid;
 
 # Validation Kit imports.
-from common     import utils;
-from testdriver import base;
-from testdriver import reporter;
+from common             import utils;
+from testdriver         import base;
+from testdriver         import reporter;
 from testdriver.base    import TdTaskBase;
+
+# Python 3 hacks:
+if sys.version_info[0] >= 3:
+    long = int;     # pylint: disable=redefined-builtin,invalid-name
 
 #
@@ -118,8 +123,8 @@
     """Encodes the u32 value as a little endian byte (B) array."""
     return array.array('B', \
-                       (  u32             % 256, \
-                         (u32 / 256)      % 256, \
-                         (u32 / 65536)    % 256, \
-                         (u32 / 16777216) % 256) );
+                       (  u32              % 256, \
+                         (u32 // 256)      % 256, \
+                         (u32 // 65536)    % 256, \
+                         (u32 // 16777216) % 256) );
 
 
@@ -352,9 +357,12 @@
         for o in aoPayload:
             try:
-                if isinstance(o, basestring):
-                    # the primitive approach...
-                    sUtf8 = o.encode('utf_8');
-                    for i in range(0, len(sUtf8)):
-                        abPayload.append(ord(sUtf8[i]))
+                if utils.isString(o):
+                    if sys.version_info[0] >= 3:
+                        abPayload.extend(o.encode('utf_8'));
+                    else:
+                        # the primitive approach...
+                        sUtf8 = o.encode('utf_8');
+                        for i in range(0, len(sUtf8)):
+                            abPayload.append(ord(sUtf8[i]))
                     abPayload.append(0);
                 elif isinstance(o, types.LongType):
@@ -724,5 +732,5 @@
             aoPayload.append('%s' % (sPutEnv));
         for o in (oStdIn, oStdOut, oStdErr, oTestPipe):
-            if isinstance(o, basestring):
+            if utils.isString(o):
                 aoPayload.append(o);
             elif o is not None:
@@ -748,5 +756,5 @@
                 if     msPendingInputReply is None \
                    and oStdIn is not None \
-                   and not isinstance(oStdIn, basestring):
+                   and not utils.isString(oStdIn):
                     try:
                         sInput = oStdIn.read(65536);
@@ -910,5 +918,5 @@
         # Cleanup.
         for o in (oStdIn, oStdOut, oStdErr, oTestPipe):
-            if o is not None and not isinstance(o, basestring):
+            if o is not None and not utils.isString(o):
                 del o.uTxsClientCrc32;      # pylint: disable=E1103
                 # Make sure all files are closed
@@ -1084,6 +1092,9 @@
                 # Convert to array - this is silly!
                 abBuf = array.array('B');
-                for i, _ in enumerate(sRaw):
-                    abBuf.append(ord(sRaw[i]));
+                if utils.isString(sRaw):
+                    for i, _ in enumerate(sRaw):
+                        abBuf.append(ord(sRaw[i]));
+                else:
+                    abBuf.extend(sRaw);
                 sRaw = None;
 
@@ -1406,5 +1417,5 @@
     #
 
-    def asyncMkDir(self, sRemoteDir, fMode = 0700, cMsTimeout = 30000, fIgnoreErrors = False):
+    def asyncMkDir(self, sRemoteDir, fMode = 0o700, cMsTimeout = 30000, fIgnoreErrors = False):
         """
         Initiates a mkdir task.
@@ -1416,9 +1427,9 @@
         return self.startTask(cMsTimeout, fIgnoreErrors, "mkDir", self.taskMkDir, (sRemoteDir, long(fMode)));
 
-    def syncMkDir(self, sRemoteDir, fMode = 0700, cMsTimeout = 30000, fIgnoreErrors = False):
+    def syncMkDir(self, sRemoteDir, fMode = 0o700, cMsTimeout = 30000, fIgnoreErrors = False):
         """Synchronous version."""
         return self.asyncToSync(self.asyncMkDir, sRemoteDir, long(fMode), cMsTimeout, fIgnoreErrors);
 
-    def asyncMkDirPath(self, sRemoteDir, fMode = 0700, cMsTimeout = 30000, fIgnoreErrors = False):
+    def asyncMkDirPath(self, sRemoteDir, fMode = 0o700, cMsTimeout = 30000, fIgnoreErrors = False):
         """
         Initiates a mkdir -p task.
@@ -1430,5 +1441,5 @@
         return self.startTask(cMsTimeout, fIgnoreErrors, "mkDirPath", self.taskMkDirPath, (sRemoteDir, long(fMode)));
 
-    def syncMkDirPath(self, sRemoteDir, fMode = 0700, cMsTimeout = 30000, fIgnoreErrors = False):
+    def syncMkDirPath(self, sRemoteDir, fMode = 0o700, cMsTimeout = 30000, fIgnoreErrors = False):
         """Synchronous version."""
         return self.asyncToSync(self.asyncMkDirPath, sRemoteDir, long(fMode), cMsTimeout, fIgnoreErrors);
@@ -1659,13 +1670,15 @@
     def __isInProgressXcpt(self, oXcpt):
         """ In progress exception? """
+        reporter.log("oXcpt=%s" % (oXcpt)) ## TMP TMP
+        reporter.log("dir(oXcpt)=%s" % (dir(oXcpt))) ## TMP TMP
         try:
             if isinstance(oXcpt, socket.error):
                 try:
-                    if oXcpt[0] == errno.EINPROGRESS:
+                    if oXcpt.errno == errno.EINPROGRESS:
                         return True;
                 except: pass;
                 # Windows?
                 try:
-                    if oXcpt[0] == errno.EWOULDBLOCK:
+                    if oXcpt.errno == errno.EWOULDBLOCK:
                         return True;
                 except: pass;
@@ -1679,9 +1692,9 @@
             if isinstance(oXcpt, socket.error):
                 try:
-                    if oXcpt[0] == errno.EWOULDBLOCK:
+                    if oXcpt.errno == errno.EWOULDBLOCK:
                         return True;
                 except: pass;
                 try:
-                    if oXcpt[0] == errno.EAGAIN:
+                    if oXcpt.errno == errno.EAGAIN:
                         return True;
                 except: pass;
@@ -1695,9 +1708,9 @@
             if isinstance(oXcpt, socket.error):
                 try:
-                    if oXcpt[0] == errno.ECONNRESET:
+                    if oXcpt.errno == errno.ECONNRESET:
                         return True;
                 except: pass;
                 try:
-                    if oXcpt[0] == errno.ENETRESET:
+                    if oXcpt.errno == errno.ENETRESET:
                         return True;
                 except: pass;
Index: /trunk/src/VBox/ValidationKit/testdriver/vbox.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/vbox.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/testdriver/vbox.py	(revision 70521)
@@ -55,4 +55,8 @@
 from testdriver import vboxtestvms;
 
+# Python 3 hacks:
+if sys.version_info[0] >= 3:
+    xrange = range; # pylint: disable=redefined-builtin,invalid-name
+    long = int;     # pylint: disable=redefined-builtin,invalid-name
 
 #
@@ -2396,5 +2400,5 @@
             tsNow = datetime.datetime.now()
             tsDelta = tsNow - tsStart
-            if ((tsDelta.microseconds + tsDelta.seconds * 1000000) / 1000) > cMsTimeout:
+            if ((tsDelta.microseconds + tsDelta.seconds * 1000000) // 1000) > cMsTimeout:
                 if fErrorOnTimeout:
                     reporter.errorTimeout('Timeout while waiting for progress.')
Index: /trunk/src/VBox/ValidationKit/testdriver/vboxinstaller.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/vboxinstaller.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/testdriver/vboxinstaller.py	(revision 70521)
@@ -562,5 +562,5 @@
         if not os.path.exists(sMountPath):
             try:
-                os.mkdir(sMountPath, 0755);
+                os.mkdir(sMountPath, 0o755);
             except:
                 reporter.logXcpt();
Index: /trunk/src/VBox/ValidationKit/testdriver/vboxtestvms.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/vboxtestvms.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/testdriver/vboxtestvms.py	(revision 70521)
@@ -870,9 +870,9 @@
         oSet.aoTestVms.append(oTestVm);
 
-        ## NT 3.x
-        #oTestVm = TestVm(oSet, 'tst-nt310', sHd = '5.2/great-old-ones/t-nt310/t-nt310.vdi',
-        #                 sKind = 'WindowsNT3x', acCpusSup = [1],
-        #                 sHddControllerType = 'BusLogic SCSI Controller', sDvdControllerType = 'BusLogic SCSI Controller' );
-        #oSet.aoTestVms.append(oTestVm); ## @todo COM
+        # NT 3.x
+        oTestVm = TestVm(oSet, 'tst-nt310', sHd = '5.2/great-old-ones/t-nt310/t-nt310.vdi',
+                         sKind = 'WindowsNT3x', acCpusSup = [1],
+                         sHddControllerType = 'BusLogic SCSI Controller', sDvdControllerType = 'BusLogic SCSI Controller' );
+        oSet.aoTestVms.append(oTestVm); ## @todo COM
 
         # NT 4
@@ -986,9 +986,9 @@
         #oSet.aoTestVms.append(oTestVm);
 
-        ## NT 3.x
-        #oTestVm = TestVm(oSet, 'tst-nt310', sHd = '5.2/great-old-ones/t-nt310/t-nt310.vdi',
-        #                 sKind = 'WindowsNT3x', acCpusSup = [1],
-        #                 sHddControllerType = 'BusLogic SCSI Controller', sDvdControllerType = 'BusLogic SCSI Controller' );
-        #oSet.aoTestVms.append(oTestVm); ## @todo COM
+        # NT 3.x
+        oTestVm = TestVm(oSet, 'tst-nt310', sHd = '5.2/great-old-ones/t-nt310/t-nt310.vdi',
+                         sKind = 'WindowsNT3x', acCpusSup = [1],
+                         sHddControllerType = 'BusLogic SCSI Controller', sDvdControllerType = 'BusLogic SCSI Controller' );
+        oSet.aoTestVms.append(oTestVm); ## @todo COM
 
         # NT 4
Index: /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py	(revision 70521)
@@ -32,6 +32,7 @@
 
 # Standard Python imports.
-import os
-import socket
+import os;
+import socket;
+import sys;
 
 # Validation Kit imports.
@@ -480,8 +481,8 @@
                 if fErrorOnTimeout:
                     if fIgnoreErrors:
-                        reporter.log('Timing out after waiting for %u s on "%s" operation %d' \
+                        reporter.log('Timing out after waiting for %s s on "%s" operation %d' \
                                      % (cMsTimeout / 1000, self.sName, iOperation))
                     else:
-                        reporter.error('Timing out after waiting for %u s on "%s" operation %d' \
+                        reporter.error('Timing out after waiting for %s s on "%s" operation %d' \
                                        % (cMsTimeout / 1000, self.sName, iOperation))
                 return -1;
@@ -1544,7 +1545,9 @@
                 sHostIP = socket.gethostbyname(sHostName)
                 abHostIP = socket.inet_aton(sHostIP)
-                if   ord(abHostIP[0]) == 127 \
-                  or (ord(abHostIP[0]) == 169 and ord(abHostIP[1]) == 254) \
-                  or (ord(abHostIP[0]) == 192 and ord(abHostIP[1]) == 168 and ord(abHostIP[2]) == 56):
+                if sys.version_info[0] < 3:
+                    abHostIP = (ord(abHostIP[0]), ord(abHostIP[1]), ord(abHostIP[2]), ord(abHostIP[3]));
+                if   abHostIP[0] == 127 \
+                  or (abHostIP[0] == 169 and abHostIP[1] == 254) \
+                  or (abHostIP[0] == 192 and abHostIP[1] == 168 and abHostIP[2] == 56):
                     reporter.log('warning: host IP for "%s" is %s, most likely not unique.' % (sHostName, sHostIP))
             except:
@@ -1552,5 +1555,5 @@
                 return False
             sDefaultMac = '%02X%02X%02X%02X%02X%02X' \
-                % (0x02, ord(abHostIP[0]), ord(abHostIP[1]), ord(abHostIP[2]), ord(abHostIP[3]), iNic)
+                % (0x02, abHostIP[0], abHostIP[1], abHostIP[2], abHostIP[3], iNic)
             sMacAddr = sDefaultMac[0:(12 - cchMacAddr)] + sMacAddr
 
@@ -2833,5 +2836,5 @@
 
         oTxsSession = txsclient.tryOpenTcpSession(cMsTimeout, sHostname, fReversedSetup = fReversed,
-                                                  cMsIdleFudge = cMsTimeout / 2);
+                                                  cMsIdleFudge = cMsTimeout // 2);
         if oTxsSession is None:
             return False;
Index: /trunk/src/VBox/ValidationKit/testdriver/winbase.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/winbase.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/testdriver/winbase.py	(revision 70521)
@@ -32,6 +32,7 @@
 
 # Standard Python imports.
+import ctypes;
 import os;
-import ctypes;
+import sys;
 
 # Windows specific imports.
@@ -47,4 +48,7 @@
 from testdriver import reporter;
 
+# Python 3 hacks:
+if sys.version_info[0] >= 3:
+    long = int;             # pylint: disable=redefined-builtin,invalid-name
 
 
@@ -215,5 +219,5 @@
     except:
         reporter.logXcpt();
-    reporter.log2('processCreate -> %#x, hProcess=%#x' % (uPid, hProcess,));
+    reporter.log2('processCreate -> %#x, hProcess=%s %#x' % (uPid, hProcess, hProcess.handle,));
     return (uPid, hProcess, uTid);
 
@@ -225,5 +229,5 @@
         dwWait = win32event.WaitForSingleObject(hProcess, 0);                                       # pylint: disable=no-member
     except:
-        reporter.logXcpt('hProcess=%s %#x' % (hProcess, hProcess,));
+        reporter.logXcpt('hProcess=%s %#x' % (hProcess, hProcess.handle,));
         return True;
     return dwWait != win32con.WAIT_TIMEOUT; #0x102; #
@@ -237,5 +241,5 @@
         win32api.TerminateProcess(hProcess, 0x40010004); # DBG_TERMINATE_PROCESS                    # pylint: disable=no-member
     except:
-        reporter.logXcpt('hProcess=%s %#x' % (hProcess, hProcess,));
+        reporter.logXcpt('hProcess=%s %#x' % (hProcess, hProcess.handle,));
         return False;
     return True;
Index: /trunk/src/VBox/ValidationKit/tests/additions/tdAddGuestCtrl.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/additions/tdAddGuestCtrl.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/tests/additions/tdAddGuestCtrl.py	(revision 70521)
@@ -2589,8 +2589,8 @@
                   tdTestResult(fRc = False) ],
                 [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = 'xXx',
-                                      sDirectory = 'C:\\Windows', fMode = 0700),
+                                      sDirectory = 'C:\\Windows', fMode = 0o700),
                   tdTestResult(fRc = False) ],
                 [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = 'xxx',
-                                      sDirectory = 'C:\\Windows', fMode = 0700),
+                                      sDirectory = 'C:\\Windows', fMode = 0o700),
                   tdTestResult(fRc = False) ],
                 # More unusual stuff.
@@ -2630,17 +2630,17 @@
                 # [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = 'XXX',
                 #                       sDirectory = sScratch,
-                #                       fMode = 0700),
+                #                       fMode = 0o700),
                 #   tdTestResult(fRc = True) ],
                 # [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = 'XXX',
                 #                     sDirectory = sScratch,
-                #                     fMode = 0700),
+                #                     fMode = 0o700),
                 #   tdTestResult(fRc = True) ],
                 # [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = 'XXX',
                 #                       sDirectory = sScratch,
-                #                       fMode = 0755),
+                #                       fMode = 0o755),
                 #   tdTestResult(fRc = True) ],
                 # [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = 'XXX',
                 #                       sDirectory = sScratch,
-                #                       fMode = 0755),
+                #                       fMode = 0o755),
                 #   tdTestResult(fRc = True) ],
                 # Secure variants.
@@ -2659,17 +2659,17 @@
                 # [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = 'XXX',
                 #                       sDirectory = sScratch,
-                #                       fSecure = True, fMode = 0700),
+                #                       fSecure = True, fMode = 0o700),
                 #   tdTestResult(fRc = True) ],
                 # [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = 'XXX',
                 #                       sDirectory = sScratch,
-                #                       fSecure = True, fMode = 0700),
+                #                       fSecure = True, fMode = 0o700),
                 #   tdTestResult(fRc = True) ],
                 # [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = 'XXX',
                 #                       sDirectory = sScratch,
-                #                       fSecure = True, fMode = 0755),
+                #                       fSecure = True, fMode = 0o755),
                 #   tdTestResult(fRc = True) ],
                 # [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = 'XXX',
                 #                       sDirectory = sScratch,
-                #                       fSecure = True, fMode = 0755),
+                #                       fSecure = True, fMode = 0o755),
                 #   tdTestResult(fRc = True) ],
                 # Random stuff.
@@ -2677,13 +2677,13 @@
                 #                       sTemplate = "XXX-".join(random.choice(string.ascii_lowercase) for i in range(32)),
                 #                       sDirectory = sScratch,
-                #                       fSecure = True, fMode = 0755),
+                #                       fSecure = True, fMode = 0o755),
                 #   tdTestResult(fRc = True) ],
                 # [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = "".join('X' for i in range(32)),
                 #                       sDirectory = sScratch,
-                #                       fSecure = True, fMode = 0755),
+                #                       fSecure = True, fMode = 0o755),
                 #   tdTestResult(fRc = True) ],
                 # [ tdTestDirCreateTemp(sUser = sUser, sPassword = sPassword, sTemplate = "".join('X' for i in range(128)),
                 #                       sDirectory = sScratch,
-                #                       fSecure = True, fMode = 0755),
+                #                       fSecure = True, fMode = 0o755),
                 #   tdTestResult(fRc = True) ]
             # ]);
Index: /trunk/src/VBox/ValidationKit/tests/api/tdAppliance1.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/api/tdAppliance1.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/tests/api/tdAppliance1.py	(revision 70521)
@@ -175,5 +175,5 @@
         #
         try:
-            os.mkdir(sTmpDir, 0x1ed); # 0755 = 0x1ed
+            os.mkdir(sTmpDir, 0o755);
             oTarFile = tarfile.open(sOva, 'r:*');
             oTarFile.extractall(sTmpDir);
Index: /trunk/src/VBox/ValidationKit/tests/api/tdMoveMedium.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/api/tdMoveMedium.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/tests/api/tdMoveMedium.py	(revision 70521)
@@ -136,5 +136,5 @@
             sNewLoc = os.path.join(sOrigLoc, 'newLocation/')
 
-            os.makedirs(sNewLoc, 0775);
+            os.makedirs(sNewLoc, 0o775);
 
             aListOfAttach = oVM.getMediumAttachmentsOfController(sController)
Index: /trunk/src/VBox/ValidationKit/tests/storage/remoteexecutor.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/storage/remoteexecutor.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/tests/storage/remoteexecutor.py	(revision 70521)
@@ -246,5 +246,5 @@
         return sFileId;
 
-    def mkDir(self, sDir, fMode = 0700, cMsTimeout = 30000):
+    def mkDir(self, sDir, fMode = 0o700, cMsTimeout = 30000):
         """
         Creates a new directory at the given location.
Index: /trunk/src/VBox/ValidationKit/tests/storage/storagecfg.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/storage/storagecfg.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/tests/storage/storagecfg.py	(revision 70521)
@@ -319,5 +319,5 @@
                 sFdiskScript = ';\n'; # Single partition filling everything
                 if cbVol is not None:
-                    sFdiskScript = ',' + str(cbVol / 512) + '\n'; # Get number of sectors
+                    sFdiskScript = ',' + str(cbVol // 512) + '\n'; # Get number of sectors
                 fRc = oExec.execBinaryNoStdOut('sfdisk', ('--no-reread', '--wipe', 'always', '-q', '-f', sDiskPath), \
                                                sFdiskScript);
@@ -430,5 +430,5 @@
         if fRc:
             self.oStorOs = oStorOs;
-            if isinstance(oDiskCfg, basestring):
+            if utils.isString(oDiskCfg):
                 self.lstDisks = oStorOs.getDisksMatchingRegExp(oDiskCfg);
             else:
@@ -591,5 +591,5 @@
         return fRc;
 
-    def mkDirOnVolume(self, sMountPoint, sDir, fMode = 0700):
+    def mkDirOnVolume(self, sMountPoint, sDir, fMode = 0o700):
         """
         Creates a new directory on the volume pointed to by the given mount point.
Index: /trunk/src/VBox/ValidationKit/tests/storage/tdStorageBenchmark1.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/storage/tdStorageBenchmark1.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/tests/storage/tdStorageBenchmark1.py	(revision 70521)
@@ -1068,5 +1068,5 @@
                 if sMountPoint is not None:
                     # Create a directory where every normal user can write to.
-                    self.oStorCfg.mkDirOnVolume(sMountPoint, 'test', 0777);
+                    self.oStorCfg.mkDirOnVolume(sMountPoint, 'test', 0o777);
                     sDiskPath = sMountPoint + '/test';
                 else:
@@ -1312,5 +1312,5 @@
                         reporter.testFailure('Failed to prepare host storage');
                         fRc = False;
-                    self.oStorCfg.mkDirOnVolume(sMountPoint, 'test', 0777);
+                    self.oStorCfg.mkDirOnVolume(sMountPoint, 'test', 0o777);
                     sMountPoint = sMountPoint + '/test';
                     reporter.testDone();
Index: /trunk/src/VBox/ValidationKit/tests/unittests/tdUnitTest1.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/unittests/tdUnitTest1.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/tests/unittests/tdUnitTest1.py	(revision 70521)
@@ -507,5 +507,5 @@
         reporter.log('_hardenedMkDir: %s' % (sPath,));
         if utils.getHostOs() in [ 'win', 'os2' ]:
-            os.makedirs(sPath, 0755);
+            os.makedirs(sPath, 0o755);
         else:
             fRc = self._sudoExecuteSync(['/bin/mkdir', '-p', '-m', '0755', sPath]);
@@ -584,5 +584,5 @@
 
             sDst = os.path.join(sDstDir, os.path.basename(sFullPath));
-            self._hardenedCopyFile(sFullPath, sDst, 0755);
+            self._hardenedCopyFile(sFullPath, sDst, 0o755);
             asFilesToRemove.append(sDst);
 
@@ -592,5 +592,5 @@
                 if os.path.exists(sSrc):
                     sDst = os.path.join(sDstDir, os.path.basename(sSrc));
-                    self._hardenedCopyFile(sSrc, sDst, 0644);
+                    self._hardenedCopyFile(sSrc, sDst, 0o644);
                     asFilesToRemove.append(sDst);
 
@@ -602,5 +602,5 @@
                     if os.path.exists(sSrc):
                         sDst = os.path.join(sDstDir, os.path.basename(sSrc));
-                        self._hardenedCopyFile(sSrc, sDst, 0644);
+                        self._hardenedCopyFile(sSrc, sDst, 0o644);
                         asFilesToRemove.append(sDst);
 
Index: /trunk/src/VBox/ValidationKit/tests/usb/tdUsb1.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/usb/tdUsb1.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/tests/usb/tdUsb1.py	(revision 70521)
@@ -50,4 +50,9 @@
 # USB gadget control import
 import usbgadget;
+
+# Python 3 hacks:
+if sys.version_info[0] >= 3:
+    xrange = range; # pylint: disable=redefined-builtin,invalid-name
+
 
 class tdUsbBenchmark(vbox.TestDriver):                                      # pylint: disable=R0902
Index: /trunk/src/VBox/ValidationKit/tests/usb/tst-utsgadget.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/usb/tst-utsgadget.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/tests/usb/tst-utsgadget.py	(revision 70521)
@@ -40,4 +40,9 @@
 import testdriver.reporter as reporter
 
+# Python 3 hacks:
+if sys.version_info[0] >= 3:
+    long = int;     # pylint: disable=redefined-builtin,invalid-name
+
+
 g_cTests = 0;
 g_cFailures = 0
@@ -57,5 +62,5 @@
     global g_cTests, g_cFailures;
     g_cTests = g_cTests + 1;
-    if isinstance(rc, basestring):
+    if utils.isString(rc):
         if rc == sExpect:
             return 'PASSED';
Index: /trunk/src/VBox/ValidationKit/tests/usb/usbgadget.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/usb/usbgadget.py	(revision 70520)
+++ /trunk/src/VBox/ValidationKit/tests/usb/usbgadget.py	(revision 70521)
@@ -169,14 +169,14 @@
     """Encodes the u32 value as a little endian byte (B) array."""
     return array.array('B', \
-                       (  u32             % 256, \
-                         (u32 / 256)      % 256, \
-                         (u32 / 65536)    % 256, \
-                         (u32 / 16777216) % 256) );
+                       (  u32              % 256, \
+                         (u32 // 256)      % 256, \
+                         (u32 // 65536)    % 256, \
+                         (u32 // 16777216) % 256) );
 
 def u16ToByteArray(u16):
     """Encodes the u16 value as a little endian byte (B) array."""
     return array.array('B', \
-                       (  u16        % 256, \
-                         (u16 / 256) % 256) );
+                       (  u16         % 256, \
+                         (u16 // 256) % 256) );
 
 def u8ToByteArray(uint8):
@@ -444,5 +444,5 @@
         for o in aoPayload:
             try:
-                if isinstance(o, basestring):
+                if utils.isString(o):
                     # the primitive approach...
                     sUtf8 = o.encode('utf_8');
