Skip to content

Commit 11ca240

Browse files
Merge pull request fails-components#108 from fails-components/chore/add-test-framework
Chore/add test framework
2 parents fc4a803 + 618afc6 commit 11ca240

23 files changed

+1376
-189
lines changed

.github/workflows/libtest-linux.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,7 @@ jobs:
3939
run: npm run build
4040

4141
- name: Run unit tests
42-
run: NODE_ENV=production npm test
42+
run: NODE_ENV=production npm test
43+
44+
- name: Run old unit tests
45+
run: NODE_ENV=production npm run oldtest

.github/workflows/libtest-macos.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,6 @@ jobs:
4242

4343
- name: Run unit tests
4444
run: NODE_ENV=production npm test
45+
46+
- name: Run old unit tests
47+
run: NODE_ENV=production npm run oldtest

.github/workflows/libtest-windows.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,7 @@ jobs:
4646
$env:NODE_ENV="production"
4747
npm test
4848
49+
- name: Run old unit tests
50+
run: |
51+
$env:NODE_ENV="production"
52+
npm run oldtest

.vscode/launch.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
"name": "Launch Program",
77
"preLaunchTask": "npm: build-debug",
88
"program": "/usr/local/bin/node",
9-
"args": [
10-
"/workspaces/webtransport/test/test.js"
9+
"args": ["node_modules/.bin/_mocha",
10+
"test/bidirectional-streams.spec.js"
11+
// "/workspaces/webtransport/test/test.js"
1112
]
1213
}]
1314
}

