public function testBeanstalk() { $manager = new Manager(); $beanstalk = new Beanstalk($manager); $this->assertNull($beanstalk->getDispatcher()); $this->assertSame($manager, $beanstalk->getConnectionManager()); $manager['default1'] = new Configuration('127.0.0.1', 12345); $manager['default2'] = new Configuration('127.0.0.1', 67890); $manager['default3'] = new Configuration('127.0.0.1', 99999); $producer = $beanstalk->getProducer('default2'); $this->assertEquals($producer, $beanstalk->getProducer('default2')); $this->assertNotEquals($producer, $beanstalk->getProducer('default3')); }
public function testSubscriber() { $writeLine = null; $writeCount = 0; $connection = $this->getMock(Connection::class); $connection->expects($this->exactly(4))->method('write')->willReturnCallback(function ($data, $size) use(&$writeLine, &$writeCount) { if ($writeCount === 2) { $writeLine = $data; } $writeCount++; }); $connection->expects($this->once())->method('readLine')->willReturn(ResponseInterface::RESPONSE_INSERTED); $object = new \stdClass(); $object->foo = 'bar'; $object->bar = 'foo'; $dispatcher = new EventDispatcher(); $dispatcher->addSubscriber(new DataTransformSubscriber()); $configuration = (new Configuration(null))->setConnection($connection); $manager = (new Manager())->addConfiguration('default', $configuration); $beanstalk = new Beanstalk($manager, $dispatcher); $beanstalk->getProducer()->put($object); $unpacked = DataTransformer::unpack($writeLine); $this->assertInstanceOf('PBergman\\Bundle\\BeanstalkBundle\\Transformer\\DataContainer', $unpacked); $this->assertInstanceOf('PBergman\\Bundle\\BeanstalkBundle\\Transformer\\DataHeader', $unpacked->getHeader()); $this->assertSame(posix_getpid(), $unpacked->getHeader()->getPid()); $this->assertSame('default', $unpacked->getHeader()->getName()); $this->assertSame($object->foo, $unpacked->getData()->foo); $this->assertSame($object->bar, $unpacked->getData()->bar); $this->assertSame(DataHeader::T_OBJECT, $unpacked->getHeader()->getType()); $errorLine = substr($writeLine, 0, 2); $errorLine .= 'AB'; $errorLine .= substr($writeLine, 4); try { DataTransformer::unpack($errorLine); } catch (\PBergman\Bundle\BeanstalkBundle\Exception\TransformerException $e) { $this->assertRegExp('/Signature mismatch 0x[a-f0-9]{8} !== 0x[a-f0-9]{8}/', $e->getMessage()); } $errorLine = $writeLine . 'aaaa'; try { DataTransformer::unpack($errorLine); } catch (\PBergman\Bundle\BeanstalkBundle\Exception\TransformerException $e) { $this->assertRegExp('/CRC mismatch 0x[a-f0-9]{8} !== 0x[a-f0-9]{8}/', $e->getMessage()); } }