Index: trunk/src/VBox/ValidationKit/testdriver/base.py
===================================================================
--- trunk/src/VBox/ValidationKit/testdriver/base.py	(revision 70516)
+++ trunk/src/VBox/ValidationKit/testdriver/base.py	(revision 70517)
@@ -40,5 +40,6 @@
 import sys
 import time
-import thread
+if sys.version_info[0] < 3: import thread;            # pylint: disable=import-error
+else:                       import _thread as thread; # pylint: disable=import-error
 import threading
 import traceback
@@ -133,5 +134,5 @@
                 raise GenError('the value of env.var. "%s" is not a dir: "%s"' % (sVar, sVal));
             try:
-                os.makedirs(sVal, 0700);
+                os.makedirs(sVal, 0o700);
             except:
                 reporter.error('makedirs failed on the value of env.var. "%s": "%s"' % (sVar, sVal));
@@ -814,5 +815,5 @@
             self.sScratchPath = os.path.abspath(os.path.join(sTmpDir, 'VBoxTestTmp'));
             if not os.path.isdir(self.sScratchPath):
-                os.makedirs(self.sScratchPath, 0700);
+                os.makedirs(self.sScratchPath, 0o700);
         os.environ['TESTBOX_PATH_SCRATCH'] = self.sScratchPath;
 
@@ -859,25 +860,4 @@
         os.environ['IPRT_TMPDIR'] = self.sScratchPath; # IPRT/VBox specific.
 
-
-    def dump(self):
-        """
-        For debugging. --> __str__?
-        """
-        print >> sys.stderr, "testdriver.base: sBinPath          = '%s'" % self.sBinPath;
-        print >> sys.stderr, "testdriver.base: sScriptPath       = '%s'" % self.sScriptPath;
-        print >> sys.stderr, "testdriver.base: sScratchPath      = '%s'" % self.sScratchPath;
-        print >> sys.stderr, "testdriver.base: sTestBoxName      = '%s'" % self.sTestBoxName;
-        print >> sys.stderr, "testdriver.base: sBuildPath        = '%s'" % self.sBuildPath;
-        print >> sys.stderr, "testdriver.base: sResourcePath     = '%s'" % self.sResourcePath;
-        print >> sys.stderr, "testdriver.base: sUploadPath       = '%s'" % self.sUploadPath;
-        print >> sys.stderr, "testdriver.base: sTestSetId        = '%s'" % self.sTestSetId;
-        print >> sys.stderr, "testdriver.base: sHost             = '%s'" % self.sHost;
-        print >> sys.stderr, "testdriver.base: sHostArch         = '%s'" % self.sHostArch;
-        print >> sys.stderr, "testdriver.base: asSpecialActions  = '%s'" % self.asSpecialActions;
-        print >> sys.stderr, "testdriver.base: asNormalActions   = '%s'" % self.asNormalActions;
-        print >> sys.stderr, "testdriver.base: asActions         = '%s'" % self.asActions;
-        print >> sys.stderr, "testdriver.base: secTimeoutAbs     = '%s'" % self.secTimeoutAbs;
-        for sVar in sorted(os.environ):
-            print >> sys.stderr, "os.environ[%s] = '%s'" % (sVar, os.environ[sVar],);
 
     #
Index: trunk/src/VBox/ValidationKit/testdriver/btresolver.py
===================================================================
--- trunk/src/VBox/ValidationKit/testdriver/btresolver.py	(revision 70516)
+++ trunk/src/VBox/ValidationKit/testdriver/btresolver.py	(revision 70517)
@@ -539,5 +539,5 @@
         if not os.path.exists(self.sScratchDbgPath):
             try:
-                os.makedirs(self.sScratchDbgPath, 0750);
+                os.makedirs(self.sScratchDbgPath, 0o750);
             except:
                 fRc = False;