lib/client.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export class Http3Client extends Http3WebTransport {
5151
this.quicconnectedProm.reject(new Error('Timeout client connection'))
5252
delete this.quicconnectedProm
5353
}
54-
}, 5000)
54+
}, 8000)
5555
await this.quicconnected
5656
// now create Webtransport session
5757
setTimeout(() => {

lib/server.js

Lines changed: 40 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@ import { Http3WebTransport } from './transport.js'
22
import { ReadableStream } from 'node:stream/web'
33
import { Http3WTSession } from './session.js'
44
import { isIPv4 } from 'net'
5+
// @ts-ignore
56
import { defer } from './utils.js'
67

78
/**
89
* @typedef {import('./types').WebTransportSession} WebTransportSession
910
* @typedef {import('./types').NativeHttp3WTSession} NativeHttp3WTSession
1011
* @typedef {import('./types').Http3ServerEventHandler} Http3ServerEventHandler
1112
* @typedef {import('./types').Http3WTServerSessionVisitorEvent} Http3WTServerSessionVisitorEvent
12-
* @typedef {import('./types').Http3ServerListeningEvent} Http3ServerListeningEvent
13-
* @typedef {import('./types').Http3ServerCloseEvent} Http3ServerCloseEvent
14-
* @typedef {import('./types').Http3ServerErrorEvent} Http3ServerErrorEvent
13+
* @typedef {import('./types').ServerStatusEvent} ServerStatusEvent
1514
*/
1615

1716
/**
@@ -31,6 +30,9 @@ export class Http3Server extends Http3WebTransport {
3130
/** @type {Record<string, ReadableStreamController<any>>} */
3231
this.sessionController = {}
3332

33+
this.port = null
34+
this.host = null
35+
3436
this._ready = defer()
3537
this.ready = this._ready.promise
3638

@@ -54,16 +56,16 @@ export class Http3Server extends Http3WebTransport {
5456
/**
5557
* @returns {{ port: number, host: string, family: 'IPv4' | 'IPv6' } | null}
5658
*/
57-
address () {
58-
if (this.transportInt.port == null) {
59-
console.info('returning numll')
59+
address() {
60+
if (this.port == null || this.host == null) {
61+
console.info('returning null')
6062
return null
6163
}
6264

6365
return {
64-
port: this.transportInt.port,
65-
host: this.transportInt.host,
66-
family: isIPv4(this.transportInt.host) ? 'IPv4' : 'IPv6'
66+
port: this.port,
67+
host: this.host,
68+
family: isIPv4(this.host) ? 'IPv4' : 'IPv6'
6769
}
6870
}
6971

@@ -100,28 +102,48 @@ export class Http3Server extends Http3WebTransport {
100102
}
101103

102104
/**
103-
* @param {Http3ServerErrorEvent} evt
104105
*/
105-
onHttp3ServerError(evt) {
106+
onServerError() {
106107
this._ready.reject()
107108
}
108109

109110
/**
110-
* @param {Http3ServerListeningEvent} evt
111111
*/
112-
onHttp3ServerListening(evt) {
112+
onServerListening() {
113113
this._ready.resolve()
114114
}
115115

116116
/**
117-
* @param {Http3ServerCloseEvent} evt
118117
*/
119-
onHttp3ServerClose(evt) {
118+
onServerClose() {
120119
this._closed.resolve()
121120
}
122121

123122
/**
124-
* @param {Http3WTServerSessionVisitorEvent | Http3ServerErrorEvent | Http3ServerListeningEvent | Http3ServerCloseEvent} args
123+
* @param {ServerStatusEvent} evt
124+
*/
125+
onServerStatus(evt) {
126+
if (evt.host) this.host = evt.host
127+
if (evt.port) this.port = evt.port
128+
129+
switch (evt.status) {
130+
case 'close':
131+
this.onServerClose()
132+
break
133+
case 'listening':
134+
this.onServerListening()
135+
break
136+
case 'error':
137+
this.onServerListening()
138+
break
139+
default: {
140+
throw new Error('unknown status')
141+
}
142+
}
143+
}
144+
145+
/**
146+
* @param {Http3WTServerSessionVisitorEvent | ServerStatusEvent} args
125147
*/
126148
customCallback(args) {
127149
// console.log('incoming callback server', args)
@@ -130,16 +152,9 @@ export class Http3Server extends Http3WebTransport {
130152
case 'Http3WTSessionVisitor':
131153
this.onHttp3WTSessionVisitor(args)
132154
break
133-
case 'Http3ServerListening':
134-
this.onHttp3ServerListening(args)
135-
break
136-
case 'Http3ServerClose':
137-
this.onHttp3ServerClose(args)
155+
case 'ServerStatus':
156+
this.onServerStatus(args)
138157
break
139-
case 'Http3ServerError':
140-
this.onHttp3ServerError(args)
141-
break
142-
143158
default: {
144159
throw new Error('unknown purpose')
145160
}

lib/types.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -141,22 +141,20 @@ export interface Http3ServerListeningEvent {
141141
/**
142142
* The Http3 server has stopped listening on the specified port
143143
*/
144-
export interface Http3ServerCloseEvent {
145-
purpose: 'Http3ServerClose'
144+
export interface ServerStatusEvent {
145+
port: number | null
146+
host: string | null
147+
purpose: 'ServerStatus',
148+
status: 'error' | 'listening' | 'close'
146149
}
147150

148-
/**
149-
* The Http3 server failed to listen on the specified port
150-
*/
151-
export interface Http3ServerErrorEvent {
152-
purpose: 'Http3ServerError'
153-
}
154151

155152
export interface Http3ServerEventHandler {
156153
onHttp3WTSessionVisitor: (evt: Http3WTServerSessionVisitorEvent) => void
157-
onHttp3ServerError: (evt: Http3ServerErrorEvent) => void
158-
onHttp3ServerListening: (evt: Http3ServerListeningEvent) => void
159-
onHttp3ServerClose: (evt: Http3ServerCloseEvent) => void
154+
onServerError: () => void
155+
onServerListening: () => void
156+
onServerClose: () => void
157+
onServerStatus: (evt: ServerStatusEvent) => void
160158
}
161159

162160
/**

0 commit comments

Comments
 (0)