VirtualBox

Ignore:
Timestamp:
Oct 17, 2017 8:59:23 AM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
118395
Message:

testdriver/vbox.py: Generalize the fpApiVer calculation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/testdriver/vbox.py

    r68290 r69099  
    12831283            reporter.logXcpt('VirtualBoxManager exception');
    12841284            return False;
    1285         reporter.log("oVBoxMgr=%s" % (self.oVBoxMgr,)); # Temporary - debugging hang somewhere after 'sys.path' log line above.
    12861285
    12871286        # Figure the API version.
    12881287        try:
    12891288            oVBox = self.oVBoxMgr.getVirtualBox();
    1290             reporter.log("oVBox=%s" % (oVBox,));        # Temporary - debugging hang somewhere after 'sys.path' log line above.
     1289
    12911290            try:
    12921291                sVer = oVBox.version;
     
    12941293                reporter.logXcpt('Failed to get VirtualBox version, assuming 4.0.0');
    12951294                sVer = "4.0.0";
    1296             reporter.log("sVer=%s" % (sVer,));          # Temporary - debugging hang somewhere after 'sys.path' log line above.
    1297             if sVer.startswith("5.2"):
    1298                 self.fpApiVer = 5.2;
    1299             elif sVer.startswith("5.1"):
    1300                 self.fpApiVer = 5.1;
    1301             elif sVer.startswith("5.0") or (sVer.startswith("4.3.5") and len(sVer) == 6):
    1302                 self.fpApiVer = 5.0;
    1303             elif sVer.startswith("4.3") or (sVer.startswith("4.2.5") and len(sVer) == 6):
    1304                 self.fpApiVer = 4.3;
    1305             elif sVer.startswith("4.2."):
    1306                 self.fpApiVer = 4.2; ## @todo Fudge: Add (proper) 4.2 API support. Unmount medium etc?
    1307             elif sVer.startswith("4.1.") or (sVer.startswith("4.0.5") and len(sVer) == 6):
    1308                 self.fpApiVer = 4.1;
    1309             elif sVer.startswith("4.0."):
    1310                 self.fpApiVer = 4.0;
    1311             elif sVer.startswith("3.2."):
    1312                 self.fpApiVer = 3.2;
    1313             elif sVer.startswith("3.1."):
    1314                 self.fpApiVer = 3.1;
    1315             elif sVer.startswith("3.0."):
    1316                 self.fpApiVer = 3.0;
    1317             else:
    1318                 raise base.GenError('Unknown version "%s"' % (sVer,));
    1319 
     1295            reporter.log("IVirtualBox.version=%s" % (sVer,));
     1296
     1297            # Convert the string to three integer values and check ranges.
     1298            asVerComponents = sVer.split('.');
     1299            try:
     1300                sLast = asVerComponents[2].split('_')[0].split('r')[0];
     1301                aiVerComponents = (int(asVerComponents[0]), int(asVerComponents[1]), int(sLast));
     1302            except:
     1303                raise base.GenError('Malformed version "%s"' % (sVer,));
     1304            if aiVerComponents[0] < 3 or aiVerComponents[0] > 19:
     1305                raise base.GenError('Malformed version "%s" - 1st component is out of bounds 3..19: %u'
     1306                                    % (sVer, aiVerComponents[0]));
     1307            if aiVerComponents[1] < 0 or aiVerComponents[1] > 9:
     1308                raise base.GenError('Malformed version "%s" - 2nd component is out of bounds 0..9: %u'
     1309                                    % (sVer, aiVerComponents[1]));
     1310            if aiVerComponents[2] < 0 or aiVerComponents[2] > 99:
     1311                raise base.GenError('Malformed version "%s" - 3rd component is out of bounds 0..99: %u'
     1312                                    % (sVer, aiVerComponents[2]));
     1313
     1314            # Convert the three integers into a floating point value.  The API is table witin a
     1315            # x.y release, so the third component only indicates whether it's a stable or
     1316            # development build of the next release.
     1317            self.fpApiVer = aiVerComponents[0] + 0.1 * aiVerComponents[1];
     1318            if aiVerComponents[2] >= 51:
     1319                if self.fpApiVer not in [4.3, 3.2,]:
     1320                    self.fpApiVer += 0.1;
     1321                else:
     1322                    self.fpApiVer += 1.1;
     1323
     1324            # Patch VBox manage to gloss over portability issues (error constants, etc).
    13201325            self._patchVBoxMgr();
    13211326
     1327            # Wrap oVBox.
    13221328            from testdriver.vboxwrappers import VirtualBoxWrapper;
    13231329            self.oVBox = VirtualBoxWrapper(oVBox, self.oVBoxMgr, self.fpApiVer, self);
     1330
     1331            # Install the constant wrapping hack.
    13241332            vboxcon.goHackModuleClass.oVBoxMgr  = self.oVBoxMgr; # VBoxConstantWrappingHack.
    1325             vboxcon.fpApiVer                    = self.fpApiVer
    1326             self.fImportedVBoxApi = True;
    1327             reporter.log('Found version %s (%s)' % (self.fpApiVer, sVer));
     1333            vboxcon.fpApiVer                    = self.fpApiVer;
     1334
    13281335        except:
    13291336            self.oVBoxMgr = None;
    13301337            self.oVBox    = None;
    1331             reporter.logXcpt("getVirtualBox exception");
     1338            reporter.logXcpt("getVirtualBox / API version exception");
    13321339            return False;
     1340
     1341        # Done
     1342        self.fImportedVBoxApi = True;
     1343        reporter.log('Found version %s (%s)' % (self.fpApiVer, sVer));
    13331344        return True;
    13341345
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette