Sha256: 0ac02a1d186bfb6cac46b2ba198749fa77ad171da93b33da8e7e0468456987bb

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

require 'di'
require 'ADB'

require 'stf/client'
require 'stf/log/log'
require 'stf/errors'
require 'stf/model/session'

module Stf
  class StartOneDebugSessionInteractor

    include Log
    include ADB

    def execute(device)
      return false if device.nil?
      serial = device.serial

      begin
        success = DI[:stf].add_device serial
        if success
          logger.info "Device added #{serial}"
        else
          logger.error "Can't add device #{serial}"
          raise
        end

        result = DI[:stf].start_debug serial
        if result.success
          logger.info "Debug started #{serial}"
        else
          logger.error "Can't start debugging session for device #{serial}"
          raise
        end

        execute_adb_with 30, "connect #{result.remoteConnectUrl}"

        # Check for adb device status
        execute_adb_with(30, 'devices')
        device_list = last_stdout.split("\n")
        device_list.shift
        devices = Hash[device_list.collect {|device| [device.split("\t").first, device.split("\t").last]}]

        if devices["#{result.remoteConnectUrl}"] != "device"
          raise "adb connect #{result.remoteConnectUrl} succeeded but device is not in the adb devices list"
        end

        shell('exit', {serial: "#{result.remoteConnectUrl}"}, 30)

        return true

      rescue => e
        begin
          # we will try clean anyway
          DI[:stf].remove_device serial
        rescue
        end

        logger.error "Failed to connect to #{serial}"
        return false
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
stf-client-0.2.2 lib/stf/interactor/start_one_debug_session_interactor.rb