Index: trunk/src/VBox/ValidationKit/testdriver/reporter.py
===================================================================
--- trunk/src/VBox/ValidationKit/testdriver/reporter.py	(revision 70516)
+++ trunk/src/VBox/ValidationKit/testdriver/reporter.py	(revision 70517)
@@ -6,4 +6,6 @@
 Testdriver reporter module.
 """
+
+from __future__ import print_function;
 
 __copyright__ = \
@@ -413,5 +415,8 @@
         sLogName = os.path.join(self.sLogDir, 'testsuite.log');
         sTsIso = utils.getIsoTimestamp();
-        self.oLogFile = utils.openNoInherit(sLogName, "w");
+        if sys.version_info[0] >= 3: # Add 'b' to prevent write taking issue with encode('utf-8') not returning a string.
+            self.oLogFile = utils.openNoInherit(sLogName, "wb");
+        else:
+            self.oLogFile = utils.openNoInherit(sLogName, "w");
         self.oLogFile.write(('Created log file at %s.\nRunning: %s' % (sTsIso, sys.argv)).encode('utf-8'));
 
@@ -424,5 +429,8 @@
         #
         sXmlName = os.path.join(self.sLogDir, 'testsuite.xml');
-        self.oXmlFile = utils.openNoInherit(sXmlName, "w");
+        if sys.version_info[0] >= 3: # Add 'b' to prevent write taking issue with encode('utf-8') not returning a string.
+            self.oXmlFile = utils.openNoInherit(sXmlName, "wb");
+        else:
+            self.oXmlFile = utils.openNoInherit(sXmlName, "w");
         self._xmlWrite([ '<?xml version="1.0" encoding="UTF-8" ?>',
                          '<Test timestamp="%s" name="%s">' % (sTsIso, self._xmlEscAttr(self.sName),), ],
@@ -500,7 +508,7 @@
             sAscii = sLogText.encode('ascii', 'replace');
             if self.iDebug == 0:
-                print >> self.oStdErr, '%s: %s' % (self.sName, sAscii)
+                print('%s: %s' % (self.sName, sAscii), file = self.oStdErr);
             else:
-                print >> self.oStdErr, '%s' % (sAscii)
+                print('%s' % (sAscii), file = self.oStdErr);
             sLogText += '\n';
             try:
@@ -698,5 +706,5 @@
     def _writeOutput(self, sText):
         """ Does the actual writing and flushing. """
-        print >> self.oOutput, sText.encode('ascii', 'replace');
+        print(sText.encode('ascii', 'replace'), file = self.oOutput);
         if self.fFlushEachLine: self.oOutput.flush();
         return None;
@@ -1727,5 +1735,5 @@
         g_oReporter = RemoteReporter(); # Correct, but still plain stupid. pylint: disable=redefined-variable-type
     else:
-        print >> sys.stderr, os.path.basename(__file__) + ": Unknown TESTBOX_REPORTER value: '" + g_sReporterName + "'";
+        print(os.path.basename(__file__) + ": Unknown TESTBOX_REPORTER value: '" + g_sReporterName + "'", file = sys.stderr);
         raise Exception("Unknown TESTBOX_REPORTER value '" + g_sReporterName + "'");
 
Index: trunk/src/VBox/ValidationKit/testdriver/tst-txsclient.py
===================================================================
--- trunk/src/VBox/ValidationKit/testdriver/tst-txsclient.py	(revision 70516)
+++ trunk/src/VBox/ValidationKit/testdriver/tst-txsclient.py	(revision 70517)
@@ -5,4 +5,6 @@
 Simple testcase for txsclient.py.
 """
+
+from __future__ import print_function;
 
 __copyright__ = \
@@ -91,8 +93,8 @@
             i = i + 1;
         elif asArgs[i] == '--help':
-            print 'tst-txsclient.py [--hostname <addr|name>] [--port <num>] [--timeout <cMS>] [--reboot] [--reversed-setup]'
+            print('tst-txsclient.py [--hostname <addr|name>] [--port <num>] [--timeout <cMS>] [--reboot] [--reversed-setup]');
             return 0;
         else:
-            print 'Unknown argument: %s' % (asArgs[i]);
+            print('Unknown argument: %s' % (asArgs[i]));
             return 2;
 
@@ -102,9 +104,9 @@
         oSession = txsclient.openTcpSession(cMsTimeout, sAddress, uPort = uPort, fReversedSetup = fReversedSetup);
     if oSession is None:
-        print 'openTcpSession failed';
+        print('openTcpSession failed');
         return 1;
 
     fDone = oSession.waitForTask(30*1000);
-    print 'connect: waitForTask -> %s, result %s' % (fDone, oSession.getResult());
+    print('connect: waitForTask -> %s, result %s' % (fDone, oSession.getResult()));
     if fDone is True and oSession.isSuccess():
         if fStdTests:
@@ -112,61 +114,61 @@
             sUuid = oSession.syncUuid();
             if sUuid is not False:
