示例#1
0
 def populate(self, parameters):
     self.internal_pipeline = Pipeline(
         parent=self, job=self.job, parameters=parameters
     )
     # establish a new connection before trying the reset
     self.internal_pipeline.add_action(ResetDevice())
     # need to look for Hit any key to stop autoboot
     self.internal_pipeline.add_action(BootloaderInterruptAction())
     self.internal_pipeline.add_action(ConnectLxc())
示例#2
0
 def populate(self, parameters):
     self.internal_pipeline = Pipeline(parent=self,
                                       job=self.job,
                                       parameters=parameters)
     if self.job.device.hard_reset_command:
         self.internal_pipeline.add_action(ResetDevice())
         self.internal_pipeline.add_action(
             WaitDeviceBoardID(self.job.device.get("board_id")))
     self.internal_pipeline.add_action(FlashOpenOCDAction())
     self.internal_pipeline.add_action(ConnectDevice())
示例#3
0
 def populate(self, parameters):
     self.internal_pipeline = Pipeline(parent=self,
                                       job=self.job,
                                       parameters=parameters)
     self.internal_pipeline.add_action(ResetDevice())
     self.internal_pipeline.add_action(
         BootloaderInterruptAction(method=parameters["bootloader"]))
     self.internal_pipeline.add_action(
         BootloaderCommandsAction(expect_final=False,
                                  method=parameters["bootloader"]))
示例#4
0
 def populate(self, parameters):
     self.pipeline = Pipeline(parent=self, job=self.job, parameters=parameters)
     self.pipeline.add_action(ConnectDevice())
     if parameters.get("reset", True):
         self.pipeline.add_action(ResetDevice())
     if self.has_prompts(parameters):
         self.pipeline.add_action(AutoLoginAction())
         if self.test_has_shell(parameters):
             self.pipeline.add_action(ExpectShellSession())
             if "transfer_overlay" in parameters:
                 self.pipeline.add_action(OverlayUnpack())
             self.pipeline.add_action(ExportDeviceEnvironment())
示例#5
0
 def populate(self, parameters):
     self.pipeline = Pipeline(parent=self, job=self.job, parameters=parameters)
     self.pipeline.add_action(ResetDevice())
     self.pipeline.add_action(DepthchargeStart())
     self.pipeline.add_action(BootloaderCommandsAction())
     if self.has_prompts(parameters):
         self.pipeline.add_action(AutoLoginAction())
         if self.test_has_shell(parameters):
             self.pipeline.add_action(ExpectShellSession())
             if "transfer_overlay" in parameters:
                 self.pipeline.add_action(OverlayUnpack())
             self.pipeline.add_action(ExportDeviceEnvironment())
示例#6
0
 def populate(self, parameters):
     self.internal_pipeline = Pipeline(parent=self, job=self.job, parameters=parameters)
     method_params = self.job.device['actions']['boot']['methods']['cmsis-dap']['parameters']
     usb_mass_device = method_params.get('usb_mass_device')
     resets_after_flash = method_params.get('resets_after_flash', True)
     if self.job.device.hard_reset_command:
         self.internal_pipeline.add_action(ResetDevice())
         self.internal_pipeline.add_action(WaitDevicePathAction(usb_mass_device))
     self.internal_pipeline.add_action(FlashCMSISAction())
     if resets_after_flash:
         self.internal_pipeline.add_action(WaitUSBSerialDeviceAction())
     self.internal_pipeline.add_action(ConnectDevice())
示例#7
0
 def populate(self, parameters):
     self.pipeline = Pipeline(parent=self, job=self.job, parameters=parameters)
     method_params = self.job.device["actions"]["boot"]["methods"]["pyocd"][
         "parameters"
     ]
     if self.job.device.hard_reset_command:
         self.pipeline.add_action(ResetDevice())
         self.pipeline.add_action(WaitDeviceBoardID(self.job.device.get("board_id")))
     if method_params.get("connect_before_flash", False):
         self.pipeline.add_action(ConnectDevice())
     self.pipeline.add_action(FlashPyOCDAction())
     if not method_params.get("connect_before_flash", False):
         self.pipeline.add_action(ConnectDevice())
示例#8
0
 def populate(self, parameters):
     self.pipeline = Pipeline(parent=self, job=self.job, parameters=parameters)
     # establish a new connection before trying the reset
     self.pipeline.add_action(ResetDevice())
     self.pipeline.add_action(BootloaderInterruptAction())
     self.pipeline.add_action(BootloaderCommandsAction())
     if self.has_prompts(parameters):
         self.pipeline.add_action(AutoLoginAction())
         if self.test_has_shell(parameters):
             self.pipeline.add_action(ExpectShellSession())
             if "transfer_overlay" in parameters:
                 self.pipeline.add_action(OverlayUnpack())
             self.pipeline.add_action(ExportDeviceEnvironment())
示例#9
0
 def populate(self, parameters):
     self.pipeline = Pipeline(parent=self, job=self.job, parameters=parameters)
     self.method_params = self.job.device["actions"]["boot"]["methods"]["u-boot"][
         "parameters"
     ]
     self.usb_mass_device = self.method_params.get("uboot_mass_storage_device")
     # establish a new connection before trying the reset
     self.pipeline.add_action(ResetDevice())
     self.pipeline.add_action(BootloaderInterruptAction())
     if self.method_params.get("uboot_ums_flash", False):
         self.pipeline.add_action(BootloaderCommandsAction(expect_final=False))
         self.pipeline.add_action(WaitDevicePathAction(self.usb_mass_device))
         self.pipeline.add_action(FlashUBootUMSAction(self.usb_mass_device))
         self.pipeline.add_action(ResetDevice())
     else:
         self.pipeline.add_action(BootloaderCommandsAction())
     if self.has_prompts(parameters):
         self.pipeline.add_action(AutoLoginAction())
         if self.test_has_shell(parameters):
             self.pipeline.add_action(ExpectShellSession())
             if "transfer_overlay" in parameters:
                 self.pipeline.add_action(OverlayUnpack())
             self.pipeline.add_action(ExportDeviceEnvironment())
示例#10
0
文件: fastboot.py 项目: slawr/lava
    def populate(self, parameters):
        self.parameters = parameters
        self.pipeline = Pipeline(parent=self,
                                 job=self.job,
                                 parameters=parameters)

        if parameters.get("commands"):
            self.pipeline.add_action(BootFastbootCommands())

        board_id = self.job.device["fastboot_serial_number"]

        # Always ensure the device is in fastboot mode before trying to boot.
        # Check if the device has a power command such as HiKey, Dragonboard,
        # etc. against device that doesn't like Nexus, etc.
        if self.job.device.get("fastboot_via_uboot", False):
            self.pipeline.add_action(ConnectDevice())
            self.pipeline.add_action(UBootEnterFastbootAction())
        elif self.job.device.hard_reset_command:
            self.force_prompt = True
            self.pipeline.add_action(ConnectDevice())
            self.pipeline.add_action(ResetDevice())
        else:
            self.pipeline.add_action(WaitDeviceBoardID(board_id))
            self.pipeline.add_action(EnterFastbootAction())

        # Based on the boot sequence defined in the device configuration, add
        # the required pipeline actions.
        sequences = self.job.device["actions"]["boot"]["methods"].get(
            "fastboot", [])
        for sequence in sequences:
            mapped = _fastboot_sequence_map(sequence)
            self.pipeline.add_action(WaitDeviceBoardID(board_id))
            if mapped[1]:
                self.pipeline.add_action(mapped[0](device_actions=mapped[1]))
            elif mapped[0]:
                self.pipeline.add_action(mapped[0]())
        if self.job.device.hard_reset_command:
            if not self.is_container():
                self.pipeline.add_action(PreOs())
            if self.has_prompts(parameters):
                self.pipeline.add_action(AutoLoginAction())
                if self.test_has_shell(parameters):
                    self.pipeline.add_action(ExpectShellSession())
                    if "transfer_overlay" in parameters:
                        self.pipeline.add_action(OverlayUnpack())
                    self.pipeline.add_action(ExportDeviceEnvironment())
        else:
            if not self.is_container():
                self.pipeline.add_action(ConnectAdb())
                self.pipeline.add_action(AdbOverlayUnpack())
示例#11
0
 def populate(self, parameters):
     self.pipeline = Pipeline(parent=self, job=self.job, parameters=parameters)
     method_params = self.job.device["actions"]["boot"]["methods"]["cmsis-dap"][
         "parameters"
     ]
     usb_mass_device = method_params.get("usb_mass_device")
     resets_after_flash = method_params.get("resets_after_flash", True)
     if self.job.device.hard_reset_command:
         self.pipeline.add_action(ResetDevice())
         self.pipeline.add_action(WaitDevicePathAction(usb_mass_device))
     self.pipeline.add_action(FlashCMSISAction())
     if resets_after_flash:
         self.pipeline.add_action(WaitUSBSerialDeviceAction())
     self.pipeline.add_action(ConnectDevice())
示例#12
0
    def populate(self, parameters):
        dfu = self.job.device["actions"]["boot"]["methods"]["dfu"]
        parameters = dfu["parameters"]

        self.pipeline = Pipeline(parent=self,
                                 job=self.job,
                                 parameters=parameters)
        self.pipeline.add_action(ConnectDevice())
        self.pipeline.add_action(ResetDevice())
        if dfu.get("implementation") == "u-boot":
            self.pipeline.add_action(
                BootloaderInterruptAction(method="u-boot"))
            self.pipeline.add_action(EnterDFU())
        self.pipeline.add_action(WaitDFUDeviceAction())
        self.pipeline.add_action(FlashDFUAction())
示例#13
0
 def populate(self, parameters):
     download_dir = self.mkdtemp()
     self.internal_pipeline = Pipeline(parent=self, job=self.job, parameters=parameters)
     if 'recovery_image' in parameters:
         self.internal_pipeline.add_action(DownloaderAction('recovery_image', path=download_dir))
     self.internal_pipeline.add_action(LxcCreateUdevRuleAction())
     self.force_prompt = True
     self.internal_pipeline.add_action(ConnectDevice())
     self.internal_pipeline.add_action(ResetDevice())
     self.internal_pipeline.add_action(ExtractVExpressRecoveryImage())
     self.internal_pipeline.add_action(EnterVExpressMCC())
     self.internal_pipeline.add_action(EnableVExpressMassStorage())
     self.internal_pipeline.add_action(WaitUSBMassStorageDeviceAction())
     self.internal_pipeline.add_action(MountVExpressMassStorageDevice())
     self.internal_pipeline.add_action(DeployVExpressRecoveryImage())
     self.internal_pipeline.add_action(UnmountVExpressMassStorageDevice())
     self.internal_pipeline.add_action(VExpressFlashErase())
示例#14
0
 def populate(self, parameters):
     self.pipeline = Pipeline(parent=self, job=self.job, parameters=parameters)
     if "commands" in parameters and "fastboot" in parameters["commands"]:
         self.pipeline.add_action(UefiSubstituteCommands())
         self.pipeline.add_action(UEFIMenuInterrupt())
         self.pipeline.add_action(UefiMenuSelector())
         self.pipeline.add_action(MenuReset())
         self.pipeline.add_action(AutoLoginAction())
         self.pipeline.add_action(ExportDeviceEnvironment())
     else:
         self.pipeline.add_action(UefiSubstituteCommands())
         self.pipeline.add_action(MenuConnect())
         self.pipeline.add_action(ResetDevice())
         self.pipeline.add_action(UEFIMenuInterrupt())
         self.pipeline.add_action(UefiMenuSelector())
         self.pipeline.add_action(MenuReset())
         self.pipeline.add_action(AutoLoginAction())
         self.pipeline.add_action(ExportDeviceEnvironment())
