コード例 #1
0
 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'));
 }
コード例 #2
0
 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());
     }
 }