Commit graph

3156 commits

Author SHA1 Message Date
Brian Wolff
20f9005103 Make $file->getLength() return duration of GIF and APNG files.
Its not just ogg files that have a duration, animated GIFs
and APNGs do too.

After If172a1cba is merged, this will show up in the api.

Change-Id: Ie7cf00df34950ae404fcf655dd16397a273e5523
2015-09-24 00:46:17 +00: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
Adrian Heine
3d7b910bc3 Fix typo in AvroFormatterTest
Also removes trailing whitespace in that file.

Change-Id: Icf30a68ea7356735f416baae8a435e0f10d5caaa
2015-09-22 10:07:09 +02:00
jenkins-bot
35f61c7c4b Merge "registration: Allow extensions to specify which MW core versions they require" 2015-09-22 04:57:47 +00:00
jenkins-bot
7f67c5566d Merge "Removed deprecated $wgDeferredUpdateList" 2015-09-22 00:50:22 +00:00
Aaron Schulz
cc4ca3e86d Removed deprecated $wgDeferredUpdateList
Change-Id: I7072ad3b34dd9a0726df6d1c044616c3b4bcd79f
2015-09-21 16:30:16 -07:00
jenkins-bot
73f52a6c0c Merge "Produce monolog messages through kafka+avro" 2015-09-21 23:26:05 +00:00
jenkins-bot
02f9858ece Merge "Added read affinity tests for FileBackendMultiWrite" 2015-09-21 21:30:45 +00: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
Aaron Schulz
3e8294900a Added read affinity tests for FileBackendMultiWrite
Change-Id: I1407273175396d4d3631531ff0ca0afa3009913e
2015-09-21 11:21:00 -07:00
Kunal Mehta
cef1f31167 registration: Allow extensions to specify which MW core versions they require
This adds a "requires" property to extension.json, which extensions and
skins can use to indicate which versions of MediaWiki core they support.
The hacky wfUseMW() is now deprecated in favor of this.

Rather than writing our own version constraint and parser library, we
can re-use composer's, which was recently split out into a separate
library named "composer/semver" for this patch.

Any syntax accepted by composer[1] is available for usage here. Test
cases have been provided to demonstrate how versions are parsed. For now
it is recommended that people stick to expressing compatability with
stable versions (e.g. ">= 1.26").

This patch does not support requiring specific MediaWiki core WMF
branches, since those do not follow the standard semver format that
composer parses. If we are unable to parse $wgVersion, all checking will
be skipped and reported as compatible.

[1] https://getcomposer.org/doc/01-basic-usage.md#package-versions

Bug: T99084
Change-Id: I7785827216e16c596356d0ae42d6b30f3f179f10
2015-09-21 09:56:53 -07:00
addshore
9da83220b8 Add tests for RecentChange::parse(To|From)RCType
Change-Id: I60278aaeef475ed3ec1515b1f5f28d6afcc700c5
2015-09-21 14:19:54 +00:00
addshore
9705da62e1 Add test for RecentChange::newFromRow
Change-Id: I1e21d296e15c1b6d18f19ae9cc7038387c8f4e2b
2015-09-21 14:19:48 +00:00
addshore
9d144409b7 Add test for RecentChange::isInRCLifespan
Change-Id: I0eac57d0cfabba3ed9b5b430e9972e7c5c0b9f8b
2015-09-21 14:19:28 +00:00
addshore
0b81487c21 Use setUp instead of __construct in RecentChangeTest
Change-Id: Ia0d704a2832c54995fba0014ae6422765a743be0
2015-09-21 13:33:50 +00:00
addshore
829d1a4c15 Cleanup RecentChangeTest, move things out that don't belong
This moves out a bunch of stuff that doesnt
seem to test anything in RecentChange....

This also shows us how few tests RecentChange
actually has!

Change-Id: Ia5016c82c00dd7c35a6f1253d6e385b587ec485e
2015-09-21 14:33:10 +01:00
jenkins-bot
0dac88029d Merge "Strip comments before gathering url(...) refs in CSS" 2015-09-20 15:10:08 +00:00
Elliott Eggleston
c737e48d7f Strip comments before gathering url(...) refs in CSS
Change I5a3cdeb7d53485f161ccf8133e76850cdf5b4579 introduced tests
for existence of all local files referenced in CSS.  It's currently
failing changes even when the referenced files have been commented
out.  This change ensures that commented-out files are not included
in the testing list.

