public function testCollect() { $pheanstalkConnection = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock(); $pheanstalkConnection->expects($this->any())->method('getHost')->will($this->returnValue('127.0.0.1')); $pheanstalkConnection->expects($this->any())->method('getPort')->will($this->returnValue('11130')); $pheanstalkConnection->expects($this->any())->method('getConnectTimeout')->will($this->returnValue(60)); $pheanstalkConnection->expects($this->any())->method('isServiceListening')->will($this->returnValue(false)); $pheanstalkA = $this->getMockForAbstractClass(PheanstalkInterface::class); $pheanstalkB = $this->getMockForAbstractClass(PheanstalkInterface::class); $pheanstalkA->expects($this->any())->method('getConnection')->will($this->returnValue($pheanstalkConnection)); $pheanstalkB->expects($this->any())->method('getConnection')->will($this->returnValue($pheanstalkConnection)); $pheanstalkLocator = new PheanstalkLocator(); $pheanstalkLocator->addPheanstalk('default', $pheanstalkA, true); $pheanstalkLocator->addPheanstalk('foo', $pheanstalkB); $request = $this->getMockBuilder(Request::class)->disableOriginalConstructor()->getMock(); $response = $this->getMockBuilder(Response::class)->disableOriginalConstructor()->getMock(); $dataCollector = new PheanstalkDataCollector($pheanstalkLocator); $dataCollector->collect($request, $response); $this->assertArrayHasKey('default', $dataCollector->getPheanstalks()); $this->assertArrayHasKey('foo', $dataCollector->getPheanstalks()); $this->assertArrayNotHasKey('bar', $dataCollector->getPheanstalks()); $data = $dataCollector->getPheanstalks(); $this->assertArrayHasKey('name', $data['default']); $this->assertArrayHasKey('host', $data['default']); $this->assertArrayHasKey('port', $data['default']); $this->assertArrayHasKey('timeout', $data['default']); $this->assertArrayHasKey('default', $data['default']); $this->assertArrayHasKey('stats', $data['default']); $this->assertArrayHasKey('listening', $data['default']); }
public function testGetDefaultPheanstalk() { $pheanstalkA = $this->getMockForAbstractClass(PheanstalkInterface::class); $pheanstalkB = $this->getMockForAbstractClass(PheanstalkInterface::class); $pheanstalkLocator = new PheanstalkLocator(); $pheanstalkLocator->addPheanstalk('default', $pheanstalkA, true); $pheanstalkLocator->addPheanstalk('foo', $pheanstalkB); $this->assertEquals($pheanstalkA, $pheanstalkLocator->getPheanstalk()); $this->assertEquals($pheanstalkA, $pheanstalkLocator->getDefaultPheanstalk()); $this->assertEquals($pheanstalkA, $pheanstalkLocator->getPheanstalk('default')); $this->assertEquals($pheanstalkB, $pheanstalkLocator->getPheanstalk('foo')); $this->assertEquals(['default' => $pheanstalkA, 'foo' => $pheanstalkB], $pheanstalkLocator->getPheanstalks()); }
public function register(Container $app) { $app['pheanstalks.options.initializer'] = $app->protect(function () use($app) { static $initialized = false; if ($initialized) { return; } $initialized = true; if (!isset($app['pheanstalks.options'])) { $app['pheanstalks.options'] = ['default' => isset($app['pheanstalk.options']) ? $app['pheanstalk.options'] : []]; } $app['pheanstalks.options'] = array_map(function ($options) use($app) { return array_replace($app['pheanstalk.default_options'], $options); }, $app['pheanstalks.options']); if (!isset($app['pheanstalks.default'])) { $app['pheanstalks.default'] = array_keys(array_slice($app['pheanstalks.options'], 0, 1))[0]; } }); $app['pheanstalk.listener.log'] = function () use($app) { $listener = new PheanstalkLogListener(); if ($app['logger']) { $listener->setLogger($app['logger']); } return $listener; }; $app['pheanstalk.proxy.factory'] = $app->protect(function ($name, PheanstalkInterface $pheanstalk) use($app) { $proxy = new PheanstalkProxy(); $proxy->setName($name); $proxy->setPheanstalk($pheanstalk); $proxy->setDispatcher($app['dispatcher']); return $proxy; }); $app['pheanstalks'] = function (Container $app) { $app['pheanstalks.options.initializer'](); $locator = new PheanstalkLocator(); foreach ($app['pheanstalks.options'] as $name => $options) { $pheanstalk = new Pheanstalk($options['server'], $options['port'], $options['timeout']); $locator->addPheanstalk($name, $app['pheanstalk.proxy.factory']($name, $pheanstalk), $app['pheanstalks.default'] === $name); } return $locator; }; $app['pheanstalk.commands'] = $app->protect(function () use($app) { $locator = $app['pheanstalks']; return [new DeleteJobCommand($locator), new FlushTubeCommand($locator), new KickCommand($locator), new KickJobCommand($locator), new ListTubeCommand($locator), new NextReadyCommand($locator), new PauseTubeCommand($locator), new PeekCommand($locator), new PeekTubeCommand($locator), new PutCommand($locator), new StatsCommand($locator), new StatsJobCommand($locator), new StatsTubeCommand($locator)]; }); // shortcuts for the "first" pheanstalk $app['pheanstalk'] = function (Container $app) { $pheanstalks = $app['pheanstalks']; return $pheanstalks->getPheanstalk($app['pheanstalks.default']); }; $app['pheanstalk.default_options'] = ['server' => '127.0.0.1', 'port' => PheanstalkInterface::DEFAULT_PORT, 'timeout' => PheanstalkInterface::DEFAULT_TTR]; if (isset($app['console'])) { $app['console'] = $app->extend('console', function (ConsoleApplication $console, Container $app) { $commands = $app['pheanstalk.commands'](); foreach ($commands as $command) { $console->add($command); } return $console; }); } }