48 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | var log = console.log | ||
|  |     , assert = require( 'assert' ) | ||
|  |     , Qap = require( '../' ) | ||
|  |     , pattern = '-----hellofolks!\r\n\r\n' | ||
|  |     , bpattern = new Buffer( pattern ) | ||
|  |     , plen = pattern.length | ||
|  |     , mb = 700 | ||
|  |     , dlen = mb * 1024 * 1024 | ||
|  |     , data = new Buffer( dlen ) | ||
|  |     , qap = Qap( bpattern ) | ||
|  |     , occ = Math.floor( dlen / plen / plen / plen / plen ) | ||
|  |     , i = occ | ||
|  |     , indexes = [] | ||
|  |     , stime = Date.now() | ||
|  |     ; | ||
|  | 
 | ||
|  | log( '- creating test buffer..(' + mb +' MB)' ); | ||
|  | 
 | ||
|  | // occ should be >> pattern.length
 | ||
|  | for ( ; i < dlen - 1; i += occ ) { | ||
|  |     indexes.push( i ); | ||
|  |     bpattern.copy( data, i ); | ||
|  | }; | ||
|  | 
 | ||
|  | log( '- buffer data copied in',( Date.now() - stime ) / 1000, 'secs' ); | ||
|  | log( '- pattern length:', bpattern.length, 'bytes' ); | ||
|  | log( '- patterns written:', indexes.length ); | ||
|  | log( '- parse data from beginning..' ); | ||
|  | 
 | ||
|  | var sptime = Date.now(), | ||
|  |     results = qap.parse( data ), | ||
|  |     presults = null, | ||
|  |     offset = Math.floor( results.length * Math.random() ); | ||
|  | 
 | ||
|  | log( '- input data was parsed in', ( ( Date.now() - sptime ) / 1000 ).toFixed( 2 ), 'secs' ); | ||
|  | log( '- total results:', results.length ); | ||
|  | 
 | ||
|  | assert.equal( results.length, indexes.length, 'parsed results don\'t match with existing patterns' ); | ||
|  | assert.deepEqual( results, indexes, 'indexes and parsed indexes don\'t match' ); | ||
|  | 
 | ||
|  | log( '- successfully compared parsed results and pre-recorded indexes..' ); | ||
|  | log( '- re-parse data from result with index ' + offset + ' to obtain partial results..' ); | ||
|  | presults = qap.parse( data, indexes[ offset ] + 1 ); | ||
|  | 
 | ||
|  | log( '- check partial results length (' + ( presults.length ) + ' === ' + ( results.length - offset - 1 ) + ')' ); | ||
|  | assert.equal( presults.length + offset + 1, results.length, 'results don\'t match' ); | ||
|  | 
 | ||
|  | log( '- all big buffer tests passed in',( ( Date.now() - stime ) / 1000 ).toFixed( 2 ), 'secs'); |