mirror of
https://github.com/friendica/friendica
synced 2025-04-27 01:10:14 +00:00
Adding composer & tests
This commit is contained in:
parent
68c904bbf4
commit
6d73dcbe3d
4 changed files with 245 additions and 28 deletions
181
tests/src/Util/ProfilerTest.php
Normal file
181
tests/src/Util/ProfilerTest.php
Normal file
|
@ -0,0 +1,181 @@
|
|||
<?php
|
||||
|
||||
namespace src\Util;
|
||||
|
||||
use Friendica\Test\MockedTest;
|
||||
use Friendica\Util\Profiler;
|
||||
use Mockery\MockInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class ProfilerTest extends MockedTest
|
||||
{
|
||||
/**
|
||||
* @var LoggerInterface|MockInterface
|
||||
*/
|
||||
private $logger;
|
||||
|
||||
protected function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->logger = \Mockery::mock('Psr\Log\LoggerInterface');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the Profiler setup
|
||||
*/
|
||||
public function testSetUp()
|
||||
{
|
||||
$profiler = new Profiler($this->logger, true, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* A dataset for different profiling settings
|
||||
* @return array
|
||||
*/
|
||||
public function dataPerformance()
|
||||
{
|
||||
return [
|
||||
'database' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'database',
|
||||
'functions' => ['test', 'it'],
|
||||
],
|
||||
'database_write' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'database_write',
|
||||
'functions' => ['test', 'it2'],
|
||||
],
|
||||
'cache' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'cache',
|
||||
'functions' => ['test', 'it3'],
|
||||
],
|
||||
'cache_write' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'cache_write',
|
||||
'functions' => ['test', 'it4'],
|
||||
],
|
||||
'network' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'network',
|
||||
'functions' => ['test', 'it5'],
|
||||
],
|
||||
'file' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'file',
|
||||
'functions' => [],
|
||||
],
|
||||
'rendering' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'rendering',
|
||||
'functions' => ['test', 'it7'],
|
||||
],
|
||||
'parser' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'parser',
|
||||
'functions' => ['test', 'it8'],
|
||||
],
|
||||
'marktime' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'parser',
|
||||
'functions' => ['test'],
|
||||
],
|
||||
// This one isn't set during reset
|
||||
'unknown' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'unknown',
|
||||
'functions' => ['test'],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the Profiler savetimestamp
|
||||
* @dataProvider dataPerformance
|
||||
*/
|
||||
public function testSaveTimestamp($timestamp, $name, array $functions)
|
||||
{
|
||||
$profiler = new Profiler($this->logger, true, true);
|
||||
|
||||
foreach ($functions as $function) {
|
||||
$profiler->saveTimestamp($timestamp, $name, $function);
|
||||
}
|
||||
|
||||
$this->assertGreaterThanOrEqual(0, $profiler->get($name));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the Profiler reset
|
||||
* @dataProvider dataPerformance
|
||||
*/
|
||||
public function testReset($timestamp, $name, array $functions)
|
||||
{
|
||||
$profiler = new Profiler($this->logger, true, true);
|
||||
|
||||
$profiler->saveTimestamp($timestamp, $name);
|
||||
$profiler->reset();
|
||||
|
||||
$this->assertEquals(0, $profiler->get($name));
|
||||
}
|
||||
|
||||
public function dataBig()
|
||||
{
|
||||
return [
|
||||
'big' => [
|
||||
'data' => [
|
||||
'database' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'database',
|
||||
'functions' => ['test', 'it'],
|
||||
],
|
||||
'database_write' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'database_write',
|
||||
'functions' => ['test', 'it2'],
|
||||
],
|
||||
'cache' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'cache',
|
||||
'functions' => ['test', 'it3'],
|
||||
],
|
||||
'cache_write' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'cache_write',
|
||||
'functions' => ['test', 'it4'],
|
||||
],
|
||||
'network' => [
|
||||
'timestamp' => time(),
|
||||
'name' => 'network',
|
||||
'functions' => ['test', 'it5'],
|
||||
],
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the output of the Profiler
|
||||
* @dataProvider dataBig
|
||||
*/
|
||||
public function testSaveLog($data)
|
||||
{
|
||||
$this->logger
|
||||
->shouldReceive('info')
|
||||
->with('test', \Mockery::any())
|
||||
->once();
|
||||
$this->logger
|
||||
->shouldReceive('info')
|
||||
->once();
|
||||
|
||||
$profiler = new Profiler($this->logger, true, true);
|
||||
|
||||
foreach ($data as $perf => $items) {
|
||||
foreach ($items['functions'] as $function) {
|
||||
$profiler->saveTimestamp($items['timestamp'], $items['name'], $function);
|
||||
}
|
||||
}
|
||||
|
||||
$profiler->saveLog('test');
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue