3
3
const pull = require ( 'pull-stream' )
4
4
const WebSocketStarRendezvous = require ( 'libp2p-websocket-star-rendezvous' )
5
5
const sigServer = require ( 'libp2p-webrtc-star/src/sig-server' )
6
+ const promisify = require ( 'promisify-es6' )
7
+ const mplex = require ( 'pull-mplex' )
8
+ const spdy = require ( 'libp2p-spdy' )
9
+ const PeerBook = require ( 'peer-book' )
10
+ const PeerId = require ( 'peer-id' )
11
+ const PeerInfo = require ( 'peer-info' )
12
+ const path = require ( 'path' )
13
+ const Switch = require ( 'libp2p-switch' )
14
+ const WebSockets = require ( 'libp2p-websockets' )
6
15
7
16
const Node = require ( './test/utils/bundle-nodejs.js' )
8
17
const {
@@ -15,9 +24,67 @@ let wrtcRendezvous
15
24
let wsRendezvous
16
25
let node
17
26
let peerInfo
27
+ let switchA
28
+ let switchB
29
+
30
+ function echo ( protocol , conn ) { pull ( conn , conn ) }
31
+ function idJSON ( id ) {
32
+ const p = path . join ( __dirname , `./test/switch/test-data/id-${ id } .json` )
33
+ return require ( p )
34
+ }
35
+
36
+ function createSwitchA ( ) {
37
+ return new Promise ( ( resolve , reject ) => {
38
+ PeerId . createFromJSON ( idJSON ( 1 ) , ( err , id ) => {
39
+ if ( err ) { return reject ( err ) }
40
+
41
+ const peerA = new PeerInfo ( id )
42
+ const maA = '/ip4/127.0.0.1/tcp/15337/ws'
43
+
44
+ peerA . multiaddrs . add ( maA )
45
+ const sw = new Switch ( peerA , new PeerBook ( ) )
46
+
47
+ sw . transport . add ( 'ws' , new WebSockets ( ) )
48
+ sw . start ( ( err ) => {
49
+ if ( err ) { return reject ( err ) }
50
+ resolve ( sw )
51
+ } )
52
+ } )
53
+ } )
54
+ }
55
+
56
+ function createSwitchB ( ) {
57
+ return new Promise ( ( resolve , reject ) => {
58
+ PeerId . createFromJSON ( idJSON ( 2 ) , ( err , id ) => {
59
+ if ( err ) { return reject ( err ) }
60
+
61
+ const peerB = new PeerInfo ( id )
62
+ const maB = '/ip4/127.0.0.1/tcp/15347/ws'
63
+
64
+ peerB . multiaddrs . add ( maB )
65
+ const sw = new Switch ( peerB , new PeerBook ( ) )
66
+
67
+ sw . transport . add ( 'ws' , new WebSockets ( ) )
68
+ sw . connection . addStreamMuxer ( mplex )
69
+ sw . connection . addStreamMuxer ( spdy )
70
+ sw . connection . reuse ( )
71
+ sw . handle ( '/echo/1.0.0' , echo )
72
+ sw . start ( ( err ) => {
73
+ if ( err ) { return reject ( err ) }
74
+ resolve ( sw )
75
+ } )
76
+ } )
77
+ } )
78
+ }
18
79
19
80
const before = async ( ) => {
20
- [ wrtcRendezvous , wsRendezvous , peerInfo ] = await Promise . all ( [
81
+ [
82
+ wrtcRendezvous ,
83
+ wsRendezvous ,
84
+ peerInfo ,
85
+ switchA ,
86
+ switchB
87
+ ] = await Promise . all ( [
21
88
sigServer . start ( {
22
89
port : WRTC_RENDEZVOUS_MULTIADDR . nodeAddress ( ) . port
23
90
// cryptoChallenge: true TODO: needs https://github.com/libp2p/js-libp2p-webrtc-star/issues/128
@@ -28,7 +95,9 @@ const before = async () => {
28
95
strictMultiaddr : false ,
29
96
cryptoChallenge : true
30
97
} ) ,
31
- getPeerRelay ( )
98
+ getPeerRelay ( ) ,
99
+ createSwitchA ( ) ,
100
+ createSwitchB ( )
32
101
] )
33
102
34
103
node = new Node ( {
@@ -52,7 +121,9 @@ const after = () => {
52
121
return Promise . all ( [
53
122
wrtcRendezvous . stop ( ) ,
54
123
wsRendezvous . stop ( ) ,
55
- node . stop ( )
124
+ node . stop ( ) ,
125
+ promisify ( switchA . stop , { context : switchA } ) ( ) ,
126
+ promisify ( switchB . stop , { context : switchB } ) ( )
56
127
] )
57
128
}
58
129
0 commit comments