Commit graph

17 commits

Author SHA1 Message Date
Kunal Mehta
b9e8e9a681 Fix KafkaHandlerTest hack to work with PHPUnit 6
Change-Id: I2b2ae31b327976c7c6ba72a49f1d7d068e234928
2018-04-12 09:49:54 -07:00
Umherirrender
45da581551 Use ::class to resolve class names in tests
This helps to find renamed or misspelled classes earlier.
Phan will check the class names

Change-Id: Ie541a7baae10ab6f5c13f95ac2ff6598b8f8950c
2018-01-26 22:49:13 +01:00
Kunal Mehta
389d0a0958 Add @covers tags to includes/debug tests
Change-Id: Ida6562c87204f1680239d0bdbfde4d6fdc9bf748
2017-12-27 17:44:18 +00:00
Gergő Tisza
525bfbc8df Switch to librarized version of TestingAccessWrapper
Replaces \TestingAccessWrapper (defined in core) with
\Wikimedia\TestingAccessWrapper (defined in the composer package
wikimedia/testing-access-wrapper).

See https://gerrit.wikimedia.org/r/#/q/topic:librarize-testing-access-wrapper
for downstream patches.

The core version of the class is kept around for a while to avoid
circular dependency problems.

Bug: T163434
Change-Id: I52cc257e593da3d6c3b01a909e554a950225aec8
2017-04-20 14:15:57 +00:00
Timo Tijhof
447ce7e39a phpunit: Avoid use of deprecated getMock for PHPUnit 5 compat
The default will remain PHPUnit 4.x due to PHP 5.5 support.

But, we should allow developers to run tests with newer PHPUnit
versions which are noticably faster (especially for code coverage
reports).

* <https://github.com/sebastianbergmann/phpunit/wiki/Release-Announcement-for-PHPUnit-5.4.0>
  PHPUnit 5 deprecates the getMock() shortcut for getMockBuilder()->getMock().
  It instead introduces the shortcut createMock() which has better defaults
  than getMockBuilder(). For example, it sets 'disableArgumentCloning' and
  other things by default.

  Going forward, code should either use getMockBuilder directly and configure
  it using the setter methods (instead of the confusing variadic arguments
  of getMock) or simply use the new minimalistic createMock method. This patch
  backports the createMock method to MediaWikiTestCase so that we can start
  using it.

Change-Id: I091c0289b21d2b1c876adba89529dc3e72b99af2
2017-04-06 00:44:32 +00:00
jenkins-bot
6cc415a26e Merge "kafka: Implement ack handling" 2016-06-29 12:18:45 +00:00
Erik Bernhardson
e761c8847a kafka: Implement ack handling
By default the kafka implementation we use doesn't require any kind of
acknowledgment, it just throws messages into the wind and lets them sit
where they may. Implement an option for KafkaHandler to specify the
number of acks (number of replicas that must record the message) and
some error handling to throw exceptions as necessary when there is a
problem.

Bug: T135159
Change-Id: I859dc791072db407f908b2f36be0d6704f1a6256
2016-06-23 08:12:29 -07:00
Kunal Mehta
7ca37f1585 Remove no-longer needed backported class from phpunit
Since we finally upgraded our phpunit version, we no longer need a copy
of this phpunit matcher.

Change-Id: I9bf3db344a2e8789a264a453e4e6d87fedc4dc49
2016-06-17 02:19:32 +00:00
Reedy
291126d927 Update monolog to 1.18.2
https://github.com/Seldaek/monolog/compare/1.17.2...1.18.2

Update KafkaHandlerTest.php

Depends-On: I32e9ebe0a10d97a1ccb0f4d605bd0ee9ba4e97f6
Change-Id: I35eedb6d95b68ebf90c00bb54469c9ff5731cdab
2016-04-05 20:01:26 +00:00
Kunal Mehta
6e9b4f0e9c Convert all array() syntax to []
Per wikitech-l consensus:
 https://lists.wikimedia.org/pipermail/wikitech-l/2016-February/084821.html

