This bundle provides some metric in the response header and additional assertions for the functional tests.
It collects the following metrics :
- Number of Doctrine Query
- Memory Usage
Add this repositories section on your composer.json project.
"repositories": [
{
"type": "vcs",
"url": "[email protected]:odandb/monitoring-metrics-bundle.git"
}
],
And run
composer require odandb/monitoring-metrics-bundle --dev
Caution : This bundle must be installed only in dev or/and test environment.
// config/bundle.php
return [
// ...
Odandb\MonitoringMetricsBundle\MonitoringMetricsBundle::class => ['dev' => true, 'test' => true],
];
Add the MonitoringAssertionsTrait
trait to your test-class and you can start asserting response.
use Odandb\MonitoringMetricsBundle\Test\MonitoringAssertionsTrait;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class FooTest extends WebTestCase
{
use MonitoringAssertionsTrait;
protected $client;
protected function setUp() : void
{
$this->client = self::createClient();
}
public function testBar()
{
$this->client->request('GET', '/foo/bar');
self::assertResponseIsSuccessful();
// available assertions/methods
self::assertQueryCountMatches(5); // query doctrine should be exactly 5.
self::assertQueryCountLessThan(5); // query doctrine should be less than 5
self::assertMemoryUsageLessThan(10.4); // the memory used should be less than 10.4mb
}
}
The DoctrineMetric collects information via the profiling logger and must be enabled via the debug value of the application. Alternatively, you can also enable it on the dbal.profiling
or dbal.connections.default.profiling
(multiple connections) configuration for the environment whose information you want to collect.
The configuration on the connection may be more interesting to avoid activating all the debug features on the environment and avoid slowdowns.
The MemoryMetric collects information via memory_get_peak_usage
from native php and convert to Mb.
To create your own metric, you will need to extend the AbstractMetric class.
Each metric needs to implement the metric
method, which retrieves the information and adds it to the headers of the response.