示例#15
0
 def populate(self, parameters):
     download_dir = self.mkdtemp()
     self.internal_pipeline = Pipeline(parent=self,
                                       job=self.job,
                                       parameters=parameters)
     self.internal_pipeline.add_action(ConnectDevice())
     self.internal_pipeline.add_action(ResetDevice())
     self.internal_pipeline.add_action(WaitUSBMassStorageDeviceAction())
     for image in parameters['images'].keys():
         if image != 'yaml_line':
             self.internal_pipeline.add_action(
                 DownloaderAction(image, path=download_dir))
     self.internal_pipeline.add_action(MountVExpressMassStorageDevice())
     if 'recovery_image' in parameters['images'].keys():
         self.internal_pipeline.add_action(ExtractVExpressRecoveryImage())
         self.internal_pipeline.add_action(DeployVExpressRecoveryImage())
     if 'test_binary' in parameters['images'].keys():
         self.internal_pipeline.add_action(DeployMPSTestBinary())
     self.internal_pipeline.add_action(UnmountVExpressMassStorageDevice())
示例#16
0
    def populate(self, parameters):
        self.pipeline = Pipeline(parent=self, job=self.job, parameters=parameters)
        if self.test_needs_overlay(parameters):
            self.pipeline.add_action(OverlayAction())
        # Check if the device has a power command such as HiKey, Dragonboard,
        # etc. against device that doesn't like Nexus, etc.
        if self.job.device.get("fastboot_via_uboot", False):
            self.pipeline.add_action(ConnectDevice())
            self.pipeline.add_action(UBootEnterFastbootAction())
        elif self.job.device.hard_reset_command:
            self.force_prompt = True
            self.pipeline.add_action(ConnectDevice())
            if not is_lxc_requested(self.job):
                self.pipeline.add_action(PrePower())
            self.pipeline.add_action(ResetDevice())
        else:
            self.pipeline.add_action(EnterFastbootAction())

        fastboot_dir = self.mkdtemp()
        for image in sorted(parameters["images"].keys()):
            self.pipeline.add_action(
                DownloaderAction(
                    image, fastboot_dir, params=parameters["images"][image]
                )
            )
            if parameters["images"][image].get("apply-overlay", False):
                if self.test_needs_overlay(parameters):
                    if parameters["images"][image].get("sparse", True):
                        self.pipeline.add_action(ApplyOverlaySparseImage(image))
                    else:
                        use_root_part = parameters["images"][image].get(
                            "root_partition", False
                        )
                        self.pipeline.add_action(
                            ApplyOverlayImage(image, use_root_partition=use_root_part)
                        )

            if self.test_needs_overlay(parameters) and self.test_needs_deployment(
                parameters
            ):
                self.pipeline.add_action(DeployDeviceEnvironment())
        self.pipeline.add_action(FastbootFlashOrderAction())
示例#17
0
    def populate(self, parameters):
        self.internal_pipeline = Pipeline(parent=self, job=self.job,
                                          parameters=parameters)
        # Always ensure the device is in fastboot mode before trying to boot.
        # Check if the device has a power command such as HiKey, Dragonboard,
        # etc. against device that doesn't like Nexus, etc.
        if self.job.device.get('fastboot_via_uboot', False):
            self.internal_pipeline.add_action(ConnectDevice())
            self.internal_pipeline.add_action(UBootEnterFastbootAction())
        elif self.job.device.hard_reset_command:
            self.force_prompt = True
            self.internal_pipeline.add_action(ConnectDevice())
            self.internal_pipeline.add_action(ResetDevice())
        else:
            self.internal_pipeline.add_action(EnterFastbootAction())

        # Based on the boot sequence defined in the device configuration, add
        # the required pipeline actions.
        sequences = self.job.device['actions']['boot']['methods'].get(
            'fastboot', [])
        for sequence in sequences:
            mapped = _fastboot_sequence_map(sequence)
            if mapped[1]:
                self.internal_pipeline.add_action(
                    mapped[0](device_actions=mapped[1]))
            elif mapped[0]:
                self.internal_pipeline.add_action(mapped[0]())
        if self.job.device.hard_reset_command:
            if not is_lxc_requested(self.job):
                self.internal_pipeline.add_action(PreOs())
            if self.has_prompts(parameters):
                self.internal_pipeline.add_action(AutoLoginAction())
                if self.test_has_shell(parameters):
                    self.internal_pipeline.add_action(ExpectShellSession())
                    if 'transfer_overlay' in parameters:
                        self.internal_pipeline.add_action(OverlayUnpack())
                    self.internal_pipeline.add_action(ExportDeviceEnvironment())
        else:
            if not is_lxc_requested(self.job):
                self.internal_pipeline.add_action(ConnectAdb())
                self.internal_pipeline.add_action(AdbOverlayUnpack())
示例#18
0
 def populate(self, parameters):
     self.internal_pipeline = Pipeline(parent=self,
                                       job=self.job,
                                       parameters=parameters)
     self.internal_pipeline.add_action(BootloaderCommandOverlay())
     self.internal_pipeline.add_action(MenuConnect())
     self.internal_pipeline.add_action(ResetDevice())
     # Newer firmware often needs no menu interaction, just press to drop to shell
     if not self._skip_menu(parameters):
         # Some older firmware, UEFI Shell has to be selected from a menu.
         self.internal_pipeline.add_action(UefiShellMenuInterrupt())
         self.internal_pipeline.add_action(UefiShellMenuSelector())
     self.internal_pipeline.add_action(UefiShellInterrupt())
     self.internal_pipeline.add_action(UefiBootloaderCommandsAction())
     if self.has_prompts(parameters):
         self.internal_pipeline.add_action(AutoLoginAction())
         if self.test_has_shell(parameters):
             self.internal_pipeline.add_action(ExpectShellSession())
             if 'transfer_overlay' in parameters:
                 self.internal_pipeline.add_action(OverlayUnpack())
             self.internal_pipeline.add_action(ExportDeviceEnvironment())
示例#19
0
    def populate(self, parameters):
        self.internal_pipeline = Pipeline(parent=self,
                                          job=self.job,
                                          parameters=parameters)
        if self.test_needs_overlay(parameters):
            self.internal_pipeline.add_action(OverlayAction())
        # Check if the device has a power command such as HiKey, Dragonboard,
        # etc. against device that doesn't like Nexus, etc.
        if self.job.device.get('fastboot_via_uboot', False):
            self.internal_pipeline.add_action(ConnectDevice())
            self.internal_pipeline.add_action(UBootEnterFastbootAction())
        elif self.job.device.hard_reset_command:
            self.force_prompt = True
            self.internal_pipeline.add_action(ConnectDevice())
            self.internal_pipeline.add_action(ResetDevice())
        else:
            self.internal_pipeline.add_action(EnterFastbootAction())

        fastboot_dir = self.mkdtemp()
        image_keys = sorted(parameters['images'].keys())
        for image in image_keys:
            if image != 'yaml_line':
                self.internal_pipeline.add_action(
                    DownloaderAction(image, fastboot_dir))
                if parameters['images'][image].get('apply-overlay', False):
                    if self.test_needs_overlay(parameters):
                        if parameters['images'][image].get('sparse', True):
                            self.internal_pipeline.add_action(
                                ApplyOverlaySparseImage(image))
                        else:
                            self.internal_pipeline.add_action(
                                ApplyOverlayImage(image,
                                                  use_root_partition=False))
                if self.test_needs_overlay(parameters) and \
                   self.test_needs_deployment(parameters):
                    self.internal_pipeline.add_action(
                        DeployDeviceEnvironment())
        self.internal_pipeline.add_action(FastbootFlashOrderAction())
