@@ -5,15 +5,18 @@ var fixtures = require('webtorrent-fixtures')
55var get = require ( 'simple-get' )
66var test = require ( 'tape' )
77
8- var peerId = Buffer . from ( '01234567890123456789' )
8+ var peerId = Buffer . from ( '-WW0091-4ea5886ce160' )
9+ var unknownPeerId = Buffer . from ( '01234567890123456789' )
910
1011function parseHtml ( html ) {
1112 var extractValue = new RegExp ( '[^v^h](\\d+)' )
1213 var array = html . replace ( 'torrents' , '\n' ) . split ( '\n' ) . filter ( function ( line ) {
1314 return line && line . trim ( ) . length > 0
1415 } ) . map ( function ( line ) {
1516 var a = extractValue . exec ( line )
16- return parseInt ( a [ 1 ] )
17+ if ( a ) {
18+ return parseInt ( a [ 1 ] )
19+ }
1720 } )
1821 var i = 0
1922 return {
@@ -111,7 +114,7 @@ test('server: get empty stats on stats.json', function (t) {
111114} )
112115
113116test ( 'server: get leecher stats.json' , function ( t ) {
114- t . plan ( 10 )
117+ t . plan ( 11 )
115118
116119 commonTest . createServer ( t , 'http' , function ( server , announceUrl ) {
117120 // announce a torrent to the tracker
@@ -134,7 +137,6 @@ test('server: get leecher stats.json', function (t) {
134137
135138 get . concat ( opts , function ( err , res , stats ) {
136139 t . error ( err )
137- console . log ( stats )
138140
139141 t . equal ( res . statusCode , 200 )
140142 t . equal ( stats . torrents , 1 )
@@ -143,6 +145,48 @@ test('server: get leecher stats.json', function (t) {
143145 t . equal ( stats . peersSeederOnly , 0 )
144146 t . equal ( stats . peersLeecherOnly , 1 )
145147 t . equal ( stats . peersSeederAndLeecher , 0 )
148+ t . equal ( stats . clients [ 'WebTorrent' ] [ '0.0.9.1' ] , 1 )
149+
150+ client . destroy ( function ( ) { t . pass ( 'client destroyed' ) } )
151+ server . close ( function ( ) { t . pass ( 'server closed' ) } )
152+ } )
153+ } )
154+ } )
155+ } )
156+
157+ test ( 'server: get leecher stats.json (unknown peerId)' , function ( t ) {
158+ t . plan ( 11 )
159+
160+ commonTest . createServer ( t , 'http' , function ( server , announceUrl ) {
161+ // announce a torrent to the tracker
162+ var client = new Client ( {
163+ infoHash : fixtures . leaves . parsedTorrent . infoHash ,
164+ announce : announceUrl ,
165+ peerId : unknownPeerId ,
166+ port : 6881
167+ } )
168+ client . on ( 'error' , function ( err ) { t . error ( err ) } )
169+ client . on ( 'warning' , function ( err ) { t . error ( err ) } )
170+
171+ client . start ( )
172+
173+ server . once ( 'start' , function ( ) {
174+ var opts = {
175+ url : announceUrl . replace ( '/announce' , '/stats.json' ) ,
176+ json : true
177+ }
178+
179+ get . concat ( opts , function ( err , res , stats ) {
180+ t . error ( err )
181+
182+ t . equal ( res . statusCode , 200 )
183+ t . equal ( stats . torrents , 1 )
184+ t . equal ( stats . activeTorrents , 1 )
185+ t . equal ( stats . peersAll , 1 )
186+ t . equal ( stats . peersSeederOnly , 0 )
187+ t . equal ( stats . peersLeecherOnly , 1 )
188+ t . equal ( stats . peersSeederAndLeecher , 0 )
189+ t . equal ( stats . clients [ 'unknown' ] [ '01234567' ] , 1 )
146190
147191 client . destroy ( function ( ) { t . pass ( 'client destroyed' ) } )
148192 server . close ( function ( ) { t . pass ( 'server closed' ) } )
0 commit comments