Notes:
* Disabled CallTimePassByReference due to false positives (T127163)

Change-Id: I2c8ce713ce6600a0bb7bf67537c87044c7a45c4b
2016-02-17 01:33:00 -08:00
umherirrender
54c1e18eec Remove various double empty newlines
The double empty newline is not needed between functions, variable or at
end of file

Change-Id: Ib866a95084c4601ac150a2b402cfa184ebc18afa
2015-12-27 18:55:12 +00:00
Reedy
0ea1898b4e Re-enable MediaWiki.WhiteSpace.SpaceyParenthesis.SingleSpaceAfterOpenParenthesis
Fixed some SingleSpaceBeforeCloseParenthesis too

Change-Id: I1695c706a9b23ab98074ff7d6a3687eb5cdce6e7
2015-09-26 16:13:12 +00:00
Erik Bernhardson
593e7257e3 Include phpunit license for backported classes
Bug: T113765
Change-Id: I3f4242d4323d447097b2de42bfade969a6e3fd9d
2015-09-25 11:18:20 -07:00
aude
4bfbaaf682 Set visibility of monolog tests setUp method to protected
In phpunit and MediaWikiTestCase, the setUp method is protected,
and it's nice if the subclasses are consistent.

Change-Id: I4b8ac612951168913bb2dc9cf16d3dc18762a211
2015-09-22 16:57:55 +02:00
aude
641e6ed336 Also check Kafka class exists in KafkaHandlerTest
I have monolog installed but not Kafka, so still
the test was run and broken for me.

Change-Id: If396815d77b0ae25fbd5c16b628f217478062b43
2015-09-22 16:54:58 +02:00
aude
063fb8f39a Fix typo in KafkaHandlerTest
Change-Id: Ib73152a269e01bc64a4b1e7a9157de2088d152d2
2015-09-22 16:35:36 +02:00
Erik Bernhardson
f66559b616 Produce monolog messages through kafka+avro
This allows a logging channel to be configured to write
directly to kafka. Logs can be serialized either to json
blobs or the more compact apache avro format.

The Kafka handler for monolog needs a list of one of more
kafka servers to query cluster metadata from. This should be
able to use any monolog formatter, although some like
JsonFormatter require you to disable formatBatch as Kafka
protocol would prefer to encode each record independently in
the protocol.  This requires the nmred/kafka-php library,
version >= 1.3.0.

Adds a new formatter which serializes to the apache avro
format. This is a compact binary format which uses pre-
defined schemas. This initial implementation is very simple
and takes the plain schemas as a constructor argument.

Adds a new option to MonologSpi to wrap handlers in a
BufferHandler. This doesn't flush until the request shuts
down and prevents any network requests in the logger from
adding latency to web requests.

Related mediawiki/vendor update: Ibfe4bd2036ae8e998e2973f07bd9a6f057691578

The necessary config is something like:

array(
    'loggers' => array(
        'CirrusSearchRequests' => array(
            'handlers' => array( 'kafka' ),
        ),
    ),
    'handlers' => array(
        'kafka' => array(
            'factory' => '\\MediaWiki\\Logger\\Monolog\\KafkaHandler::factory',
            'args' => array( 'localhost:9092' ),
            'formatter' => 'avro',
            'buffer' => true,
        ),
    ),
    'formatters' => array(
        'avro' => array(
            'class' => '\\MediaWiki\\Logger\\Monolog\\AvroFormatter',
            'args' => array(
                array(
                    'CirrusSearchRequests' => array(
                        'type' => 'record',
                        'name' => 'CirrusSearchRequests'
                        'fields' => array( ... )
                    ),
                ),
            ),
        ),
    ),
)

Bug: T106256
Change-Id: I6ee744b3e5306af0bed70811b558a543eed22840
2015-09-21 12:45:23 -07:00