Change-Id: I2ad74c13a9cf36e96a7d7451bf229856bcd18422
2015-09-19 16:10:53 -04:00
jenkins-bot
ddff77af20 Merge "Support async writes to secondary MultiWriteBagOStuff stores" 2015-09-19 18:23:06 +00:00
Aaron Schulz
fd8e85fc2d Support async writes to secondary MultiWriteBagOStuff stores
* This is useful for ParserCache, as it tries to focus on memcached
  and use other caches (e.g. mariadb) for the long-tail of less used
  content, as setup on WMF. The class uses BagOStuff in a way that is
  compatible with this approach.

Bug: T109751
Change-Id: Ia64eb44a9b52a988fde27b468d604d9163bed4b4
2015-09-18 21:35:43 -07:00
Ori Livneh
ffcb040949 Fix another test broken by I826adf9
Change-Id: I15367691af8d2290d54cdb3bb134dfa71a15f9f7
2015-09-18 10:44:50 -07:00
Ori Livneh
6f3372b1c9 Fix test broken by I826adf9
Change-Id: I4313188767d47cf9efcfd24ed2716475a289bb77
2015-09-18 10:36:42 -07:00
jenkins-bot
a5bafc48de Merge "Update test documentation, fix broken links" 2015-09-18 09:04:57 +00:00
jenkins-bot
25bb740e50 Merge "API: Finish killing "raw mode"" 2015-09-18 06:31:33 +00:00
jenkins-bot
dd3b90a9db Merge "ResourcesTest: Detect missing files in url(...) expressions" 2015-09-17 19:46:11 +00:00
Kunal Mehta
0a83ef3cf7 registration: Fix merging of array_plus
We want the local configuration ($GLOBALS[$key]) to override the default
values ($val). This matches what `array_merge` does.

Bug: T112868
Change-Id: I9c333a1fa67d3f24e09ffed3072b2897389f6139
2015-09-17 10:29:02 -07:00
Brad Jorsch
f9c1bfa594 API: Finish killing "raw mode"
It was kept around in the ApiResult rewrite because Wikibase was
(mis)using it as an "XML mode" flag.

Bug: T96596
Change-Id: Ic8259649c8cb0cce0444c907607c36d96fb2eb7e
2015-09-17 13:51:45 +00:00
jenkins-bot
02ec1ea797 Merge "Move query rewriting into search backend" 2015-09-16 18:57:55 +00:00
umherirrender
3ab5510ef7 FauxRequest: Avoid header leak
Actually override initHeaders to avoid init of the header, if no header
was set.

The tests was taken from I4c06369968e.
Follows-up 578a0c082f.

Change-Id: I86b2a9bae2f5938374fd9e5e46997c3fdfe87e39
2015-09-16 16:52:58 +00:00
Bartosz Dziewoński
8f5cd11d82 ResourcesTest: Detect missing files in url(...) expressions
The way this is implemented is really dirty... but it found us
a few pre-existing bugs already (T111518, T111519, T111771).
I think it might be worth it.

* CSSMin: Add new method getAllLocalFileReferences() which skips the
  file_exists() check.
* ResourceLoaderModule: Make use of it to track missing files too.
* ResourcesTest: Verify that the missing files are missing.

Change-Id: I5a3cdeb7d53485f161ccf8133e76850cdf5b4579
2015-09-16 00:27:23 +00:00
jenkins-bot
1eceaa6c20 Merge "Allow Linker::formatComment to link to another wiki per default." 2015-09-15 18:49:08 +00:00
daniel
ef1f4af079 Allow Linker::formatComment to link to another wiki per default.
This also adds tests against injection to LinkerTest.

Bug: T111676
Change-Id: I757f2b91f3b50d789d04e530049c34b4628253e3
2015-09-15 18:10:33 +02:00
daniel
50ff1eaec3 Remove WikiReference::getHostname.
getHostname() was broken and seems to be unused.