-                print '%s: UUID = %s' % (boolRes(True), sUuid);
+                print('%s: UUID = %s' % (boolRes(True), sUuid));
             else:
-                print '%s: UUID' % (boolRes(False),);
+                print('%s: UUID' % (boolRes(False),));
 
             # Create and remove a directory on the scratch area.
             rc = oSession.syncMkDir('${SCRATCH}/testdir1');
-            print '%s: MKDIR(${SCRATCH}/testdir1) -> %s' % (boolRes(rc), rc);
+            print('%s: MKDIR(${SCRATCH}/testdir1) -> %s' % (boolRes(rc), rc));
 
             rc = oSession.syncIsDir('${SCRATCH}/testdir1');
-            print '%s: ISDIR(${SCRATCH}/testdir1) -> %s' % (boolRes(rc), rc);
+            print('%s: ISDIR(${SCRATCH}/testdir1) -> %s' % (boolRes(rc), rc));
 
             rc = oSession.syncRmDir('${SCRATCH}/testdir1');
-            print '%s: RMDIR(${SCRATCH}/testdir1) -> %s' % (boolRes(rc), rc);
+            print('%s: RMDIR(${SCRATCH}/testdir1) -> %s' % (boolRes(rc), rc));
 
             # Create a two-level subdir.
             rc = oSession.syncMkDirPath('${SCRATCH}/testdir2/subdir1');
-            print '%s: MKDRPATH(${SCRATCH}/testdir2/subdir1) -> %s' % (boolRes(rc), rc);
+            print('%s: MKDRPATH(${SCRATCH}/testdir2/subdir1) -> %s' % (boolRes(rc), rc));
 
             rc = oSession.syncIsDir('${SCRATCH}/testdir2');
-            print '%s: ISDIR(${SCRATCH}/testdir2) -> %s' % (boolRes(rc), rc);
+            print('%s: ISDIR(${SCRATCH}/testdir2) -> %s' % (boolRes(rc), rc));
             rc = oSession.syncIsDir('${SCRATCH}/testdir2/');
-            print '%s: ISDIR(${SCRATCH}/testdir2/) -> %s' % (boolRes(rc), rc);
+            print('%s: ISDIR(${SCRATCH}/testdir2/) -> %s' % (boolRes(rc), rc));
             rc = oSession.syncIsDir('${SCRATCH}/testdir2/subdir1');
-            print '%s: ISDIR(${SCRATCH}/testdir2/subdir1) -> %s' % (boolRes(rc), rc);
+            print('%s: ISDIR(${SCRATCH}/testdir2/subdir1) -> %s' % (boolRes(rc), rc));
 
             rc = oSession.syncRmTree('${SCRATCH}/testdir2');
-            print '%s: RMTREE(${SCRATCH}/testdir2) -> %s' % (boolRes(rc), rc);
+            print('%s: RMTREE(${SCRATCH}/testdir2) -> %s' % (boolRes(rc), rc));
 
             # Check out a simple file.
             rc = oSession.syncUploadString('howdy', '${SCRATCH}/howdyfile');
