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
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
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