protected function setUp() { parent::setUp(); $this->datasource = new Memory(); $this->profiler = new Profiler(); $this->profiler->setDataSource($this->datasource); $this->process = $this->profiler->getContext()->getProcess(); $this->collector = new Log($this->process, $this->profiler->getDatasource()); $this->profiler->registerCollector($this->collector); }
protected function setUp() { parent::setUp(); $this->datasource = new Memory(); $this->profiler = new Profiler(); $dispatcher = $this->profiler->getContext()->getProcess()->getDispatcher(); $this->profiler->setTimeline(new TimelineComponent($dispatcher)); $this->profiler->setDataSource($this->datasource); $this->process = $this->profiler->getContext()->getProcess(); $this->collector = new Timeline($this->process, $this->profiler->getDatasource()); $this->profiler->registerCollector($this->collector); }
public function testTerminateFileDatasource() { $folder = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR; $this->profiler->setDataSource(new File($folder)); $this->profiler->registerCollectorClasses([Duration::class, Request::class, Http::class]); $this->profiler->initiate(); $this->profiler->terminate(); $process = $this->profiler->getContext()->getProcess(); $this->assertInstanceOf(\Generator::class, $this->profiler->getDatasource()->getProcess($process->getId())); $profile = $this->profiler->getProfile($process->getId()); $this->assertObjectHasAttribute('duration', $profile); }
/** * @param array $options * @return Profiler * * @throws \RuntimeException * @throws AccessException * @throws UndefinedOptionsException * @throws MissingOptionsException * @throws InvalidOptionsException * @throws NoSuchOptionException * @throws OptionDefinitionException */ public function create(array $options = []) { $options = $this->resolveOptions($options); if (!$options[self::OPTION_ENABLE]) { return new NullProfiler(); } if ($options[self::OPTION_ENVIRONMENT] !== null) { Profiler::$environment = $options[self::OPTION_ENVIRONMENT]; } $profiler = new Profiler(); switch ($options[self::OPTION_DATASOURCE_CLASS]) { default: case File::class: $datasource = new File($options[self::OPTION_DATASOURCE_PROFILES_FOLDER]); break; case Memory::class: $datasource = new Memory(); } $profiler->setDataSource($datasource); $profiler->registerCollectorClasses($options[self::OPTION_COLLECTORS]); $dispatcher = $profiler->getContext()->getProcess()->getDispatcher(); $className = $options['logger']; $logger = new $className(); $logger->setDispatcher($dispatcher); $profiler->setLogger($logger); $profiler->setTimeline(new TimelineComponent($dispatcher)); return $profiler; }