25 use Wikimedia\TestingAccessWrapper;
30 if ( !class_exists(
'Monolog\Handler\AbstractProcessingHandler' )
31 || !class_exists(
'Kafka\Produce' )
33 $this->markTestSkipped(
'Monolog and Kafka are required for the KafkaHandlerTest' );
41 [ [],
'monolog_foo' ],
42 [ [
'alias' => [
'foo' =>
'bar' ] ],
'bar' ]
50 $produce = $this->getMockBuilder(
'Kafka\Produce' )
51 ->disableOriginalConstructor()
53 $produce->expects( $this->
any() )
54 ->method(
'getAvailablePartitions' )
55 ->will( $this->returnValue( [
'A' ] ) );
56 $produce->expects( $this->once() )
57 ->method(
'setMessages' )
59 $produce->expects( $this->
any() )
61 ->will( $this->returnValue(
true ) );
66 'level' => Logger::EMERGENCY,
77 [ [
'swallowExceptions' =>
false ],
true ],
79 [ [
'swallowExceptions' =>
true ],
false ],
87 $produce = $this->getMockBuilder(
'Kafka\Produce' )
88 ->disableOriginalConstructor()
90 $produce->expects( $this->
any() )
91 ->method(
'getAvailablePartitions' )
92 ->will( $this->throwException(
new \Kafka\Exception ) );
93 $produce->expects( $this->
any() )
95 ->will( $this->returnValue(
true ) );
97 if ( $expectException ) {
98 $this->setExpectedException(
'Kafka\Exception' );
104 'level' => Logger::EMERGENCY,
109 if ( !$expectException ) {
110 $this->assertTrue(
true,
'no exception was thrown' );
118 $produce = $this->getMockBuilder(
'Kafka\Produce' )
119 ->disableOriginalConstructor()
121 $produce->expects( $this->
any() )
122 ->method(
'getAvailablePartitions' )
123 ->will( $this->returnValue( [
'A' ] ) );
124 $produce->expects( $this->
any() )
126 ->will( $this->throwException(
new \Kafka\Exception ) );
128 if ( $expectException ) {
129 $this->setExpectedException(
'Kafka\Exception' );
135 'level' => Logger::EMERGENCY,
140 if ( !$expectException ) {
141 $this->assertTrue(
true,
'no exception was thrown' );
146 $produce = $this->getMockBuilder(
'Kafka\Produce' )
147 ->disableOriginalConstructor()
149 $produce->expects( $this->
any() )
150 ->method(
'getAvailablePartitions' )
151 ->will( $this->returnValue( [
'A' ] ) );
152 $mockMethod = $produce->expects( $this->exactly( 2 ) )
153 ->method(
'setMessages' );
154 $produce->expects( $this->
any() )
156 ->will( $this->returnValue(
true ) );
158 TestingAccessWrapper::newFromObject( $mockMethod )->matcher->parametersMatcher =
159 new \PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters( [
164 $formatter = $this->createMock(
'Monolog\Formatter\FormatterInterface' );
165 $formatter->expects( $this->
any() )
167 ->will( $this->onConsecutiveCalls(
'words',
null,
'lines' ) );
170 $handler->setFormatter( $formatter );
171 for ( $i = 0; $i < 3; ++$i ) {
174 'level' => Logger::EMERGENCY,
182 $produce = $this->getMockBuilder(
'Kafka\Produce' )
183 ->disableOriginalConstructor()
185 $produce->expects( $this->
any() )
186 ->method(
'getAvailablePartitions' )
187 ->will( $this->returnValue( [
'A' ] ) );
188 $produce->expects( $this->once() )
189 ->method(
'setMessages' )
191 $produce->expects( $this->
any() )
193 ->will( $this->returnValue(
true ) );
195 $formatter = $this->createMock(
'Monolog\Formatter\FormatterInterface' );
196 $formatter->expects( $this->
any() )
198 ->will( $this->onConsecutiveCalls(
'words',
null,
'lines' ) );
201 $handler->setFormatter( $formatter );
205 'level' => Logger::EMERGENCY,
211 'level' => Logger::EMERGENCY,
217 'level' => Logger::EMERGENCY,