STF 通过 STF 管理手机池,测试时动态分配手机资源,问题:没法自动生成 Access Token

george · 2019年07月11日 · 最后由 张沛 回复于 2019年10月25日 · 3010 次阅读

使用 stf 搭建一个 100 台左右的手机池,非常方便。

测试 job 通过 jenkins 管理,每个 job 需要使用的手机,在 job 运行时,通过 stf api 动态加载。

我查阅了 stf 的官方网页,
https://github.com/openstf/stf/blob/master/doc/API.md
读取 STF 手机池中的所有手机信息:
GET /api/v1/devicescurl -H "Authorization: Bearer YOUR-TOKEN-HERE" https://stf.example.org/api/v1/devices
占用 STF 中的手机:
curl -X POST --header "Content-Type: application/json" --data '{"serial":"EP7351U3WQ"}' -H "Authorization: Bearer YOUR-TOKEN-HERE" https://stf.example.org/api/v1/user/devices

释放占用的手机:
curl -X DELETE -H "Authorization: Bearer YOUR-TOKEN-HERE" https://stf.example.org/api/v1/user/devices/{serial}

问题来了: 所有的操作都需要一个 YOUR-TOKEN-HERE
这个 token 是无法自动生成的,需要手动到 stf 的 ui 界面上手动点击生成。如果我有 50 个 job 需要动态申请手机,那么我希望的测试模式就会因为这个 token 的原因无法实现。

请教,怎么解决这个 token?或者是否有其它方式动态锁定手机?谢谢!

共收到 9 条回复 时间 点赞

数据库

0x88 回复

你好,能再具体一点吗

这个 token 生成后可以一直使用啊,不会过期,你直接存在 jenkins 里面。

三楼说的读,这个是一直用的,不需要重复的搞。

token 能一直使用,不过每个 job 每次运行需要动态分配不同数量的手机。在 job 数量非常多时,就需要预先注册非常多的账号来申请 token.对于自动扩展手机,增加 job 不是很方便

经过测试,用不同账号申请不同作用的手机,每个账号可以绑定一批不同的电脑。
不用自动生成 token,也可以做大规模自动化测试。

app.get('/auth/api/vi/accessToken/generate', function(req, res) {
var params = url.parse(req.url, true).query
var email = params.um + '@douyole.com'
var name = params.name

log.info('自定义 创建 token email=', email)
log.info('自定义 创建 token name=', name)
var jwt = jwtutil.encode({
payload: {
email: email
, name: name
}
, secret: options.secret
})

var tokenId = util.format('%s-%s', uuid.v4(), uuid.v4()).replace(/-/g, '')
var title = '系统生成:' + tokenId

log.info('自定义 创建 token title=', title)

return dbapi.saveUserAccessToken(email, {
title: title
, id: tokenId
, jwt: jwt
}).then(function() {
res.status(200)
.json({
success: true
, token: tokenId
})
})
})

自己写个接口就行了。

张沛 回复

感谢指教
这个是获取 token 的方式吗?dbapi 是哪个库里面的

george 回复

你自己搜索应该所搜的出来。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册