示例#20
0
 def populate(self, parameters):
     download_dir = self.mkdtemp()
     self.pipeline = Pipeline(parent=self,
                              job=self.job,
                              parameters=parameters)
     self.pipeline.add_action(
         DownloaderAction("recovery_image",
                          path=download_dir,
                          params=parameters["recovery_image"]))
     self.pipeline.add_action(LxcCreateUdevRuleAction())
     self.force_prompt = True
     self.pipeline.add_action(ConnectDevice())
     self.pipeline.add_action(ResetDevice())
     self.pipeline.add_action(ExtractVExpressRecoveryImage())
     self.pipeline.add_action(EnterVExpressMCC())
     self.pipeline.add_action(EnableVExpressMassStorage())
     self.pipeline.add_action(WaitUSBMassStorageDeviceAction())
     self.pipeline.add_action(MountVExpressMassStorageDevice())
     self.pipeline.add_action(DeployVExpressRecoveryImage())
     self.pipeline.add_action(UnmountVExpressMassStorageDevice())
     if self.job.device["actions"]["deploy"]["methods"]["vemsd"][
             "parameters"].get("flash_prompt", False):
         self.pipeline.add_action(VExpressFlashErase())
示例#21
0
    def populate(self, parameters):
        self.internal_pipeline = Pipeline(parent=self,
                                          job=self.job,
                                          parameters=parameters)
        image_keys = list(parameters['images'].keys())
        if self.test_needs_overlay(parameters):
            self.logger.debug("[SEOJI] add OverlayAction")
            self.internal_pipeline.add_action(OverlayAction())
        # Check if the device has a power command such as HiKey, Dragonboard,
        # etc. against device that doesn't like Nexus, etc.
        if self.job.device.get('fastboot_via_uboot', False):
            self.internal_pipeline.add_action(ConnectDevice())
            self.internal_pipeline.add_action(UBootEnterFastbootAction())
        elif self.job.device.hard_reset_command:
            self.force_prompt = True
            self.internal_pipeline.add_action(ConnectDevice())
            if not is_lxc_requested(self.job):
                self.internal_pipeline.add_action(PrePower())
            self.internal_pipeline.add_action(ResetDevice())
        elif 'nexell_ext' in image_keys:
            # Nexell extension
            #self.internal_pipeline.add_action(OverlayAction())

            # download build result
            if 'url' in parameters['images']['nexell_ext']:
                self.logger.debug(
                    "[SEOJI] url:" +
                    str(parameters['images']['nexell_ext']['url']))
                self.path = '/opt/share'
                self.internal_pipeline.add_action(
                    DownloaderAction('nexell_ext', self.path))
                #if 'compression' in parameters['images']['nexell_ext]:
                #self.logger.debug("[SEOJI] yes compression param exist")

            self.logger.debug("SUKER: parameters in deploy/fastboot.py : " +
                              str(parameters))
            self.internal_pipeline.add_action(
                EnterNexellFastbootAction(parameters, 'deploy_script',
                                          'deploy_command1', 'dir_name'))
            self.internal_pipeline.add_action(
                ApplyNexellDeployAction(parameters, 'deploy_script',
                                        'deploy_command2', 'dir_name'))
        else:
            self.internal_pipeline.add_action(EnterFastbootAction())

        fastboot_dir = self.mkdtemp()
        image_keys = sorted(parameters['images'].keys())
        # Nexell extension
        if 'nexell_ext' in image_keys:
            self.logger.debug("[SEOJI] pass adding DownloaderAction")
            #self.internal_pipeline.add_action(DeployDeviceEnvironment())
        else:
            for image in image_keys:
                if image != 'yaml_line':
                    self.internal_pipeline.add_action(
                        DownloaderAction(image, fastboot_dir))
                    if parameters['images'][image].get('apply-overlay', False):
                        if self.test_needs_overlay(parameters):
                            if parameters['images'][image].get('sparse', True):
                                self.internal_pipeline.add_action(
                                    ApplyOverlaySparseImage(image))
                            else:
                                self.internal_pipeline.add_action(
                                    ApplyOverlayImage(
                                        image, use_root_partition=False))
                    if self.test_needs_overlay(parameters) and \
                       self.test_needs_deployment(parameters):
                        self.internal_pipeline.add_action(
                            DeployDeviceEnvironment())
            self.internal_pipeline.add_action(FastbootFlashOrderAction())
        '''