Change-Id: I8d44a6907ad395ea12deebf404831c06e07ed401
2015-09-14 18:41:13 +00:00
jenkins-bot
1fb06c0c71 Merge "Add support for fragments to WikiMap" 2015-09-14 10:12:41 +00:00
jenkins-bot
d92845c229 Merge "Add tests for WikiMap and WikiReference" 2015-09-14 10:12:37 +00:00
daniel
5852451177 Add support for fragments to WikiMap
WikiMap::makeForeignUrl should support fragement IDs in the
generated URL.

Change-Id: I612d5f465822b56356a78b3e72fb441a888668f1
2015-09-11 16:25:53 +02:00
daniel
3cecad00c9 Add tests for WikiMap and WikiReference
Change-Id: Ie218296fc7c1ceba588fadef076d66be865b1905
2015-09-11 16:21:16 +02:00
Tim Starling
2c6c954e23 Abstract and refactor Tidy support
* Split tidy implementations into a class hierarchy
* Bring all tidy configuration into a single associative array and
  deprecate the old configuration.
* Remove $wgAlwaysUseTidy

This is preparatory to replacement of Tidy (T89331). I used the name
"Raggett" for things relating to Dave Raggett's Tidy, since if we use
"tidy" to mean the new abstract system as well as Raggett's tidy, it
gets confusing.

Change-Id: I77af1a16cbbb47fc226d05fb9aad56c58e8910b5
2015-09-10 20:18:52 -07:00
Matthias Mullie
6382ba2d5a Merge "Decode Memcached keys before returning getMulti result" 2015-09-10 17:30:54 +00:00
jenkins-bot
bb0a6f5248 Merge "API: Add support for selected HTTP precondition headers" 2015-09-10 16:42:48 +00:00
jenkins-bot
804cc6885a Merge "Revert "Do not encode "'" as %27 (redirect loop in Opera 12)"" 2015-09-10 15:36:10 +00:00
Bartosz Dziewoński
8477b1b277 Revert "Do not encode "'" as %27 (redirect loop in Opera 12)"
This seems to cause redirect loops in current Firefox instead.

This reverts commit a89a21990e.

Bug: T106793
Change-Id: I18fac8ab0f94e2df8476131b132c9866902a02c4
2015-09-10 15:23:25 +00:00
jenkins-bot
c0816e4032 Merge "Rewrite OutputPage::addVaryHeader" 2015-09-10 15:00:30 +00:00
Brad Jorsch
eb6bea8b54 API: Add support for selected HTTP precondition headers
Specifically, GET requests can now return ETag and Last-Modified
headers, and If-None-Match and If-Modified-Since headers on such GET
requests will be honored. This doesn't change any API modules to
actually return these values, it just provides the infrastructure.

For reasoning on why only GET requests and why only these two of the
five precondition headers defined by RFC 7232, see the doc comment on
ApiMain::checkConditionalRequestHeaders().

Change-Id: Ia18874c9360fcffdad323b341ca867ba773788fd
2015-09-10 10:19:25 -04:00
jenkins-bot
d891ffecbd Merge "Fix so wfResetOutputBuffers doesn't break unit tests" 2015-09-10 00:14:21 +00:00
jenkins-bot
a007bbecc2 Merge "ApiResult: Fix size checking" 2015-09-09 23:42:49 +00:00
Gergő Tisza
6af306afa8 Rewrite OutputPage::addVaryHeader
Rewrite OutputPage::addVaryHeader which had a very confusing
structure.

There is one breaking change: the $option argument was declared
as array|null, but the function accepted everything and showed
inconsistent behavior; e.g.

    $op->addVaryHeader( 'Foo', 'bar' )

resulted in 'X-Vary-Options: Foo;bar' but

    $op->addVaryHeader( 'Foo' )
    $op->addVaryHeader( 'Foo', 'bar' )

resulted in 'X-Vary-Options: Foo'. With the patch, non-array
arguments (other than null) result in an error.

Change-Id: Id31d95fe27b01b00ec8a1d7a3996275fc0aacf3c
2015-09-09 15:01:45 -07:00
Brad Jorsch
1e21a4bcab Fix TestingAccessWrapper private property access and parent classes
PHP's reflection mechanism is weird: reflecting on a private method will
find it even if it's defined in a parent class, while reflecting on a
private property just fails.

It would likely be more useful if TestingAccessWrapper could find
private properties defined in parent classes, so let's make that happen.

Change-Id: I9cfdde2694136d0e4559cc419a528762ea14ae4b
2015-09-09 11:44:03 -04:00