VirtualBox

Ignore:
Timestamp:
Apr 4, 2023 1:36:43 PM (21 months ago)
Author:
vboxsync
Message:

Guest Control/Validation Kit: Introduced a process create wrapper function, as the process creation code was getting way too convoluted with all those API changes and differences.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/tests/additions/tdAddGuestCtrl.py

    r99279 r99282  
    22892289        return fRc;
    22902290
     2291    def processCreateWrapper(self, oGuestSession, sCmd, asArgs, sCwd, aEnv, afFlags, timeoutMS):
     2292        """
     2293        Wrapepr function to deal with different flavors of the IGuestProcess::processCreate call,
     2294        depending on the API version.
     2295
     2296        Returns oProcess object on success, None on failure.
     2297        """
     2298        oProcess = None;
     2299
     2300        reporter.log2('Executing sCmd=%s, cCwd=%s, afFlags=%s, timeoutMS=%d, asArgs=%s, asEnv=%s'
     2301                      % (sCmd, sCwd, afFlags, timeoutMS, limitString(asArgs), limitString(aEnv),));
     2302
     2303        if self.oTstDrv.fpApiVer >= 7.1 and self.oTstDrv.uRevision >= 156485:
     2304            # 7.1 adds a current working directory parameter.
     2305            oProcess = oGuestSession.processCreate(sCmd, asArgs, sCwd, aEnv, afFlags, timeoutMS);
     2306        else:
     2307            oProcess = oGuestSession.processCreate(sCmd,
     2308                                                   asArgs if self.oTstDrv.fpApiVer >= 5.0 else asArgs[1:],
     2309                                                   aEnv, afFlags, timeoutMS);
     2310        return oProcess;
     2311
    22912312    def gctrlExecute(self, oTest, oGuestSession, fIsError):                     # pylint: disable=too-many-statements
    22922313        """
     
    23162337        # Start the process:
    23172338        #
    2318         reporter.log2('Executing sCmd=%s, cCwd=%s, afFlags=%s, timeoutMS=%d, asArgs=%s, asEnv=%s'
    2319                       % (oTest.sCmd, oTest.sCwd, oTest.afFlags, oTest.timeoutMS, limitString(oTest.asArgs),
    2320                          limitString(oTest.aEnv),));
     2339
    23212340        try:
    2322             if self.oTstDrv.fpApiVer >= 7.1 and self.oTstDrv.uRevision >= 156485:
    2323                 oProcess = oGuestSession.processCreate(oTest.sCmd,
    2324                                                        oTest.asArgs if self.oTstDrv.fpApiVer >= 5.0 else oTest.asArgs[1:],
    2325                                                        oTest.sCwd,
    2326                                                        oTest.aEnv, oTest.afFlags, oTest.timeoutMS);
    2327             else:
    2328                 oProcess = oGuestSession.processCreate(oTest.sCmd,
    2329                                                        oTest.asArgs if self.oTstDrv.fpApiVer >= 5.0 else oTest.asArgs[1:],
    2330                                                        oTest.aEnv, oTest.afFlags, oTest.timeoutMS);
     2341            oProcess = self.processCreateWrapper(oGuestSession, oTest.sCmd, oTest.asArgs, oTest.sCwd,
     2342                                                 oTest.aEnv, oTest.afFlags, oTest.timeoutMS);
    23312343        except:
    23322344            reporter.maybeErrXcpt(fIsError, 'type=%s, asArgs=%s' % (type(oTest.asArgs), oTest.asArgs,));
     
    28892901            try:
    28902902                reporter.log2('Starting stale process #%d...' % (i));
    2891                 if self.oTstDrv.fpApiVer >= 7.1 and self.oTstDrv.uRevision >= 156485:
    2892                     oGuestSession.processCreate(sShell,
    2893                                                 asArgs if self.oTstDrv.fpApiVer >= 5.0 else asArgs[1:],
    2894                                                 "", # Working directory.
    2895                                                 [], # Environment changes.
    2896                                                 [ vboxcon.ProcessCreateFlag_WaitForStdOut ], 30 * 1000);
    2897                 else:
    2898                     oGuestSession.processCreate(sShell,
    2899                                                 asArgs if self.oTstDrv.fpApiVer >= 5.0 else asArgs[1:], [],
    2900                                                 [ vboxcon.ProcessCreateFlag_WaitForStdOut ], 30 * 1000);
     2903                self.processCreateWrapper(oGuestSession, sShell, asArgs, "", # Working directory.
     2904                                          [], # Environment changes.
     2905                                          [ vboxcon.ProcessCreateFlag_WaitForStdOut ], 30 * 1000);
    29012906                # Note: Not keeping a process reference from the created process above is intentional and part of the test!
    29022907
     
    29302935                try:
    29312936                    reporter.log2('Starting non-stale process #%d...' % (i));
    2932                     if self.oTstDrv.fpApiVer >= 7.1 and self.oTstDrv.uRevision >= 156485:
    2933                         oCurProc = oGuestSession.processCreate(sShell, asArgs if self.oTstDrv.fpApiVer >= 5.0 else asArgs[1:],
    2934                                                                "",         # Working directory.
    2935                                                                [], [], 0); # Infinite timeout.
    2936                     else:
    2937                         oCurProc = oGuestSession.processCreate(sShell, asArgs if self.oTstDrv.fpApiVer >= 5.0 else asArgs[1:],
    2938                                                                [], [], 0); # Infinite timeout.
     2937                    oCurProc = self.processCreateWrapper(oGuestSession, sShell, asArgs,
     2938                                                         "",         # Working directory.
     2939                                                         [], [], 0); # Infinite timeout.
    29392940                    aoProcs.append(oCurProc);
    29402941                except:
     
    29882989                try:
    29892990                    reporter.log2('Starting blocking process #%d...' % (i));
    2990                     if self.oTstDrv.fpApiVer >= 7.1 and self.oTstDrv.uRevision >= 156485:
    2991                         oCurProc = oGuestSession.processCreate(sCmd, asArgs if self.oTstDrv.fpApiVer >= 5.0 else asArgs[1:],
    2992                                                                "", # Working directory.
    2993                                                                [],  [], 30 * 1000);
    2994                     else:
    2995                         oCurProc = oGuestSession.processCreate(sCmd, asArgs if self.oTstDrv.fpApiVer >= 5.0 else asArgs[1:],
    2996                                                                [],  [], 30 * 1000);
     2991                    oCurProc = self.processCreateWrapper(oGuestSession, sCmd, asArgs,
     2992                                                         "", # Working directory.
     2993                                                         [],  [], 30 * 1000);
     2994
    29972995                    # Note: Use a timeout in the call above for not letting the stale processes
    29982996                    #       hanging around forever.  This can happen if the installed Guest Additions
     
    34243422        afFlags = [];
    34253423        try:
    3426             if self.oTstDrv.fpApiVer >= 7.1 and self.oTstDrv.uRevision >= 156485:
    3427                 oGuestProcess = oGuestSession.processCreate(sImage,
    3428                                                             asArgs if self.oTstDrv.fpApiVer >= 5.0 else asArgs[1:],
    3429                                                             "", # Working directory.
    3430                                                             aEnv, afFlags,
    3431                                                             30 * 1000);
    3432             else:
    3433                 oGuestProcess = oGuestSession.processCreate(sImage,
    3434                                                             asArgs if self.oTstDrv.fpApiVer >= 5.0 else asArgs[1:], aEnv, afFlags,
    3435                                                             30 * 1000);
     3424            oGuestProcess = self.processCreateWrapper(oGuestSession, sImage, asArgs,
     3425                                                      "", # Working directory.
     3426                                                      aEnv, afFlags, 30 * 1000);
    34363427        except:
    34373428            fRc = reporter.error('Failed to start shell process (%s)' % (sImage,));
     
    35473538        fRc = True;
    35483539        try:
    3549             if self.oTstDrv.fpApiVer >= 7.1 and self.oTstDrv.uRevision >= 156485:
    3550                 oCurProcess = oGuestSession.processCreate(sShell, [sShell,] if self.oTstDrv.fpApiVer >= 5.0 else [],
    3551                                                           "", # Working directory.
    3552                                                           [], [], 30 * 1000);
    3553             else:
    3554                 oCurProcess = oGuestSession.processCreate(sShell, [sShell,] if self.oTstDrv.fpApiVer >= 5.0 else [],
    3555                                                           [], [], 30 * 1000);
     3540            oCurProcess = self.processCreateWrapper(oGuestSession, sShell, [ sShell,] if self.oTstDrv.fpApiVer >= 5.0 else [],
     3541                                                    "", # Working directory.
     3542                                                    [], [], 30 * 1000);
    35563543        except:
    35573544            fRc = reporter.errorXcpt();
     
    35903577            #
    35913578            try:
    3592                 if self.oTstDrv.fpApiVer >= 7.1 and self.oTstDrv.uRevision >= 156485:
    3593                     oCurProcess = oGuestSession.processCreate(sShell, [sShell,] if self.oTstDrv.fpApiVer >= 5.0 else [],
    3594                                                               "", # Working directory.
    3595                                                               [], [], 3 * 1000);
    3596                 else:
    3597                     oCurProcess = oGuestSession.processCreate(sShell, [sShell,] if self.oTstDrv.fpApiVer >= 5.0 else [],
    3598                                                               [], [], 3 * 1000);
     3579                oCurProcess = self.processCreateWrapper(oGuestSession, sShell, [sShell,] if self.oTstDrv.fpApiVer >= 5.0 else [],
     3580                                                        "", # Working directory.
     3581                                                        [], [], 3 * 1000);
    35993582            except:
    36003583                fRc = reporter.errorXcpt();
     
    55895572
    55905573        for _ in xrange(100):
    5591             oProc = oGuestSession.processCreate(sCmd, asArgs if self.fpApiVer >= 5.0 else asArgs[1:],
    5592                                                 "", # Working directory.
    5593                                                 aEnv, afFlags, 30 * 1000);
     5574            oProc = self.processCreateWrapper(oGuestSession, sCmd, asArgs if self.fpApiVer >= 5.0 else asArgs[1:],
     5575                                              "", # Working directory.
     5576                                              aEnv, afFlags, 30 * 1000);
    55945577
    55955578            aWaitFor = [ vboxcon.ProcessWaitForFlag_Terminate ];
Note: See TracChangeset for help on using the changeset viewer.

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