@@ -12,7 +12,7 @@ const TopicNode = require('../../src/dag/topic-node')
12
12
const EventNode = require ( '../../src/dag/event-node' )
13
13
const { eventually, createNodes } = require ( '../utils' )
14
14
15
- describe ( 'multiple nodes' , function ( ) {
15
+ describe ( 'multiple nodes' , function ( ) {
16
16
this . timeout ( 50000 )
17
17
let nodes
18
18
// Topics
@@ -27,72 +27,85 @@ describe('multiple nodes', function () {
27
27
const subscriber = 80
28
28
const subscriberNum = 5
29
29
30
- before ( ( done ) => {
30
+ before ( done => {
31
31
createNodes ( nodeNumber , ( err , p2pNodes ) => {
32
32
expect ( err ) . not . to . exist
33
- nodes = p2pNodes . map ( ( node ) => new Pulsarcast ( node ) )
33
+ nodes = p2pNodes . map ( node => new Pulsarcast ( node ) )
34
34
done ( )
35
35
} )
36
36
} )
37
37
38
- it ( `starts ${ nodeNumber } nodes` , ( done ) => {
39
- each ( nodes , ( node , cb ) => node . start ( cb ) , ( err ) => {
40
- expect ( err ) . to . not . exist
41
- nodes . forEach ( node => {
42
- expect ( node . started ) . to . be . true
43
- } )
44
- done ( )
45
- } )
38
+ it ( `starts ${ nodeNumber } nodes` , done => {
39
+ each (
40
+ nodes ,
41
+ ( node , cb ) => node . start ( cb ) ,
42
+ err => {
43
+ expect ( err ) . to . not . exist
44
+ nodes . forEach ( node => {
45
+ expect ( node . started ) . to . be . true
46
+ } )
47
+ done ( )
48
+ }
49
+ )
46
50
} )
47
51
48
- it ( 'creates a simple parent topic' , ( done ) => {
49
- nodes [ publisher + 1 ] . createTopic ( 'test-parent' , ( err , savedCID , topicNode ) => {
50
- expect ( err ) . to . not . exist
51
- expect ( topicNode ) . to . be . an . instanceof ( TopicNode )
52
- expect ( topicNode . subTopics . meta ) . to . be . an . instanceof ( CID )
53
- topicNode . getCID ( ( err , cid ) => {
52
+ it ( 'creates a simple parent topic' , done => {
53
+ nodes [ publisher + 1 ] . createTopic (
54
+ 'test-parent' ,
55
+ ( err , savedCID , topicNode ) => {
54
56
expect ( err ) . to . not . exist
55
- const topicB58Str = cid . toBaseEncodedString ( )
56
- expect ( cid . equals ( savedCID ) ) . to . be . true
57
- // Topic and meta topic
58
- expect ( nodes [ publisher + 1 ] . subscriptions . size ) . to . equal ( 2 )
59
- expect ( nodes [ publisher + 1 ] . subscriptions . has ( topicB58Str ) ) . to . be . true
60
- parentTopicCID = cid
61
- done ( )
62
- } )
63
- } )
57
+ expect ( topicNode ) . to . be . an . instanceof ( TopicNode )
58
+ expect ( topicNode . subTopics . meta ) . to . be . an . instanceof ( CID )
59
+ topicNode . getCID ( ( err , cid ) => {
60
+ expect ( err ) . to . not . exist
61
+ const topicB58Str = cid . toBaseEncodedString ( )
62
+ expect ( cid . equals ( savedCID ) ) . to . be . true
63
+ // Topic and meta topic
64
+ expect ( nodes [ publisher + 1 ] . subscriptions . size ) . to . equal ( 2 )
65
+ expect ( nodes [ publisher + 1 ] . subscriptions . has ( topicB58Str ) ) . to . be . true
66
+ parentTopicCID = cid
67
+ done ( )
68
+ } )
69
+ }
70
+ )
64
71
} )
65
72
66
- it ( 'creates a simple sub-topic' , ( done ) => {
67
- nodes [ publisher + 1 ] . createTopic ( 'test-subtopic' , ( err , savedCID , topicNode ) => {
68
- expect ( err ) . to . not . exist
69
- expect ( topicNode ) . to . be . an . instanceof ( TopicNode )
70
- expect ( topicNode . subTopics . meta ) . to . be . an . instanceof ( CID )
71
- topicNode . getCID ( ( err , cid ) => {
73
+ it ( 'creates a simple sub-topic' , done => {
74
+ nodes [ publisher + 1 ] . createTopic (
75
+ 'test-subtopic' ,
76
+ ( err , savedCID , topicNode ) => {
72
77
expect ( err ) . to . not . exist
73
- const topicB58Str = cid . toBaseEncodedString ( )
74
- expect ( cid . equals ( savedCID ) ) . to . be . true
75
- expect ( nodes [ publisher + 1 ] . subscriptions . size ) . to . equal ( 4 )
76
- expect ( nodes [ publisher + 1 ] . subscriptions . has ( topicB58Str ) ) . to . be . true
77
- subTopicCID = cid
78
- done ( )
79
- } )
80
- } )
78
+ expect ( topicNode ) . to . be . an . instanceof ( TopicNode )
79
+ expect ( topicNode . subTopics . meta ) . to . be . an . instanceof ( CID )
80
+ topicNode . getCID ( ( err , cid ) => {
81
+ expect ( err ) . to . not . exist
82
+ const topicB58Str = cid . toBaseEncodedString ( )
83
+ expect ( cid . equals ( savedCID ) ) . to . be . true
84
+ expect ( nodes [ publisher + 1 ] . subscriptions . size ) . to . equal ( 4 )
85
+ expect ( nodes [ publisher + 1 ] . subscriptions . has ( topicB58Str ) ) . to . be . true
86
+ subTopicCID = cid
87
+ done ( )
88
+ } )
89
+ }
90
+ )
81
91
} )
82
92
83
- it ( 'creates a new topic with a parent and sub-topic' , ( done ) => {
84
- nodes [ publisher ] . createTopic ( 'test-2.0' ,
93
+ it ( 'creates a new topic with a parent and sub-topic' , done => {
94
+ nodes [ publisher ] . createTopic (
95
+ 'test-2.0' ,
85
96
{
86
97
parent : parentTopicCID . toBaseEncodedString ( ) ,
87
98
subTopics : {
88
99
'test-subtopic' : subTopicCID . toBaseEncodedString ( )
89
100
}
90
- } , ( err , savedCID , topicNode ) => {
101
+ } ,
102
+ ( err , savedCID , topicNode ) => {
91
103
expect ( err ) . to . not . exist
92
104
expect ( topicNode ) . to . be . an . instanceof ( TopicNode )
93
105
expect ( topicNode . subTopics . meta ) . to . be . an . instanceof ( CID )
94
106
expect ( topicNode . parent . equals ( parentTopicCID ) ) . to . be . true
95
- expect ( topicNode . subTopics [ 'test-subtopic' ] . equals ( subTopicCID ) ) . to . be . true
107
+ expect ( topicNode . subTopics [ 'test-subtopic' ] . equals ( subTopicCID ) ) . to . be
108
+ . true
96
109
topicNode . getCID ( ( err , cid ) => {
97
110
expect ( err ) . to . not . exist
98
111
const topicB58Str = cid . toBaseEncodedString ( )
@@ -103,31 +116,37 @@ describe('multiple nodes', function () {
103
116
topicCID = cid
104
117
done ( )
105
118
} )
106
- } )
119
+ }
120
+ )
107
121
} )
108
122
109
- it ( `subscribes ${ subscriberNum } nodes to the created topic` , ( done ) => {
123
+ it ( `subscribes ${ subscriberNum } nodes to the created topic` , done => {
110
124
const topicB58Str = topicCID . toBaseEncodedString ( )
111
125
const subscriberNodes = nodes . slice ( subscriber , subscriberNum + subscriber )
112
126
113
- each ( subscriberNodes , ( node , cb ) => {
114
- node . subscribe ( topicB58Str , ( err , topicNode ) => {
115
- expect ( err ) . to . not . exist
116
- expect ( topicNode ) . to . be . an . instanceof ( TopicNode )
117
- expect ( node . subscriptions . size ) . to . equal ( 1 )
118
- expect ( node . subscriptions . has ( topicCID . toBaseEncodedString ( ) ) ) . to . be . true
119
- expect ( topicNode . serialize ( ) ) . to . deep . equal ( topic . serialize ( ) )
120
-
121
- // Check tree
122
- const { parents} = node . me . trees . get ( topicB58Str )
123
- expect ( parents ) . to . have . lengthOf . above ( 0 )
124
- expect ( parents [ 0 ] . trees . get ( topicB58Str ) . children ) . to . include ( node . me )
125
- cb ( )
126
- } )
127
- } , done )
127
+ each (
128
+ subscriberNodes ,
129
+ ( node , cb ) => {
130
+ node . subscribe ( topicB58Str , ( err , topicNode ) => {
131
+ expect ( err ) . to . not . exist
132
+ expect ( topicNode ) . to . be . an . instanceof ( TopicNode )
133
+ expect ( node . subscriptions . size ) . to . equal ( 1 )
134
+ expect ( node . subscriptions . has ( topicCID . toBaseEncodedString ( ) ) ) . to . be
135
+ . true
136
+ expect ( topicNode . serialize ( ) ) . to . deep . equal ( topic . serialize ( ) )
137
+
138
+ // Check tree
139
+ const { parents } = node . me . trees . get ( topicB58Str )
140
+ expect ( parents ) . to . have . lengthOf . above ( 0 )
141
+ expect ( parents [ 0 ] . trees . get ( topicB58Str ) . children ) . to . include ( node . me )
142
+ cb ( )
143
+ } )
144
+ } ,
145
+ done
146
+ )
128
147
} )
129
148
130
- it ( 'publishes a message from the non author node' , ( done ) => {
149
+ it ( 'publishes a message from the non author node' , done => {
131
150
const topicB58Str = topicCID . toBaseEncodedString ( )
132
151
const message = 'foobar'
133
152
// Helper func to run all the expects
@@ -138,7 +157,7 @@ describe('multiple nodes', function () {
138
157
}
139
158
let firstEventNode
140
159
// Event listener
141
- const listener = ( eventNode ) => {
160
+ const listener = eventNode => {
142
161
// Compare serializes of both events
143
162
if ( ! firstEventNode ) {
144
163
firstEventNode = eventNode
@@ -153,44 +172,53 @@ describe('multiple nodes', function () {
153
172
// Should match subscribed author
154
173
expect ( eventNode . author . isEqual ( nodes [ subscriber ] . me . info . id ) ) . to . be . true
155
174
// Should match topic author
156
- expect ( eventNode . publisher . isEqual ( nodes [ publisher ] . me . info . id ) ) . to . be . true
175
+ expect ( eventNode . publisher . isEqual ( nodes [ publisher ] . me . info . id ) ) . to . be
176
+ . true
157
177
158
178
checkAllDone ( )
159
179
}
160
180
// Setup event listeners
161
181
nodes [ subscriber ] . once ( topicB58Str , listener )
162
182
nodes [ publisher ] . once ( topicB58Str , listener )
163
183
164
- nodes [ subscriber ] . publish ( topicB58Str , message , ( err , eventCID , topicNode , eventNode ) => {
165
- expect ( err ) . to . not . exist
166
- expect ( eventNode ) . to . be . an . instanceof ( EventNode )
167
- expect ( topicNode ) . to . be . an . instanceof ( TopicNode )
168
- expect ( eventNode . topicCID . equals ( topicCID ) ) . to . be . true
169
- expect ( eventNode . payload . toString ( ) ) . to . be . equal ( message )
170
- expect ( eventNode . author . isEqual ( nodes [ subscriber ] . me . info . id ) ) . to . be . true
171
- // Should be a request to publish
172
- expect ( eventCID ) . to . be . null
173
- expect ( eventNode . isPublished ) . to . be . false
174
-
175
- checkAllDone ( )
176
- } )
184
+ nodes [ subscriber ] . publish (
185
+ topicB58Str ,
186
+ message ,
187
+ ( err , eventCID , topicNode , eventNode ) => {
188
+ expect ( err ) . to . not . exist
189
+ expect ( eventNode ) . to . be . an . instanceof ( EventNode )
190
+ expect ( topicNode ) . to . be . an . instanceof ( TopicNode )
191
+ expect ( eventNode . topicCID . equals ( topicCID ) ) . to . be . true
192
+ expect ( eventNode . payload . toString ( ) ) . to . be . equal ( message )
193
+ expect ( eventNode . author . isEqual ( nodes [ subscriber ] . me . info . id ) ) . to . be
194
+ . true
195
+ // Should be a request to publish
196
+ expect ( eventCID ) . to . be . null
197
+ expect ( eventNode . isPublished ) . to . be . false
198
+
199
+ checkAllDone ( )
200
+ }
201
+ )
177
202
} )
178
203
179
- it ( 'unsubscribe from the topic' , ( done ) => {
204
+ it ( 'unsubscribe from the topic' , done => {
180
205
const topicB58Str = topicCID . toBaseEncodedString ( )
181
- nodes [ subscriber ] . unsubscribe ( topicB58Str , ( err ) => {
206
+ nodes [ subscriber ] . unsubscribe ( topicB58Str , err => {
182
207
expect ( err ) . to . not . exist
183
208
184
209
expect ( nodes [ subscriber ] . subscriptions . size ) . to . equal ( 0 )
185
210
186
211
eventually ( ( ) => {
187
- const topicChildren = nodes [ publisher ] . me . trees . get ( topicB58Str ) . children
188
- expect ( topicChildren . find ( peer => peer . info . id . isEqual ( nodes [ 1 ] . me . info . id ) ) ) . to . not . exist
212
+ const topicChildren = nodes [ publisher ] . me . trees . get ( topicB58Str )
213
+ . children
214
+ expect (
215
+ topicChildren . find ( peer => peer . info . id . isEqual ( nodes [ 1 ] . me . info . id ) )
216
+ ) . to . not . exist
189
217
} , done )
190
218
} )
191
219
} )
192
220
193
- it ( 'dissemination tress are cleaned up on connection close' , ( done ) => {
221
+ it ( 'dissemination tress are cleaned up on connection close' , done => {
194
222
const topicB58Str = topicCID . toBaseEncodedString ( )
195
223
const droppingNode = nodes [ subscriber + 1 ]
196
224
const droppingNodeId = droppingNode . me . info . id . toB58String ( )
@@ -211,10 +239,14 @@ describe('multiple nodes', function () {
211
239
eventually ( ( ) => {
212
240
// Check dropping node is not present in any tree
213
241
childrenNodes . forEach ( child => {
214
- expect ( child . me . trees . get ( topicB58Str ) . parents ) . to . not . include ( child . peers . get ( droppingNodeId ) )
242
+ expect ( child . me . trees . get ( topicB58Str ) . parents ) . to . not . include (
243
+ child . peers . get ( droppingNodeId )
244
+ )
215
245
} )
216
246
parentNodes . forEach ( parent => {
217
- expect ( parent . me . trees . get ( topicB58Str ) . children ) . to . not . include ( parent . peers . get ( droppingNodeId ) )
247
+ expect ( parent . me . trees . get ( topicB58Str ) . children ) . to . not . include (
248
+ parent . peers . get ( droppingNodeId )
249
+ )
218
250
} )
219
251
} , done )
220
252
} )
0 commit comments