diff --git a/lib/units/device/plugins/account.js b/lib/units/device/plugins/account.js index 724bcb54..6c845399 100644 --- a/lib/units/device/plugins/account.js +++ b/lib/units/device/plugins/account.js @@ -1,4 +1,5 @@ var syrup = require('@devicefarmer/stf-syrup') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default var logger = require('../../../util/logger') var wire = require('../../../wire') @@ -12,6 +13,7 @@ module.exports = syrup.serial() .dependency(require('../support/push')) .dependency(require('../support/adb')) .define(function(options, service, identity, touch, router, push, adb) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:account') function checkAccount(type, account) { @@ -281,11 +283,11 @@ module.exports = syrup.serial() ]) }) .catch(function() { - return adb.clear(options.serial, 'com.google.android.gsf.login') + return deviceClient.clear('com.google.android.gsf.login') .catch(function() { // The package name is different in 2.3, so let's try the old name // if the new name fails. - return adb.clear(options.serial, 'com.google.android.gsf') + return deviceClient.clear('com.google.android.gsf') }) .then(function() { return service.addAccountMenu() diff --git a/lib/units/device/plugins/browser.js b/lib/units/device/plugins/browser.js index e8b0a744..9f63878d 100644 --- a/lib/units/device/plugins/browser.js +++ b/lib/units/device/plugins/browser.js @@ -1,6 +1,7 @@ var syrup = require('@devicefarmer/stf-syrup') var browsers = require('@devicefarmer/stf-browser-db') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default var logger = require('../../../util/logger') var wire = require('../../../wire') @@ -23,6 +24,7 @@ module.exports = syrup.serial() .dependency(require('../support/adb')) .dependency(require('./service')) .define(function(options, router, push, adb, service) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:browser') function pkg(component) { @@ -103,7 +105,7 @@ module.exports = syrup.serial() } var reply = wireutil.reply(options.serial) - adb.startActivity(options.serial, { + deviceClient.startActivity({ action: 'android.intent.action.VIEW' , component: message.browser , data: message.url @@ -136,7 +138,7 @@ module.exports = syrup.serial() router.on(wire.BrowserClearMessage, function(channel, message) { log.info('Clearing "%s"', message.browser) var reply = wireutil.reply(options.serial) - adb.clear(options.serial, pkg(message.browser)) + deviceClient.clear(pkg(message.browser)) .then(function() { push.send([ channel diff --git a/lib/units/device/plugins/cleanup.js b/lib/units/device/plugins/cleanup.js index ba77582b..d58771cb 100644 --- a/lib/units/device/plugins/cleanup.js +++ b/lib/units/device/plugins/cleanup.js @@ -3,12 +3,14 @@ var Promise = require('bluebird') var _ = require('lodash') var logger = require('../../../util/logger') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default module.exports = syrup.serial() .dependency(require('../support/adb')) .dependency(require('../resources/service')) .dependency(require('./group')) .define(function(options, adb, service, group) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:cleanup') var plugin = Object.create(null) @@ -17,12 +19,12 @@ module.exports = syrup.serial() } function listPackages() { - return adb.getPackages(options.serial) + return deviceClient.getPackages() } function uninstallPackage(pkg) { log.info('Cleaning up package "%s"', pkg) - return adb.uninstall(options.serial, pkg) + return deviceClient.uninstall(pkg) .catch(function(err) { log.warn('Unable to clean up package "%s"', pkg, err) return true diff --git a/lib/units/device/plugins/connect.js b/lib/units/device/plugins/connect.js index 1aba2703..18d83565 100644 --- a/lib/units/device/plugins/connect.js +++ b/lib/units/device/plugins/connect.js @@ -6,6 +6,7 @@ var util = require('util') var syrup = require('@devicefarmer/stf-syrup') var Promise = require('bluebird') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default var logger = require('../../../util/logger') var grouputil = require('../../../util/grouputil') @@ -22,6 +23,7 @@ module.exports = syrup.serial() .dependency(require('./util/urlformat')) .define(function(options, adb, router, push, group, solo, urlformat) { var log = logger.createLogger('device:plugins:connect') + var deviceClient = new DeviceClient(adb, options.serial) var plugin = Object.create(null) var activeServer = null @@ -34,7 +36,7 @@ module.exports = syrup.serial() return resolve(plugin.url) } - var server = adb.createTcpUsbBridge(options.serial, { + var server = deviceClient.createTcpUsbBridge({ auth: function(key) { var resolver = Promise.defer() diff --git a/lib/units/device/plugins/filesystem.js b/lib/units/device/plugins/filesystem.js index ed91c8b6..4c761399 100644 --- a/lib/units/device/plugins/filesystem.js +++ b/lib/units/device/plugins/filesystem.js @@ -1,6 +1,7 @@ var syrup = require('@devicefarmer/stf-syrup') var path = require('path') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default var logger = require('../../../util/logger') var wire = require('../../../wire') var wireutil = require('../../../wire/util') @@ -11,15 +12,16 @@ module.exports = syrup.serial() .dependency(require('../support/push')) .dependency(require('../support/storage')) .define(function(options, adb, router, push, storage) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:filesystem') var plugin = Object.create(null) plugin.retrieve = function(file) { log.info('Retrieving file "%s"', file) - return adb.stat(options.serial, file) + return deviceClient.stat(file) .then(function(stats) { - return adb.pull(options.serial, file) + return deviceClient.pull(file) .then(function(transfer) { // We may have add new storage plugins for various file types // in the future, and add proper detection for the mimetype. @@ -54,7 +56,7 @@ module.exports = syrup.serial() router.on(wire.FileSystemListMessage, function(channel, message) { var reply = wireutil.reply(options.serial) - adb.readdir(options.serial, message.dir) + deviceClient.readdir(message.dir) .then(function(files) { push.send([ channel diff --git a/lib/units/device/plugins/forward/index.js b/lib/units/device/plugins/forward/index.js index 681c3654..2456327b 100644 --- a/lib/units/device/plugins/forward/index.js +++ b/lib/units/device/plugins/forward/index.js @@ -9,6 +9,7 @@ var logger = require('../../../../util/logger') var lifecycle = require('../../../../util/lifecycle') var streamutil = require('../../../../util/streamutil') var wireutil = require('../../../../wire/util') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default var ForwardManager = require('./util/manager') @@ -19,13 +20,14 @@ module.exports = syrup.serial() .dependency(require('../../resources/minirev')) .dependency(require('../group')) .define(function(options, adb, router, push, minirev, group) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:forward') var plugin = Object.create(null) var manager = new ForwardManager() function startService() { log.info('Launching reverse port forwarding service') - return adb.shell(options.serial, [ + return deviceClient.shell([ 'exec' , minirev.bin ]) @@ -38,7 +40,7 @@ module.exports = syrup.serial() function connectService(times) { function tryConnect(times, delay) { - return adb.openLocal(options.serial, 'localabstract:minirev') + return deviceClient.openLocal('localabstract:minirev') .timeout(10000) .catch(function(err) { if (/closed/.test(err.message) && times > 1) { diff --git a/lib/units/device/plugins/install.js b/lib/units/device/plugins/install.js index b06a6179..181dea6a 100644 --- a/lib/units/device/plugins/install.js +++ b/lib/units/device/plugins/install.js @@ -2,6 +2,7 @@ var stream = require('stream') var url = require('url') var util = require('util') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default var syrup = require('@devicefarmer/stf-syrup') var request = require('request') var Promise = require('bluebird') @@ -23,6 +24,7 @@ module.exports = syrup.serial() .dependency(require('../support/router')) .dependency(require('../support/push')) .define(function(options, adb, router, push) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:install') router.on(wire.InstallMessage, function(channel, message) { @@ -55,7 +57,7 @@ module.exports = syrup.serial() var source = new stream.Readable().wrap(req) var target = '/data/local/tmp/_app.apk' - return adb.push(options.serial, source, target) + return deviceClient.push(source, target) .timeout(10000) .then(function(transfer) { var resolver = Promise.defer() @@ -103,7 +105,7 @@ module.exports = syrup.serial() sendProgress('installing_app', guesstimate) return promiseutil.periodicNotify( - adb.installRemote(options.serial, apk) + deviceClient.installRemote(apk) .timeout(60000 * 5) .catch(function(err) { switch (err.code) { @@ -113,10 +115,10 @@ module.exports = syrup.serial() 'Uninstalling "%s" first due to inconsistent certificates' , pkg ) - return adb.uninstall(options.serial, pkg) + return deviceClient.uninstall(pkg) .timeout(15000) .then(function() { - return adb.installRemote(options.serial, apk) + return deviceClient.installRemote(apk) .timeout(60000 * 5) }) default: @@ -162,7 +164,7 @@ module.exports = syrup.serial() ) // Progress 90% sendProgress('launching_app', 90) - return adb.startActivity(options.serial, launchActivity) + return deviceClient.startActivity(launchActivity) .timeout(30000) } } @@ -205,7 +207,7 @@ module.exports = syrup.serial() var reply = wireutil.reply(options.serial) - adb.uninstall(options.serial, message.packageName) + deviceClient.uninstall(message.packageName) .then(function() { push.send([ channel diff --git a/lib/units/device/plugins/logcat.js b/lib/units/device/plugins/logcat.js index 22b055b8..b77b2d50 100644 --- a/lib/units/device/plugins/logcat.js +++ b/lib/units/device/plugins/logcat.js @@ -5,6 +5,7 @@ var logger = require('../../../util/logger') var wire = require('../../../wire') var wireutil = require('../../../wire/util') var lifecycle = require('../../../util/lifecycle') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default module.exports = syrup.serial() .dependency(require('../support/adb')) @@ -13,6 +14,7 @@ module.exports = syrup.serial() .dependency(require('./group')) .define(function(options, adb, router, push, group) { var log = logger.createLogger('device:plugins:logcat') + var deviceClient = new DeviceClient(adb, options.serial) var plugin = Object.create(null) var activeLogcat = null @@ -22,7 +24,7 @@ module.exports = syrup.serial() return plugin.stop() .then(function() { log.info('Starting logcat') - return adb.openLogcat(options.serial, { + return deviceClient.openLogcat({ clear: true }) }) diff --git a/lib/units/device/plugins/reboot.js b/lib/units/device/plugins/reboot.js index ec0bacba..51754524 100644 --- a/lib/units/device/plugins/reboot.js +++ b/lib/units/device/plugins/reboot.js @@ -3,6 +3,7 @@ var syrup = require('@devicefarmer/stf-syrup') var logger = require('../../../util/logger') var wire = require('../../../wire') var wireutil = require('../../../wire/util') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default module.exports = syrup.serial() .dependency(require('../support/adb')) @@ -10,13 +11,14 @@ module.exports = syrup.serial() .dependency(require('../support/push')) .define(function(options, adb, router, push) { var log = logger.createLogger('device:plugins:reboot') + var deviceClient = new DeviceClient(adb, options.serial) router.on(wire.RebootMessage, function(channel) { var reply = wireutil.reply(options.serial) log.important('Rebooting') - adb.reboot(options.serial) + deviceClient.reboot() .timeout(30000) .then(function() { push.send([ diff --git a/lib/units/device/plugins/screen/capture.js b/lib/units/device/plugins/screen/capture.js index ea34dd87..2d56363a 100644 --- a/lib/units/device/plugins/screen/capture.js +++ b/lib/units/device/plugins/screen/capture.js @@ -6,6 +6,7 @@ var adbkit = require('@devicefarmer/adbkit') var logger = require('../../../../util/logger') var wire = require('../../../../wire') var wireutil = require('../../../../wire/util') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default module.exports = syrup.serial() .dependency(require('../../support/adb')) @@ -15,6 +16,7 @@ module.exports = syrup.serial() .dependency(require('../../resources/minicap')) .dependency(require('../util/display')) .define(function(options, adb, router, push, storage, minicap, display) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:screen:capture') var plugin = Object.create(null) @@ -37,14 +39,14 @@ module.exports = syrup.serial() '-P %s -s >%s', projectionFormat(), file)) .then(adbkit.util.readAll) .then(function() { - return adb.stat(options.serial, file) + return deviceClient.stat(file) }) .then(function(stats) { if (stats.size === 0) { throw new Error('Empty screenshot; possibly secure screen?') } - return adb.pull(options.serial, file) + return deviceClient.pull(file) .then(function(transfer) { return storage.store('image', transfer, { filename: util.format('%s.jpg', options.serial) @@ -54,7 +56,7 @@ module.exports = syrup.serial() }) }) .finally(function() { - return adb.shell(options.serial, ['rm', '-f', file]) + return deviceClient.shell(['rm', '-f', file]) .then(adbkit.util.readAll) }) } diff --git a/lib/units/device/plugins/screen/stream.js b/lib/units/device/plugins/screen/stream.js index 5d1bb888..2093bb88 100644 --- a/lib/units/device/plugins/screen/stream.js +++ b/lib/units/device/plugins/screen/stream.js @@ -17,6 +17,7 @@ var BroadcastSet = require('./util/broadcastset') var StateQueue = require('../../../../util/statequeue') var RiskyStream = require('../../../../util/riskystream') var FailCounter = require('../../../../util/failcounter') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default module.exports = syrup.serial() .dependency(require('../../support/adb')) @@ -24,6 +25,7 @@ module.exports = syrup.serial() .dependency(require('../util/display')) .dependency(require('./options')) .define(function(options, adb, minicap, display, screenOptions) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:screen:stream') function FrameProducer(config) { @@ -276,7 +278,7 @@ module.exports = syrup.serial() FrameProducer.prototype._connectService = function() { function tryConnect(times, delay) { - return adb.openLocal(options.serial, 'localabstract:minicap') + return deviceClient.openLocal('localabstract:minicap') .timeout(10000) .then(function(out) { return out @@ -367,7 +369,7 @@ module.exports = syrup.serial() log.info('Sending %s to minicap', signal) return Promise.all([ output.waitForEnd() - , adb.shell(options.serial, ['kill', signum, pid]) + , deviceClient.shell(['kill', signum, pid]) .then(adbkit.util.readAll) .return(true) ]) diff --git a/lib/units/device/plugins/service.js b/lib/units/device/plugins/service.js index 28136c9a..b8cb2305 100644 --- a/lib/units/device/plugins/service.js +++ b/lib/units/device/plugins/service.js @@ -3,6 +3,7 @@ var events = require('events') var syrup = require('@devicefarmer/stf-syrup') var Promise = require('bluebird') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default var wire = require('../../../wire') var wireutil = require('../../../wire/util') @@ -36,6 +37,7 @@ module.exports = syrup.serial() .dependency(require('../support/sdk')) .dependency(require('../resources/service')) .define(function(options, adb, router, push, sdk, apk) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:service') var messageResolver = new MessageResolver() var plugin = new events.EventEmitter() @@ -65,7 +67,7 @@ module.exports = syrup.serial() function callService(intent) { var startServiceCmd = (sdk.level < 26) ? 'startservice' : 'start-foreground-service' log.info('using \'%s\' command for API %s', startServiceCmd, sdk.level) - return adb.shell(options.serial, util.format( + return deviceClient.shell(util.format( 'am %s --user 0 %s' , startServiceCmd, intent )) @@ -78,7 +80,7 @@ module.exports = syrup.serial() .timeout(10000) .then(function(line) { if (line.indexOf('--user') !== -1) { - return adb.shell(options.serial, util.format( + return deviceClient.shell(util.format( 'am %s %s' , startServiceCmd, intent )) @@ -277,7 +279,7 @@ module.exports = syrup.serial() .timeout(10000) }) .then(function() { - return adb.shell(options.serial, util.format( + return deviceClient.shell(util.format( "export CLASSPATH='%s'; exec app_process /system/bin '%s'" , apk.path , apk.main diff --git a/lib/units/device/plugins/shell.js b/lib/units/device/plugins/shell.js index 8064e9cd..3ff50363 100644 --- a/lib/units/device/plugins/shell.js +++ b/lib/units/device/plugins/shell.js @@ -4,6 +4,7 @@ var syrup = require('@devicefarmer/stf-syrup') var logger = require('../../../util/logger') var wire = require('../../../wire') var wireutil = require('../../../wire/util') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default module.exports = syrup.serial() .dependency(require('../support/adb')) @@ -11,6 +12,7 @@ module.exports = syrup.serial() .dependency(require('../support/push')) .dependency(require('../support/sub')) .define(function(options, adb, router, push, sub) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:shell') router.on(wire.ShellCommandMessage, function(channel, message) { @@ -18,7 +20,7 @@ module.exports = syrup.serial() log.info('Running shell command "%s"', message.command) - adb.shell(options.serial, message.command) + deviceClient.shell(message.command) .timeout(10000) .then(function(stream) { var resolver = Promise.defer() diff --git a/lib/units/device/plugins/store.js b/lib/units/device/plugins/store.js index 8b30c94f..805c3b08 100644 --- a/lib/units/device/plugins/store.js +++ b/lib/units/device/plugins/store.js @@ -3,19 +3,21 @@ var syrup = require('@devicefarmer/stf-syrup') var logger = require('../../../util/logger') var wire = require('../../../wire') var wireutil = require('../../../wire/util') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default module.exports = syrup.serial() .dependency(require('../support/router')) .dependency(require('../support/push')) .dependency(require('../support/adb')) .define(function(options, router, push, adb) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:store') router.on(wire.StoreOpenMessage, function(channel) { log.info('Opening Play Store') var reply = wireutil.reply(options.serial) - adb.startActivity(options.serial, { + deviceClient.startActivity({ action: 'android.intent.action.MAIN' , component: 'com.android.vending/.AssetBrowserActivity' // FLAG_ACTIVITY_RESET_TASK_IF_NEEDED diff --git a/lib/units/device/plugins/touch/index.js b/lib/units/device/plugins/touch/index.js index d2ada2bc..deb589c0 100644 --- a/lib/units/device/plugins/touch/index.js +++ b/lib/units/device/plugins/touch/index.js @@ -6,6 +6,7 @@ var split = require('split') var EventEmitter = require('eventemitter3') var adbkit = require('@devicefarmer/adbkit') var Parser = require('@devicefarmer/adbkit/dist/src/adb/parser') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default var wire = require('../../../../wire') var logger = require('../../../../util/logger') @@ -21,6 +22,7 @@ module.exports = syrup.serial() .dependency(require('../../resources/minitouch')) .dependency(require('../util/flags')) .define(function(options, adb, router, minitouch, flags) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:plugins:touch') function TouchConsumer(config) { @@ -259,7 +261,7 @@ module.exports = syrup.serial() TouchConsumer.prototype._connectService = function() { function tryConnect(times, delay) { - return adb.openLocal(options.serial, 'localabstract:minitouch') + return deviceClient.openLocal('localabstract:minitouch') .timeout(10000) .then(function(out) { return out @@ -350,7 +352,7 @@ module.exports = syrup.serial() log.info('Sending %s to minitouch', signal) return Promise.all([ output.waitForEnd() - , adb.shell(options.serial, ['kill', signum, pid]) + , deviceClient.shell(['kill', signum, pid]) .then(adbkit.util.readAll) .return(true) ]) diff --git a/lib/units/device/resources/minirev.js b/lib/units/device/resources/minirev.js index 63d3048e..f3e4e37f 100644 --- a/lib/units/device/resources/minirev.js +++ b/lib/units/device/resources/minirev.js @@ -9,12 +9,14 @@ var pathutil = require('../../../util/pathutil') var devutil = require('../../../util/devutil') var streamutil = require('../../../util/streamutil') var Resource = require('./util/resource') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default module.exports = syrup.serial() .dependency(require('../support/adb')) .dependency(require('../support/properties')) .dependency(require('../support/abi')) .define(function(options, adb, properties, abi) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:resources:minirev') var resources = { @@ -36,7 +38,7 @@ module.exports = syrup.serial() } function removeResource(res) { - return adb.shell(options.serial, ['rm', '-f', res.dest]) + return deviceClient.shell(['rm', '-f', res.dest]) .timeout(10000) .then(function(out) { return streamutil.readAll(out) @@ -45,7 +47,7 @@ module.exports = syrup.serial() } function pushResource(res) { - return adb.push(options.serial, res.src, res.dest, res.mode) + return deviceClient.push(res.src, res.dest, res.mode) .timeout(10000) .then(function(transfer) { return new Promise(function(resolve, reject) { @@ -60,7 +62,7 @@ module.exports = syrup.serial() log.info('Installing "%s" as "%s"', res.src, res.dest) function checkExecutable(res) { - return adb.stat(options.serial, res.dest) + return deviceClient.stat(res.dest) .timeout(5000) .then(function(stats) { // Can't use fs.constants.S_IXUSR due to differences on Windows. diff --git a/lib/units/device/resources/minitouch.js b/lib/units/device/resources/minitouch.js index fcb4e858..b4d61b7e 100644 --- a/lib/units/device/resources/minitouch.js +++ b/lib/units/device/resources/minitouch.js @@ -9,11 +9,13 @@ var pathutil = require('../../../util/pathutil') var devutil = require('../../../util/devutil') var streamutil = require('../../../util/streamutil') var Resource = require('./util/resource') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default module.exports = syrup.serial() .dependency(require('../support/adb')) .dependency(require('../support/abi')) .define(function(options, adb, abi) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:resources:minitouch') var resources = { @@ -35,7 +37,7 @@ module.exports = syrup.serial() } function removeResource(res) { - return adb.shell(options.serial, ['rm', '-f', res.dest]) + return deviceClient.shell(['rm', '-f', res.dest]) .timeout(10000) .then(function(out) { return streamutil.readAll(out) @@ -44,7 +46,7 @@ module.exports = syrup.serial() } function pushResource(res) { - return adb.push(options.serial, res.src, res.dest, res.mode) + return deviceClient.push(res.src, res.dest, res.mode) .timeout(10000) .then(function(transfer) { return new Promise(function(resolve, reject) { @@ -59,7 +61,7 @@ module.exports = syrup.serial() log.info('Installing "%s" as "%s"', res.src, res.dest) function checkExecutable(res) { - return adb.stat(options.serial, res.dest) + return deviceClient.stat(res.dest) .timeout(5000) .then(function(stats) { // Can't use fs.constants.S_IXUSR due to differences on Windows. @@ -107,7 +109,7 @@ module.exports = syrup.serial() return { bin: resources.bin.dest , run: function(cmd) { - return adb.shell(options.serial, util.format( + return deviceClient.shell(util.format( 'exec %s%s' , resources.bin.dest , cmd ? util.format(' %s', cmd) : '' diff --git a/lib/units/device/resources/service.js b/lib/units/device/resources/service.js index 741c1533..c4e4a5e2 100644 --- a/lib/units/device/resources/service.js +++ b/lib/units/device/resources/service.js @@ -1,5 +1,6 @@ var util = require('util') +var DeviceClient = require('@devicefarmer/adbkit/dist/src/adb/DeviceClient').default var syrup = require('@devicefarmer/stf-syrup') var ProtoBuf = require('protobufjs') var semver = require('semver') @@ -12,6 +13,7 @@ var logger = require('../../../util/logger') module.exports = syrup.serial() .dependency(require('../support/adb')) .define(function(options, adb) { + var deviceClient = new DeviceClient(adb, options.serial) var log = logger.createLogger('device:resources:service') var builder = ProtoBuf.loadProtoFile( pathutil.vendor('STFService/wire.proto')) @@ -30,7 +32,7 @@ module.exports = syrup.serial() } function getPath() { - return adb.shell(options.serial, ['pm', 'path', resource.pkg]) + return deviceClient.shell(['pm', 'path', resource.pkg]) .timeout(10000) .then(function(out) { return streamutil.findLine(out, (/^package:/)) @@ -46,7 +48,7 @@ module.exports = syrup.serial() return getPath() .then(function(installedPath) { log.info('Running version check') - return adb.shell(options.serial, util.format( + return deviceClient.shell(util.format( "export CLASSPATH='%s';" + " exec app_process /system/bin '%s' --version 2>/dev/null" , installedPath @@ -74,11 +76,11 @@ module.exports = syrup.serial() log.info('Installing STFService') // Uninstall first to make sure we don't have any certificate // issues. - return adb.uninstall(options.serial, resource.pkg) + return deviceClient.uninstall(resource.pkg) .timeout(15000) .then(function() { return promiseutil.periodicNotify( - adb.install(options.serial, resource.apk) + deviceClient.install(resource.apk) , 20000 ) .timeout(65000)