Added generic stopwatch collector and tests.
This commit is contained in:
1 parent
7020e84b2d
commit
420305143b
7 files changed
+215
-71
No files matched your search
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace Rarst\Laps\Tests\Record;
|
||||
|
||||
use Brain\Monkey\Functions;
|
||||
use Rarst\Laps\Event\Core_Events;
|
||||
use Rarst\Laps\Record\Hook_Record_Collector;
|
||||
use Rarst\Laps\Tests\LapsTestCase;
|
||||
use Symfony\Component\Stopwatch\Stopwatch;
|
||||
|
||||
class HookTest extends LapsTestCase {
|
||||
|
||||
public function testCollector() {
|
||||
|
||||
$stopwatch = new Stopwatch();
|
||||
$collector = new Hook_Record_Collector( $stopwatch, [ 'core' => new Core_Events() ] );
|
||||
|
||||
$this->assertTrue( $stopwatch->isStarted( 'Plugins Load' ) );
|
||||
$this->assertTrue( has_action( 'after_setup_theme', [ $collector, 'after_setup_theme' ] ) );
|
||||
|
||||
$collector->after_setup_theme();
|
||||
|
||||
Functions\expect( 'current_filter' )->once()->andReturn( 'plugins_loaded' );
|
||||
Functions\expect( 'wp_parse_args' )->once()->andReturnFirstArg();
|
||||
|
||||
global $wp_filter;
|
||||
|
||||
$wp_hook = $this->getMockBuilder( 'WP_Hook' )
|
||||
->allowMockingUnknownTypes()
|
||||
->setMethods( [ 'current_priority' ] )
|
||||
->getMock();
|
||||
|
||||
$wp_hook->method( 'current_priority' )->willReturn( - 2 );
|
||||
|
||||
$wp_filter['plugins_loaded'] = $wp_hook;
|
||||
|
||||
$collector->tick();
|
||||
|
||||
$this->assertFalse( $stopwatch->isStarted( 'Plugins Load' ) );
|
||||
|
||||
$stopwatch->start( 'Toolbar' );
|
||||
$collector->get_records();
|
||||
|
||||
$this->assertFalse( $stopwatch->isStarted( 'Toolbar' ) );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Rarst\Laps\Tests\Record;
|
||||
|
||||
use Rarst\Laps\Record\Http_Record_Collector;
|
||||
use Rarst\Laps\Tests\LapsTestCase;
|
||||
use Symfony\Component\Stopwatch\Stopwatch;
|
||||
|
||||
class HttpTest extends LapsTestCase {
|
||||
|
||||
public function testCollector() {
|
||||
|
||||
$stopwatch = new Stopwatch();
|
||||
$url = 'https://example.com/';
|
||||
$collector = new Http_Record_Collector( $stopwatch );
|
||||
|
||||
$this->assertTrue( has_action( 'pre_http_request', [ $collector, 'pre_http_request' ] ) );
|
||||
$this->assertTrue( has_action( 'http_api_debug', [ $collector, 'http_api_debug' ] ) );
|
||||
|
||||
$collector->pre_http_request( false, [], $url );
|
||||
|
||||
$this->assertTrue( $stopwatch->isStarted( $url ) );
|
||||
|
||||
$collector->http_api_debug( [], '', new \stdClass(), [], $url );
|
||||
|
||||
$this->assertFalse( $stopwatch->isStarted( $url ) );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace Rarst\Laps\Tests\Record;
|
||||
|
||||
use Rarst\Laps\Record\Stopwatch_Record;
|
||||
use Rarst\Laps\Record\Stopwatch_Record_Collector;
|
||||
use Rarst\Laps\Tests\LapsTestCase;
|
||||
use Symfony\Component\Stopwatch\Stopwatch;
|
||||
use Symfony\Component\Stopwatch\StopwatchEvent;
|
||||
|
||||
class StopwatchTest extends LapsTestCase {
|
||||
|
||||
/**
|
||||
* @covers \Rarst\Laps\Record\Stopwatch_Record_Collector
|
||||
*/
|
||||
public function testCollector() {
|
||||
|
||||
$collector = new Stopwatch_Record_Collector( new Stopwatch() );
|
||||
|
||||
$collector->start( 'Event', 'info' );
|
||||
$collector->start( 'Not stopped', 'info' );
|
||||
$event = $collector->stop( 'Event' );
|
||||
|
||||
$this->assertFalse( $collector->stop( 'Not event' ) );
|
||||
|
||||
$records = $collector->get_records();
|
||||
|
||||
$this->assertInternalType( 'array', $records );
|
||||
$this->assertCount( 1, $records );
|
||||
$this->assertInstanceOf( Stopwatch_Record::class, $records[0] );
|
||||
|
||||
return $event;
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCollector
|
||||
* @covers \Rarst\Laps\Record\Stopwatch_Record
|
||||
*
|
||||
* @param StopwatchEvent $event Event instance.
|
||||
*/
|
||||
public function testRecord( StopwatchEvent $event ) {
|
||||
|
||||
$record = new Stopwatch_Record( 'Event', $event );
|
||||
|
||||
$this->assertEquals( 'Event', $record->get_name() );
|
||||
$this->assertEquals( 'info', $record->get_category() );
|
||||
$this->assertEquals( $event->getOrigin(), $record->get_origin() );
|
||||
$this->assertEquals( $event->getDuration(), $record->get_duration() );
|
||||
$this->assertContains( 'Event', $record->get_description() );
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user