wiki.techinc.nl/tests/phpunit
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
..
data Fix TestingAccessWrapper private property access and parent classes 2015-09-09 11:44:03 -04:00
docs
includes Produce monolog messages through kafka+avro 2015-09-21 12:45:23 -07:00
languages Improve wording of "size-bytes" and "size-pixel" messages 2015-08-30 15:23:13 +10:00
maintenance backupTextPassTest: Disable flaky test 'testCheckpointPlain' 2015-07-07 18:43:39 +00:00
mocks Configure logged in session length independently 2015-06-23 19:31:20 -04:00
skins
structure ResourcesTest: Detect missing files in url(...) expressions 2015-09-16 00:27:23 +00:00
suites Deprecate $wgEnableParserCache 2015-06-04 19:23:03 +01:00
tests
bootstrap.php Remove phpunit profiling. It doesn't make any sense 2015-02-10 18:50:52 +00:00
LessFileCompilationTest.php Actually run the Less compilation tests 2015-07-27 18:26:47 +02:00
Makefile tests: Remove "install" target from makefile documentation 2015-09-02 23:58:26 +00:00
MediaWikiLangTestCase.php
MediaWikiPHPUnitTestListener.php Move debug-tests out of MediaWikiPHPUnitCommand 2014-08-02 21:34:34 +00:00
MediaWikiTestCase.php Abstract and refactor Tidy support 2015-09-10 20:18:52 -07:00
phpunit.php Set $wgMainWANCache to none for PHPUnit, as is done for $wgMainCacheType 2015-07-13 23:18:30 +00:00
README
ResourceLoaderTestCase.php resourceloader: Enable module content version for data modules 2015-06-18 20:39:38 +00:00
run-tests.bat
suite.xml tests: Remove resources/ from phpunit coverage 2015-01-26 13:48:53 -08:00
TODO

== MediaWiki PHPUnit Tests ==

The unit tests for MediaWiki are implemented using the PHPUnit testing
framework and require PHPUnit to run.


=== WARNING ===

Some of the unit tests are DESTRUCTIVE and WILL ALTER YOUR WIKI'S CONTENTS.

DO NOT RUN THESE TESTS ON A PRODUCTION SYSTEM OR ON ANY SYSTEM WHERE YOU NEED
TO RETAIN YOUR DATA.


== Installation ==

If PHPUnit is not installed, follow the installation instructions in the
PHPUnit Manual at:

  http://www.phpunit.de/manual/current/en/installation.html

- or -

On Unix-like operating systems, run:

  make install


== Running tests ==

The tests are run from your operating system's command line.

Ensure that you are in the tests/phpunit directory of your MediaWiki
installation.


On Unix-like operating systems, the tests runs are controlled with a makefile.
Run command:

  make help

for a full list of options for running tests.


On Windows-family operating systems, run the 'run-tests.bat' batch file.


=== Writing tests ===

A guide to writing unit tests for MediaWiki can be found at:

	http://mediawiki.org/wiki/Unit_Testing