示例#1
0
 def __init__(self, config, progress, restart):
     self.logger = logging.getLogger(self.__class__.__name__)
     self.progress = progress
     self.basedir = None
     self.random = config.get('randomization', False)
     if 'devices' not in config:
         raise ConfigError('"device" is required in the configuration')
     adb_path = config.get('adb_path', 'adb')
     self.devices = Devices(config['devices'],
                            adb_path=adb_path,
                            devices_spec=config.get('devices_spec'))
     self.replications = Tests.is_integer(config.get('replications', 1))
     self.paths = config.get('paths', [])
     self.profilers = Profilers(config.get('profilers', {}), config)
     monkeyrunner_path = config.get('monkeyrunner_path', 'monkeyrunner')
     self.scripts = Scripts(config.get('scripts', {}),
                            monkeyrunner_path=monkeyrunner_path)
     self.time_between_run = Tests.is_integer(
         config.get('time_between_run', 0))
     Tests.check_dependencies(self.devices, self.profilers.dependencies())
     self.output_root = paths.OUTPUT_DIR
     self.result_file_structure = None
     if restart:
         for device in self.devices:
             self.prepare_device(device, restart=True)
示例#2
0
 def __init__(self, id):
     self.id = id
     from States import States
     self._addObject(States('states'))
     from Transitions import Transitions
     self._addObject(Transitions('transitions'))
     from Variables import Variables
     self._addObject(Variables('variables'))
     from Worklists import Worklists
     self._addObject(Worklists('worklists'))
     from Scripts import Scripts
     self._addObject(Scripts('scripts'))
示例#3
0
 def __init__(self, config):
     self.logger = logging.getLogger(self.__class__.__name__)
     self.basedir = None
     if 'devices' not in config:
         raise ConfigError('"device" is required in the configuration')
     adb_path = config.get('adb_path', 'adb')
     self.devices = Devices(config['devices'], adb_path=adb_path)
     self.replications = Tests.is_integer(config.get('replications', 1))
     self.paths = config.get('paths', [])
     self.profilers = Profilers(config.get('profilers', {}))
     monkeyrunner_path = config.get('monkeyrunner_path', 'monkeyrunner')
     self.scripts = Scripts(config.get('scripts', {}),
                            monkeyrunner_path=monkeyrunner_path)
     self.time_between_run = Tests.is_integer(
         config.get('time_between_run', 0))
     Tests.check_dependencies(self.devices, self.profilers.dependencies())
     self.output_root = paths.OUTPUT_DIR
示例#4
0
    def __init__(self, main_instance):
        AbstractRole.__init__(self, main_instance)
        self.sessions = {}
        self.locked_sessions = []
        self.sessions_spooler = MPQueue.Queue()
        self.sessions_spooler2 = MPQueue.Queue()
        self.sessions_sync = MPQueue.Queue()
        self.logging_queue = MPQueue.Queue()

        self.manager = Manager(self.main_instance.smRequestManager)
        self.threads = []

        self.applications = {}
        self.applications_id_SM = {}
        self.applications_mutex = threading.Lock()

        self.static_apps = ApplicationsStatic(
            self.main_instance.smRequestManager)
        self.static_apps_must_synced = False
        self.static_apps_lock = threading.Lock()

        self.scripts = Scripts(self.main_instance.smRequestManager)
        self.scripts_lock = threading.Lock()
        self.scripts_must_synced = False
示例#5
0
class Session:
    Ulteo_apps = ["startovdapp", "UlteoOVDIntegratedLauncher"]

    SESSION_STATUS_UNKNOWN = "unknown"
    SESSION_STATUS_ERROR = "error"
    SESSION_STATUS_INIT = "init"
    SESSION_STATUS_INITED = "ready"
    SESSION_STATUS_ACTIVE = "logged"
    SESSION_STATUS_INACTIVE = "disconnected"
    SESSION_STATUS_WAIT_DESTROY = "wait_destroy"
    SESSION_STATUS_DESTROYED = "destroyed"

    SESSION_END_STATUS_NORMAL = "logout"
    SESSION_END_STATUS_SHUTDOWN = "shutdown"
    SESSION_END_STATUS_ERROR = "internal"

    MODE_DESKTOP = "desktop"
    MODE_APPLICATIONS = "applications"

    def __init__(self, id_, mode_, user_, parameters_, applications_):
        self.id = id_
        self.user = user_
        self.mode = mode_
        self.parameters = parameters_
        self.profile = None
        self.applications = applications_
        self.instanceDirectory = None
        self.used_applications = {}
        self.shellNode = None

        self.end_status = None
        self.user_session_dir = None
        self.locked = False

        self.domain = None

        self.log = SessionLogger()
        self.switch_status(Session.SESSION_STATUS_INIT)

    def init(self):
        raise NotImplementedError()

    def init_user_session_dir(self, user_session_dir):
        self.user_session_dir = user_session_dir
        if os.path.isdir(self.user_session_dir):
            System.DeleteDirectory(self.user_session_dir)

        try:
            os.makedirs(self.user_session_dir)
        except WindowsError, e:
            if e[0] == 183:  # The directory already exist
                Logger.debug("The directory %s already exist" %
                             (self.user_session_dir))

        self.instanceDirectory = os.path.join(self.user_session_dir,
                                              "instances")
        self.matchingDirectory = os.path.join(self.user_session_dir,
                                              "matching")
        self.shortcutDirectory = os.path.join(self.user_session_dir,
                                              "shortcuts")

        os.mkdir(self.instanceDirectory)
        os.mkdir(self.matchingDirectory)
        os.mkdir(self.shortcutDirectory)

        for application in self.applications:
            cmd = ApplicationsDetection.getExec(application["filename"])
            if cmd is None:
                Logger.error(
                    "Session::install_client unable to extract command from app_id %s (%s)"
                    % (application["id"], application["filename"]))
                continue

            f = file(os.path.join(self.matchingDirectory, application["id"]),
                     "w")
            f.write(cmd)
            f.close()

        if self.shellNode is not None:
            # Push the OvdShell configuration
            self.shellNode.setAttribute("sm", Config.session_manager)

            scriptsNodes = self.shellNode.getElementsByTagName("script")
            script2start_dir = os.path.join(self.user_session_dir, 'scripts')
            scripts_aps = os.path.join(Config.spool_dir, "scripts")
            os.mkdir(script2start_dir)

            for node in scriptsNodes:
                scriptID = node.getAttribute("id")
                scriptName = node.getAttribute("name")
                scriptType = node.getAttribute("type")
                scriptExt = Scripts.type2ext(scriptType)
                node.setAttribute("name", scriptName + "." + scriptExt)
                apsname = os.path.join(scripts_aps, scriptID + "." + scriptExt)
                sessionname = os.path.join(script2start_dir,
                                           scriptName + "." + scriptExt)
                if os.path.isfile(apsname):
                    shutil.copy(apsname, sessionname)

            f = open(os.path.join(self.user_session_dir, "shell.conf"), "w")
            f.write(self.shellNode.toprettyxml())
            f.close()