提交 62ce6183 编写于 作者: Huan (李卓桓)'s avatar Huan (李卓桓)

fix(test): clearTimeout for prevent race condition(?)

上级 61d82006
...@@ -11,17 +11,8 @@ import { ...@@ -11,17 +11,8 @@ import {
Config, Config,
log, log,
} from '../../src/config' } from '../../src/config'
// import { Message } from '../../src/message'
import PuppetWeb from '../../src/puppet-web' import PuppetWeb from '../../src/puppet-web'
import Server from '../../src/puppet-web/server' import PuppetWebServer from '../../src/puppet-web/server'
// import { spy } from 'sinon'
// process.on('unhandledRejection', (reason, p) => {
// console.log('!!!!!!! unhandledRejection in puppet-web.spec.ts')
// console.log('Unhandled Rejection at: Promise', p, 'reason:', reason)
// console.log('!!!!!!!')
// })
/** /**
* the reason why use `test.serial` here is: * the reason why use `test.serial` here is:
...@@ -56,25 +47,25 @@ test.serial('login/logout events', async t => { ...@@ -56,25 +47,25 @@ test.serial('login/logout events', async t => {
}) })
test.serial('server/browser socketio ding', async t => { test.serial('server/browser socketio ding', async t => {
const pw = new PuppetWeb() const puppet = new PuppetWeb()
t.truthy(pw, 'should instantiated a PuppetWeb') t.truthy(puppet, 'should instantiated a PuppetWeb')
Config.puppetInstance(pw) Config.puppetInstance(puppet)
const EXPECTED_DING_DATA = 'dingdong' const EXPECTED_DING_DATA = 'dingdong'
try { try {
await pw.init() await puppet.init()
t.pass('should be inited') t.pass('should be inited')
const ret = await dingSocket(pw.server) const ret = await dingSocket(puppet.server)
t.is(ret, EXPECTED_DING_DATA, 'should got EXPECTED_DING_DATA after resolved dingSocket()') t.is(ret, EXPECTED_DING_DATA, 'should got EXPECTED_DING_DATA after resolved dingSocket()')
} catch (e) { } catch (e) {
t.fail(e && e.message || e || 'unknown exception???') t.fail(e && e.message || e || 'unknown exception???')
} }
try { try {
await pw.quit() await puppet.quit()
} catch (err) { } catch (err) {
t.fail(err.message) t.fail(err.message)
} }
...@@ -83,17 +74,17 @@ test.serial('server/browser socketio ding', async t => { ...@@ -83,17 +74,17 @@ test.serial('server/browser socketio ding', async t => {
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
function dingSocket(server: Server) { function dingSocket(server: PuppetWebServer) {
const maxTime = 60000 // 60s const maxTime = 60000 // 60s
const waitTime = 3000 const waitTime = 3000
let totalTime = 0 let totalTime = 0
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
log.verbose('TestPuppetWeb', 'dingSocket()') log.verbose('TestPuppetWeb', 'dingSocket()')
setTimeout(_ => { const timeoutTimer = setTimeout(_ => {
return reject('dingSocket() no response timeout after ' + 2 * maxTime) reject('dingSocket() no response timeout after ' + 2 * maxTime)
}, 2 * maxTime) }, 2 * maxTime)
.unref() timeoutTimer.unref()
testDing() testDing()
return return
...@@ -113,7 +104,10 @@ test.serial('server/browser socketio ding', async t => { ...@@ -113,7 +104,10 @@ test.serial('server/browser socketio ding', async t => {
log.silly('TestPuppetWeb', 'dingSocket() server.socketClient: %s', server.socketClient) log.silly('TestPuppetWeb', 'dingSocket() server.socketClient: %s', server.socketClient)
server.socketClient.once('dong', data => { server.socketClient.once('dong', data => {
log.verbose('TestPuppetWeb', 'socket recv event dong: ' + data) log.verbose('TestPuppetWeb', 'socket recv event dong: ' + data)
clearTimeout(timeoutTimer)
return resolve(data) return resolve(data)
}) })
server.socketClient.emit('ding', EXPECTED_DING_DATA) server.socketClient.emit('ding', EXPECTED_DING_DATA)
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册