Exemplo n.º 1
0
    def start_application(self, applicationName, args="", binaryDirectoryOnTarget=None, nameExtension="", env={}, dltAppID=None):
        #ensure binary is there
        if binaryDirectoryOnTarget:
            binaryPathOnTarget = binaryDirectoryOnTarget + '/' + applicationName
        else:
            binaryPathOnTarget = applicationName
        (_, _, resultTest) = self.execute_on_target("type " + binaryPathOnTarget) #test -e cannot be used as it does not work for applications in system path
        if resultTest != 0:
            log.error("Error: executable '{0}' could not be found (path: '{1}')".format(applicationName, binaryPathOnTarget))
            return Application(None, None, None, applicationName, binaryDirectoryOnTarget, nameExtension)

        prefix = helper.get_env_var_setting_string(self._get_merged_env(env))

        #execute application
        if binaryDirectoryOnTarget:
            command = "cd {}; {} ./{} {}".format(binaryDirectoryOnTarget, prefix, applicationName, args)
        else:
            command = "{} {} {}".format(prefix, applicationName, args)

        log.info("start_application command: '{}'".format(command))
        try:
            stdin, stdout, stderr = self.sshClient.exec_command(command)
        except Exception as e:
            log.error("Error: {0} could not be started (error message: {1})".format(applicationName, e.message))
            return Application(None, None, None, applicationName, binaryDirectoryOnTarget, nameExtension)

        application = Application(stdin, stdout, stderr, applicationName, binaryDirectoryOnTarget, nameExtension)
        application.started = True

        return application
Exemplo n.º 2
0
 def __init__(self, popenApp, name, workingDirectoryAbsolute, nameExtension=""):
     if popenApp:
         stdin = popenApp.stdin
         stdout = popenApp.stdout
         stderr = popenApp.stderr
     else:
         stdin = None
         stdout = None
         stderr = None
     Application.__init__(self, stdin, stdout, stderr, name, workingDirectoryAbsolute, nameExtension)
     self.popenApp = popenApp
Exemplo n.º 3
0
    def start_application(self,
                          applicationName,
                          args="",
                          binaryDirectoryOnTarget=None,
                          nameExtension="",
                          env={},
                          dltAppID=None,
                          prepend_unbuffer=False):
        #ensure binary is there
        if binaryDirectoryOnTarget:
            binaryPathOnTarget = binaryDirectoryOnTarget + '/' + applicationName
        else:
            binaryPathOnTarget = applicationName
        if not self._executable_exists_on_target(binaryPathOnTarget):
            log.error(
                "Error: executable '{0}' could not be found (path: '{1}')".
                format(applicationName, binaryPathOnTarget))
            return Application(None, None, None, applicationName,
                               binaryDirectoryOnTarget, nameExtension)

        prefix = helper.get_env_var_setting_string(self._get_merged_env(env))
        if prepend_unbuffer:
            if self.supportsUnbuffer:
                prefix += " unbuffer"
            else:
                log.warn(
                    "Unbuffer is not supported on this target! Will be ignored."
                )

        #execute application
        if binaryDirectoryOnTarget:
            command = "cd {}; {} ./{} {}".format(binaryDirectoryOnTarget,
                                                 prefix, applicationName, args)
        else:
            command = "{} {} {}".format(prefix, applicationName, args)

        log.info("start_application command: '{}'".format(command))
        try:
            stdin, stdout, stderr = self.sshClient.exec_command(command)
        except Exception as e:
            log.error(
                "Error: {0} could not be started (error message: {1})".format(
                    applicationName, e.message))
            return Application(None, None, None, applicationName,
                               binaryDirectoryOnTarget, nameExtension)

        application = Application(stdin, stdout, stderr, applicationName,
                                  binaryDirectoryOnTarget, nameExtension)
        application.started = True

        return application