-            print '%s: PUT FILE(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc), rc);
+            print('%s: PUT FILE(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc), rc));
 
             rc = oSession.syncUploadString('howdy-replaced', '${SCRATCH}/howdyfile');
-            print '%s: PUT FILE(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc), rc);
+            print('%s: PUT FILE(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc), rc));
 
             rc = oSession.syncDownloadString('${SCRATCH}/howdyfile');
-            print '%s: GET FILE(${SCRATCH}/howdyfile) -> "%s" expected "howdy-replaced"' % (stringRes(rc, 'howdy-replaced'), rc);
+            print('%s: GET FILE(${SCRATCH}/howdyfile) -> "%s" expected "howdy-replaced"' % (stringRes(rc, 'howdy-replaced'), rc));
 
             rc = oSession.syncIsFile('${SCRATCH}/howdyfile');
-            print '%s: ISFILE(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc), rc);
+            print('%s: ISFILE(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc), rc));
             rc = oSession.syncIsDir('${SCRATCH}/howdyfile');
-            print '%s: ISDIR(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc, False), rc);
+            print('%s: ISDIR(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc, False), rc));
             rc = oSession.syncIsSymlink('${SCRATCH}/howdyfile');
-            print '%s: ISSYMLNK(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc, False), rc);
+            print('%s: ISSYMLNK(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc, False), rc));
 
             rc = oSession.syncRmFile('${SCRATCH}/howdyfile');
-            print '%s: RMFILE(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc), rc);
+            print('%s: RMFILE(${SCRATCH}/howdyfile) -> %s' % (boolRes(rc), rc));
 
             # Unicode filename (may or may not work, LANG/LC_TYPE dependent on some hosts).
             rc = oSession.syncUploadString('howdy', u'${SCRATCH}/Schröder');
-            print (u'%s: PUT FILE(${SCRATCH}/Schröder) -> %s' % (boolRes(rc), rc)).encode('ascii', 'replace');
+            print((u'%s: PUT FILE(${SCRATCH}/Schröder) -> %s' % (boolRes(rc), rc)).encode('ascii', 'replace'));
 
             rc = oSession.syncIsFile(u'${SCRATCH}/Schröder');
-            print (u'%s: ISFILE(${SCRATCH}/Schröder) -> %s' % (boolRes(rc), rc)).encode('ascii', 'replace');
+            print((u'%s: ISFILE(${SCRATCH}/Schröder) -> %s' % (boolRes(rc), rc)).encode('ascii', 'replace'));
 
             rc = oSession.syncRmFile(u'${SCRATCH}/Schröder');
-            print (u'%s: RMFILE(${SCRATCH}/Schröder) -> %s' % (boolRes(rc), rc)).encode('ascii', 'replace');
+            print((u'%s: RMFILE(${SCRATCH}/Schröder) -> %s' % (boolRes(rc), rc)).encode('ascii', 'replace'));
 
             # Finally, some file uploading and downloading with unicode filenames.
@@ -176,5 +178,5 @@
                 abRandFile = os.urandom(257897);
             except:
-                print 'INFO: no urandom... falling back on a simple string.'
+                print('INFO: no urandom... falling back on a simple string.');
                 abRandFile = 'asdflkjasdlfkjasdlfkjq023942relwjgkna9epr865u2nm345;hndafgoukhasre5kb2453km';
                 for i in range(1, 64):
@@ -202,14 +204,14 @@
                     oLocalFile.close();
                     if abRandFile == abDwnFile:
-                        print '%s: downloaded file matches the uploaded file' % (boolRes(True),);
+                        print('%s: downloaded file matches the uploaded file' % (boolRes(True),));
                     else:
-                        print '%s: downloaded file does not match the uploaded file' % (boolRes(False),);
-                        print 'abRandFile=%s' % (abRandFile,);
-                        print 'abDwnFile =%s' % (abRandFile,);
+                        print('%s: downloaded file does not match the uploaded file' % (boolRes(False),));
+                        print('abRandFile=%s' % (abRandFile,));
+                        print('abDwnFile =%s' % (abRandFile,));
                 except:
-                    print '%s: reading downloaded file (%s) failed....' % (boolRes(False), strDwnFile);
+                    print('%s: reading downloaded file (%s) failed....' % (boolRes(False), strDwnFile));
 
                 rc = oSession.syncRmFile(u'${SCRATCH}/tst-txsclient-uploaded.bin');
-                print '%s: RMFILE(${SCRATCH}/tst-txsclient-uploaded.bin) -> %s' % (boolRes(rc), rc);
+                print('%s: RMFILE(${SCRATCH}/tst-txsclient-uploaded.bin) -> %s' % (boolRes(rc), rc));
 
             try:    os.remove(strUpFile);
@@ -225,5 +227,5 @@
             if rc is True:
                 rc = oSession.syncExecEx(sProg, (sProg, '--help'));
-                print '%s: EXEC(%s ${SCRATCH}) -> %s' % (boolRes(rc), sProg, rc);
+                print('%s: EXEC(%s ${SCRATCH}) -> %s' % (boolRes(rc), sProg, rc));
 
                 rc = oSession.syncExecEx(sProg, (sProg, 'there', 'is no such', 'parameter'), \
@@ -234,21 +236,21 @@
 
                 rc = oSession.syncDownloadString('${SCRATCH}/stdout');
-                print 'INFO:   GET FILE(${SCRATCH}/stdout) -> "%s"' % (rc);
+                print('INFO:   GET FILE(${SCRATCH}/stdout) -> "%s"' % (rc));
                 rc = oSession.syncDownloadString('${SCRATCH}/stderr');
-                print 'INFO:   GET FILE(${SCRATCH}/stderr) -> "%s"' % (rc);
-
-                print 'TESTING: syncExec...'
+                print('INFO:   GET FILE(${SCRATCH}/stderr) -> "%s"' % (rc));
+
+                print('TESTING: syncExec...');
                 rc = oSession.syncExec(sProg, (sProg, '--version'));
-                print '%s: EXEC(%s --version) -> %s' % (boolRes(rc), sProg, rc);
-
-                print 'TESTING: syncExec...'
+                print('%s: EXEC(%s --version) -> %s' % (boolRes(rc), sProg, rc));
+
+                print('TESTING: syncExec...');
                 rc = oSession.syncExec(sProg, (sProg, '--help'));
-                print '%s: EXEC(%s --help) -> %s' % (boolRes(rc), sProg, rc);
-
-                #print 'TESTING: syncExec sleep 30...'
-                #rc = oSession.syncExec('/usr/bin/sleep', ('/usr/bin/sleep', '30'));
-                #print '%s: EXEC(/bin/sleep 30) -> %s' % (boolRes(rc), rc);
+                print('%s: EXEC(%s --help) -> %s' % (boolRes(rc), sProg, rc));
+
+                #print('TESTING: syncExec sleep 30...'
+                #rc = oSession.syncExec('/usr/bin/sleep', ('/usr/bin/sleep', '30')));
+                #print('%s: EXEC(/bin/sleep 30) -> %s' % (boolRes(rc), rc));
             else:
-                print 'SKIP:   Execution of %s skipped, does not exist on CD-ROM' % (sProg,);
+                print('SKIP:   Execution of %s skipped, does not exist on CD-ROM' % (sProg,));
 
             # Execute a non-existing file on CD-ROM.
@@ -261,19 +263,19 @@
             else:
                 reporter.error('Unexpected value \"%s\" while executing non-existent file "%s"' % (rc, sProg));
-            print '%s: EXEC(%s ${SCRATCH}) -> %s' % (boolRes(rc), sProg, rc);
+            print('%s: EXEC(%s ${SCRATCH}) -> %s' % (boolRes(rc), sProg, rc));
 
             # Done
             rc = oSession.syncDisconnect();
-            print '%s: disconnect() -> %s' % (boolRes(rc), rc);
+            print('%s: disconnect() -> %s' % (boolRes(rc), rc));
 
         elif fReboot:
-            print 'TESTING: syncReboot...'
+            print('TESTING: syncReboot...');
             rc = oSession.syncReboot();
-            print '%s: REBOOT() -> %s' % (boolRes(rc), rc);
+            print('%s: REBOOT() -> %s' % (boolRes(rc), rc));
 
     if g_cFailures != 0:
-        print 'tst-txsclient.py: %u out of %u test failed' % (g_cFailures, g_cTests);
+        print('tst-txsclient.py: %u out of %u test failed' % (g_cFailures, g_cTests));
         return 1;
-    print 'tst-txsclient.py: all %u tests passed!' % (g_cTests);
+    print('tst-txsclient.py: all %u tests passed!' % (g_cTests));
     return 0;
 
Index: trunk/src/VBox/ValidationKit/testdriver/vbox.py
===================================================================
--- trunk/src/VBox/ValidationKit/testdriver/vbox.py	(revision 70516)
+++ trunk/src/VBox/ValidationKit/testdriver/vbox.py	(revision 70517)
@@ -433,15 +433,4 @@
 
         # __init__ end;
-
-    def dump(self):
-        """ Status dumper for debugging. """
-        print >> sys.stderr, "testdriver.vbox.Build: sInstallPath= '%s'" % self.sInstallPath;
-        print >> sys.stderr, "testdriver.vbox.Build: sSdkPath    = '%s'" % self.sSdkPath;
-        print >> sys.stderr, "testdriver.vbox.Build: sSrcRoot    = '%s'" % self.sSrcRoot;
-        print >> sys.stderr, "testdriver.vbox.Build: sKind       = '%s'" % self.sKind;
-        print >> sys.stderr, "testdriver.vbox.Build: sDesignation= '%s'" % self.sDesignation;
-        print >> sys.stderr, "testdriver.vbox.Build: sType       = '%s'" % self.sType;
-        print >> sys.stderr, "testdriver.vbox.Build: sOs         = '%s'" % self.sOs;
-        print >> sys.stderr, "testdriver.vbox.Build: sArch       = '%s'" % self.sArch;
 
     def isDevBuild(self):
@@ -834,22 +823,4 @@
             os.environ['VBOX_LOG_DEST'] = 'nodeny dir=%s' % (self.sScratchPath);
 
-    def dump(self):
-        """
-        Dump object state, for debugging.
-        """
-        base.TestDriver.dump(self);
-        print >> sys.stderr, "testdriver.vbox: fImportedVBoxApi  = '%s'" % self.fImportedVBoxApi;
-        print >> sys.stderr, "testdriver.vbox: fpApiVer          = '%s'" % self.fpApiVer;
-        print >> sys.stderr, "testdriver.vbox: oBuild            = '%s'" % self.oBuild;
-        print >> sys.stderr, "testdriver.vbox: oVBoxMgr          = '%s'" % self.oVBoxMgr;
-        print >> sys.stderr, "testdriver.vbox: oVBox             = '%s'" % self.oVBox;
-        print >> sys.stderr, "testdriver.vbox: aoRemoteSessions  = '%s'" % self.aoRemoteSessions;
-        print >> sys.stderr, "testdriver.vbox: aoVMs             = '%s'" % self.aoVMs;
-        print >> sys.stderr, "testdriver.vbox: sVBoxValidationKit    = '%s'" % self.sVBoxValidationKit;
-        print >> sys.stderr, "testdriver.vbox: sVBoxValidationKitIso = '%s'" % self.sVBoxValidationKitIso;
-        print >> sys.stderr, "testdriver.vbox: sVBoxBootSectors  = '%s'" % self.sVBoxBootSectors;
-        if self.oBuild is not None:
-            self.oBuild.dump();
-
 
     def _detectBuild(self, fQuiet = False):
@@ -992,8 +963,8 @@
            and self.oBuild.sKind == 'development' \
            and os.getenv('VERSIONER_PYTHON_PREFER_32_BIT') != 'yes':
-            print "WARNING: 64-bit python on darwin, 32-bit VBox development build => crash"
-            print "WARNING:   bash-3.2$ /usr/bin/python2.5 ./testdriver"
-            print "WARNING: or"
-            print "WARNING:   bash-3.2$ VERSIONER_PYTHON_PREFER_32_BIT=yes ./testdriver"
+            reporter.log("WARNING: 64-bit python on darwin, 32-bit VBox development build => crash");
+            reporter.log("WARNING:   bash-3.2$ /usr/bin/python2.5 ./testdriver");
+            reporter.log("WARNING: or");
+            reporter.log("WARNING:   bash-3.2$ VERSIONER_PYTHON_PREFER_32_BIT=yes ./testdriver");
             return False;
 
@@ -1844,7 +1815,7 @@
             if self.sHost in ('darwin', 'freebsd', 'linux', 'solaris', ):
                 try:
-                    print '> ls -la %s' % (os.path.join(self.sScratchPath, 'VBoxUserHome'),);
+                    reporter.log('> ls -la %s' % (os.path.join(self.sScratchPath, 'VBoxUserHome'),));
                     utils.processCall(['ls', '-la', os.path.join(self.sScratchPath, 'VBoxUserHome')]);
-                    print '> ls -la %s' % (self.sScratchPath,);
+                    reporter.log('> ls -la %s' % (self.sScratchPath,));
                     utils.processCall(['ls', '-la', self.sScratchPath]);
                 except: pass;
@@ -3186,9 +3157,9 @@
                               (self.adjustTimeoutMs(cMsTimeout), fIgnoreErrors));
 
-    def txsMkDir(self, oSession, oTxsSession, sRemoteDir, fMode = 0700, cMsTimeout = 30000, fIgnoreErrors = False):
+    def txsMkDir(self, oSession, oTxsSession, sRemoteDir, fMode = 0o700, cMsTimeout = 30000, fIgnoreErrors = False):
         return self.txsDoTask(oSession, oTxsSession, oTxsSession.asyncMkDir,
                               (sRemoteDir, fMode, self.adjustTimeoutMs(cMsTimeout), fIgnoreErrors));
 
-    def txsMkDirPath(self, oSession, oTxsSession, sRemoteDir, fMode = 0700, cMsTimeout = 30000, fIgnoreErrors = False):
+    def txsMkDirPath(self, oSession, oTxsSession, sRemoteDir, fMode = 0o700, cMsTimeout = 30000, fIgnoreErrors = False):
         return self.txsDoTask(oSession, oTxsSession, oTxsSession.asyncMkDirPath,
                               (sRemoteDir, fMode, self.adjustTimeoutMs(cMsTimeout), fIgnoreErrors));
