1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-04 10:19:30 +02:00

Port to new adbkit.

This commit is contained in:
Simo Kinnunen 2014-03-12 12:42:10 +09:00
parent ca401d7b9c
commit d90d450400
4 changed files with 38 additions and 32 deletions

View file

@ -65,7 +65,7 @@ module.exports = function(options) {
}) })
// Adb // Adb
var adb = Promise.promisifyAll(adbkit.createClient()) var adb = adbkit.createClient()
// Input // Input
var sub = zmq.socket('sub') var sub = zmq.socket('sub')
@ -101,13 +101,13 @@ module.exports = function(options) {
selfDestruct() selfDestruct()
}) })
promiseutil.periodicNotify(adb.waitBootCompleteAsync(options.serial), 1000) promiseutil.periodicNotify(adb.waitBootComplete(options.serial), 1000)
.progressed(function() { .progressed(function() {
log.info('Waiting for boot to complete') log.info('Waiting for boot to complete')
}) })
.then(function() { .then(function() {
log.info('Gathering properties') log.info('Gathering properties')
return adb.getPropertiesAsync(options.serial) return adb.getProperties(options.serial)
}) })
.then(function(properties) { .then(function(properties) {
log.info('Solving identity') log.info('Solving identity')
@ -118,9 +118,10 @@ module.exports = function(options) {
return Promise.all(Object.keys(vendor).map(function(id) { return Promise.all(Object.keys(vendor).map(function(id) {
var res = vendor[id] var res = vendor[id]
log.info(util.format('Pushing vendor file "%s"', res.dest)) log.info(util.format('Pushing vendor file "%s"', res.dest))
return adb.pushAsync(options.serial, res.src, res.dest, res.mode) return adb.push(options.serial, res.src, res.dest, res.mode)
.then(function(transfer) { .then(function(transfer) {
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
transfer.on('error', reject)
transfer.on('end', resolve) transfer.on('end', resolve)
}) })
}) })
@ -148,7 +149,7 @@ module.exports = function(options) {
return devutil.ensureUnusedPort(adb, options.serial, 2870) return devutil.ensureUnusedPort(adb, options.serial, 2870)
.then(function(port) { .then(function(port) {
var log = logger.createLogger('device:remote:http') var log = logger.createLogger('device:remote:http')
return adb.shellAsync(options.serial, [ return adb.shell(options.serial, [
vendor.bin.dest vendor.bin.dest
, '--lib', vendor.lib.dest , '--lib', vendor.lib.dest
, '--listen-http', port , '--listen-http', port
@ -173,7 +174,7 @@ module.exports = function(options) {
log.info('Opening device HTTP API forwarder on "%s"', url) log.info('Opening device HTTP API forwarder on "%s"', url)
return adb.forwardAsync( return adb.forward(
options.serial options.serial
, util.format('tcp:%d', ours) , util.format('tcp:%d', ours)
, util.format('tcp:%d', port) , util.format('tcp:%d', port)
@ -295,7 +296,7 @@ module.exports = function(options) {
return devutil.ensureUnusedPort(adb, options.serial, 2820) return devutil.ensureUnusedPort(adb, options.serial, 2820)
.then(function(port) { .then(function(port) {
var log = logger.createLogger('device:remote:touch') var log = logger.createLogger('device:remote:touch')
return adb.shellAsync(options.serial, [ return adb.shell(options.serial, [
vendor.bin.dest vendor.bin.dest
, '--lib', vendor.lib.dest , '--lib', vendor.lib.dest
, '--listen-input', port , '--listen-input', port
@ -327,7 +328,7 @@ module.exports = function(options) {
return devutil.ensureUnusedPort(adb, options.serial, 2830) return devutil.ensureUnusedPort(adb, options.serial, 2830)
.then(function(port) { .then(function(port) {
var log = logger.createLogger('device:remote:stats') var log = logger.createLogger('device:remote:stats')
return adb.shellAsync(options.serial, [ return adb.shell(options.serial, [
vendor.bin.dest vendor.bin.dest
, '--lib', vendor.lib.dest , '--lib', vendor.lib.dest
, '--listen-stats', port , '--listen-stats', port
@ -343,7 +344,7 @@ module.exports = function(options) {
}) })
.then(function() { .then(function() {
log.info('Launching logcat service') log.info('Launching logcat service')
return adb.openLogcatAsync(options.serial) return adb.openLogcat(options.serial)
.then(function(logcat) { .then(function(logcat) {
services.logcat = vitals.register('device:logcat', logcat) services.logcat = vitals.register('device:logcat', logcat)
resetLogcat() resetLogcat()
@ -489,7 +490,7 @@ module.exports = function(options) {
, seq = 0 , seq = 0
log.info('Running shell command "%s"', message.command) log.info('Running shell command "%s"', message.command)
adb.shellAsync(options.serial, message.command) adb.shell(options.serial, message.command)
.then(function(stream) { .then(function(stream) {
var resolver = Promise.defer() var resolver = Promise.defer()
, timer , timer

View file

@ -14,7 +14,7 @@ var procutil = require('../util/procutil')
module.exports = function(options) { module.exports = function(options) {
var log = logger.createLogger('provider') var log = logger.createLogger('provider')
var client = Promise.promisifyAll(adb.createClient()) var client = adb.createClient()
var workers = {} var workers = {}
var solo = wireutil.makePrivateChannel() var solo = wireutil.makePrivateChannel()
var lists = { var lists = {
@ -81,7 +81,7 @@ module.exports = function(options) {
}) })
// Track and manage devices // Track and manage devices
client.trackDevicesAsync().then(function(tracker) { client.trackDevices().then(function(tracker) {
log.info('Tracking devices') log.info('Tracking devices')
// Helper for ignoring unwanted devices // Helper for ignoring unwanted devices
@ -349,6 +349,16 @@ module.exports = function(options) {
flippedTracker.emit(device.id, 'remove', device) flippedTracker.emit(device.id, 'remove', device)
})) }))
tracker.on('error', function(err) {
log.fatal('Tracker had an error:', err.stack)
process.exit(1)
})
tracker.on('end', function() {
log.fatal('Tracker ended')
process.exit(1)
})
sub.on('message', wirerouter() sub.on('message', wirerouter()
.on(wire.DeviceRegisteredMessage, function(channel, message) { .on(wire.DeviceRegisteredMessage, function(channel, message) {
flippedTracker.emit(message.serial, 'register') flippedTracker.emit(message.serial, 'register')

View file

@ -30,7 +30,7 @@ util.inherits(IncompatibleVersionError, Error)
inputAgent.IncompatibleVersionError = IncompatibleVersionError inputAgent.IncompatibleVersionError = IncompatibleVersionError
inputAgent.getInstalledPath = function(adb, serial) { inputAgent.getInstalledPath = function(adb, serial) {
return adb.shellAsync(serial, util.format("pm path '%s'", pkg)) return adb.shell(serial, util.format("pm path '%s'", pkg))
.then(function(out) { .then(function(out) {
return streamutil.findLine(out, (/^package:/)) return streamutil.findLine(out, (/^package:/))
.then(function(line) { .then(function(line) {
@ -42,7 +42,7 @@ inputAgent.getInstalledPath = function(adb, serial) {
inputAgent.ensureInstalled = function(adb, serial) { inputAgent.ensureInstalled = function(adb, serial) {
return inputAgent.getInstalledPath(adb, serial) return inputAgent.getInstalledPath(adb, serial)
.then(function(installedPath) { .then(function(installedPath) {
return adb.shellAsync(serial, util.format( return adb.shell(serial, util.format(
"export CLASSPATH='%s';" "export CLASSPATH='%s';"
+ ' exec app_process /system/bin' + ' exec app_process /system/bin'
+ ' jp.co.cyberagent.stf.input.agent.InputAgent --version' + ' jp.co.cyberagent.stf.input.agent.InputAgent --version'
@ -63,7 +63,7 @@ inputAgent.ensureInstalled = function(adb, serial) {
}) })
}) })
.catch(function() { .catch(function() {
return adb.installAsync(serial, apk) return adb.install(serial, apk)
.then(function() { .then(function() {
return inputAgent.getInstalledPath(adb, serial) return inputAgent.getInstalledPath(adb, serial)
}) })
@ -73,7 +73,7 @@ inputAgent.ensureInstalled = function(adb, serial) {
inputAgent.openAgent = function(adb, serial) { inputAgent.openAgent = function(adb, serial) {
return inputAgent.ensureInstalled(adb, serial) return inputAgent.ensureInstalled(adb, serial)
.then(function(installedPath) { .then(function(installedPath) {
return adb.shellAsync(serial, util.format( return adb.shell(serial, util.format(
"export CLASSPATH='%s';" "export CLASSPATH='%s';"
+ ' exec app_process /system/bin' + ' exec app_process /system/bin'
+ ' jp.co.cyberagent.stf.input.agent.InputAgent' + ' jp.co.cyberagent.stf.input.agent.InputAgent'
@ -87,7 +87,7 @@ inputAgent.openService = function(adb, serial) {
.then(function() { .then(function() {
var intent = var intent =
'-a jp.co.cyberagent.stf.input.agent.InputService.ACTION_START' '-a jp.co.cyberagent.stf.input.agent.InputService.ACTION_START'
return adb.shellAsync(serial, util.format( return adb.shell(serial, util.format(
'am startservice --user 0 %s || am startservice %s' 'am startservice --user 0 %s || am startservice %s'
, intent , intent
, intent , intent
@ -97,7 +97,7 @@ inputAgent.openService = function(adb, serial) {
inputAgent.stopService = function(adb, serial) { inputAgent.stopService = function(adb, serial) {
var intent = '-a jp.co.cyberagent.stf.input.agent.InputService.ACTION_STOP' var intent = '-a jp.co.cyberagent.stf.input.agent.InputService.ACTION_STOP'
return adb.shellAsync(serial, util.format( return adb.shell(serial, util.format(
'am startservice --user 0 %s || am startservice %s' 'am startservice --user 0 %s || am startservice %s'
, intent , intent
, intent , intent

View file

@ -10,6 +10,10 @@ var pathutil = require('./pathutil')
var devutil = module.exports = Object.create(null) var devutil = module.exports = Object.create(null)
function closedError(err) {
return err.message.indexOf('closed') !== -1
}
devutil.matchesRequirements = function(capabilities, requirements) { devutil.matchesRequirements = function(capabilities, requirements) {
return requirements.every(function(req) { return requirements.every(function(req) {
var capability = capabilities[req.name] var capability = capabilities[req.name]
@ -61,10 +65,7 @@ devutil.vendorFiles = function(identity) {
} }
devutil.ensureUnusedPort = function(adb, serial, port) { devutil.ensureUnusedPort = function(adb, serial, port) {
function closedError(err) { return adb.openTcp(serial, port)
return err.message === 'closed'
}
return adb.openTcpAsync(serial, port)
.then(function(conn) { .then(function(conn) {
conn.end() conn.end()
throw new Error(util.format('Port "%d" should be unused', port)) throw new Error(util.format('Port "%d" should be unused', port))
@ -75,10 +76,7 @@ devutil.ensureUnusedPort = function(adb, serial, port) {
} }
devutil.waitForPort = function(adb, serial, port) { devutil.waitForPort = function(adb, serial, port) {
function closedError(err) { return adb.openTcp(serial, port)
return err.message === 'closed'
}
return adb.openTcpAsync(serial, port)
.then(function(conn) { .then(function(conn) {
conn.port = port conn.port = port
return conn return conn
@ -92,10 +90,7 @@ devutil.waitForPort = function(adb, serial, port) {
} }
devutil.waitForPortToFree = function(adb, serial, port) { devutil.waitForPortToFree = function(adb, serial, port) {
function closedError(err) { return adb.openTcp(serial, port)
return err.message === 'closed'
}
return adb.openTcpAsync(serial, port)
.then(function(conn) { .then(function(conn) {
var resolver = Promise.defer() var resolver = Promise.defer()
@ -126,7 +121,7 @@ devutil.listPidsByComm = function(adb, serial, comm, bin) {
shell: true shell: true
} }
return adb.shellAsync(serial, ['ps', comm]) return adb.shell(serial, ['ps', comm])
.then(function(out) { .then(function(out) {
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
var header = false var header = false
@ -168,7 +163,7 @@ devutil.killProcsByComm = function(adb, serial, comm, bin, mode) {
if (!pids.length) { if (!pids.length) {
return Promise.resolve() return Promise.resolve()
} }
return adb.shellAsync(serial, ['kill', mode || -15].concat(pids)) return adb.shell(serial, ['kill', mode || -15].concat(pids))
.then(function(out) { .then(function(out) {
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
out.on('end', resolve) out.on('end', resolve)