Commit graph

2645 commits

Author SHA1 Message Date
jenkins-bot
9dfb45cc7c Merge "Fix Memcached key decode" 2015-09-30 00:43:19 +00:00
Timo Tijhof
047b60b96d resourceloader: Store relative instead of absolute paths in module_deps
Make paths stored in the module_deps table relative to $IP. This ensures that when
the MediaWiki install path changes and/or if the location of the extension or skins
directory changes, that ResourceLoader's internal model is still accurate.

Previously when these paths change, ResourceLoader would exhibit various bugs.

1. Unable to detect changes in the module (if the directory no longer exists).
2. Point #1 is usually preceeded by one last cache invalidation as the content hash
   of the file path changes (from a valid hash to an empty string).
3. Unnecessary cache invalidation (if both old and new directories exist). This
   happens when a file is both an entry point (in the 'scripts' or 'styles' array)
   and also a file dependency. At first they are de-duplicated by array_unique.
   But after the disk path changes, the next check will result in the old path
   being fetched from module_deps, and the new path from the live configuration.
   This causes two changes that result in needless cache invalidation:
   - The hash list contains one more item (T111481).
   - The hash list contains both the old and new version of a file.
     (or even alternate versions, e.g. when a change is backported to the old
     wmf branch; it also affects wikis on the new branch due to the stale
     file path still in the database).

It seems unusual to move a MediaWiki install, and usually we recommend third
parties to run update.php if site administrators do move their wiki. However
Wikimedia's deployment system implicitly moves the MediaWiki install continously
from e.g. "/srv/mediawiki/php-1.26wmf5" to "/srv/mediawiki/php-1.26wmf6".

This caused virtually all ResourceLoader caching layers to get invalidated every
week when another wmf-branch is deployed, thus breaking these file paths, which
changes the version hash, which then invalidates the cache.

Bug: T111481
Change-Id: I173a9820b3067c4a6598a4c8d77e239797d2659c
2015-09-30 00:25:27 +00:00
Brad Jorsch
c3dc398514 FauxResponse: Honor cookie options, and other cleanup
We have this nice class for unit testing cookie-setting, but the
cookie-setting method ignores all the parameters! Fix that. Also provide
accessors to check the entire set of cookie data, and the set cookies as
a whole.

While this does change the semantics of FauxRequest::getcookie() in that
the name now needs to be prefixed, no extension in Gerrit uses this
method so we should be fine.

Also clean up the case of the setCookie and getCookie methods while
we're at it. Since PHP method names are case-insensitive, this doesn't
even break compatibility with extensions.

Change-Id: Ib44a074bf9796bc0b470d557e39465792f399d30
2015-09-29 22:45:56 +00:00
Matthias Mullie
8ca796ea99 Fix Memcached key decode
Flow had a key: flowdb:flow_ref:wiki:by-source:v3:Parser\'s_"broken"_+_(page)_&_grill:testwiki:1:4.7
the '+' in there was not being encoded (it only does /[\x00-\x20\x25\x7f]+/)
but coming back, it was decoded into ' '.
getMulti() shows a key=>value array or results. Since key was different,
we couldn't find what we had requested.

Bug: T110326
Change-Id: Ia92edd73d0eb7fe0d35e38e7e7af8174fb85cbcc
2015-09-28 19:37:53 +02:00
Vivek Ghaisas
c54766586a Fix issues identified by SpaceBeforeSingleLineComment sniff
Change-Id: I048ccb1fa260e4b7152ca5f09b053defdd72d8f9
2015-09-26 23:06:52 +00:00
jenkins-bot
e3983a08fd Merge "Remove excess newlines at the end of files" 2015-09-26 22:25:48 +00:00
Ricordisamoa
4f72efe8d8 Remove excess newlines at the end of files
Many of them added with commit 776c865077

Change-Id: I481b15c45ead1f5f482e120cb40ea8f3297543cf
2015-09-27 00:02:05 +02:00
jenkins-bot
2712fc2913 Merge "Wrap some long strings in tests/" 2015-09-26 21:52:43 +00:00
umherirrender
c572d18661 Fixed spacing
- Removed space after cast
- Removed spaces in array index
- Removed double spaces
- Added spaces around string concat
- Fixed mixed tabs and spaces at begin of line

Change-Id: I38e849723f055d2d4c05cba72f5c245a28e8d5da
2015-09-26 20:44:54 +00:00
Reedy
58f0a7ee4e Wrap some long strings in tests/
Change-Id: I89d53c5051e5ee4bd8624df8ee2b25993090a7df
2015-09-26 21:01:59 +01:00
Amir E. Aharoni
76ae9acec3 Make line shorter to pass phpcs in LinkerTest.php
There are other linkes here ythat will require a different treatment.

Bug: T102614
Change-Id: Ia0c75d11a85a931d37941471f9c9bdc16fda28e1
2015-09-26 18:20:11 +00:00
Reedy
8882634112 Re-enable MediaWiki.WhiteSpace.SpaceAfterControlStructure.Incorrect
Change-Id: I1b756909a1080108c5147d46950f826871ef6dc1
2015-09-26 18:32:32 +01:00
jenkins-bot
4ad0cdad5e Merge "Re-enable Squiz.WhiteSpace.SemicolonSpacing.Incorrect" 2015-09-26 17:01:07 +00:00
jenkins-bot
c3a5d76d19 Merge "Re-enable MediaWiki.WhiteSpace.SpaceyParenthesis.SingleSpaceBeforeCloseParenthesis" 2015-09-26 16:53:03 +00:00
Reedy
062af78957 Re-enable Squiz.WhiteSpace.SemicolonSpacing.Incorrect
Change-Id: Ie86c512fbca07f41b252d95de3ab92da3a050e72
2015-09-26 17:41:22 +01:00
jenkins-bot
986d426de7 Merge "Re-enable Squiz.WhiteSpace.ScopeClosingBrace.Indent" 2015-09-26 16:39:22 +00:00
Reedy
8e8368ca65 Re-enable MediaWiki.WhiteSpace.SpaceyParenthesis.SingleSpaceBeforeCloseParenthesis
Change-Id: I8482f5dd9d79e4946e862b0ac03bd027d62e8646
2015-09-26 17:38:35 +01:00
Reedy
0ea1898b4e Re-enable MediaWiki.WhiteSpace.SpaceyParenthesis.SingleSpaceAfterOpenParenthesis
Fixed some SingleSpaceBeforeCloseParenthesis too

Change-Id: I1695c706a9b23ab98074ff7d6a3687eb5cdce6e7
2015-09-26 16:13:12 +00:00
Reedy
3a6fc5e96c Re-enable Squiz.WhiteSpace.ScopeClosingBrace.Indent
Change-Id: I743c4ce019321d631c0a11ee2112fe9aa8ba4c5d
2015-09-26 16:09:54 +00:00
jenkins-bot
dd3c4f3a6f Merge "Re-enable Squiz.WhiteSpace.SuperfluousWhitespace.EmptyLines" 2015-09-26 15:20:18 +00:00
jenkins-bot
831fdbea37 Merge "Re-enable PSR2.Methods.MethodDeclaration.StaticBeforeVisibility" 2015-09-26 15:19:16 +00:00
Reedy
baa8875537 Re-enable PSR2.Methods.MethodDeclaration.StaticBeforeVisibility
Change-Id: Id3e4bc5d7e4d1b8003f9f6b324e2321b5af1771f
2015-09-26 16:02:57 +01:00
Reedy
0b3e3b7622 Re-enable Squiz.WhiteSpace.SuperfluousWhitespace.EmptyLines
Add extra whitespace line too

Change-Id: Ia33c9b63c36f121e5e9283c6d4a2b024a1821a43
2015-09-26 16:00:56 +01:00
Reedy
776c865077 Re-enable Generic.Files.EndFileNewline.NotFound
Change-Id: Ib84ce8dc973f7e3fe688435a72f7936342b6f2dd
2015-09-26 15:58:53 +01:00
Amir E. Aharoni
51f6dca4aa SpecialSearchTest.php: Make lines shorter to make phpcs happier
Also fixes a "Single space expected before closing parenthesis" failure.

Change-Id: Id35e490e7d17ee58b643e9f74583afcef62145c2
2015-09-26 14:42:26 +00:00
Amir E. Aharoni
3f5740ba03 StatusTest.php: Make lines shorter to make phpcs happier
Change-Id: Ibe2034fb8d1849f3c0f98d4c4c3ffcb8277e416b
2015-09-26 14:07:08 +00:00
Erik Bernhardson
593e7257e3 Include phpunit license for backported classes
Bug: T113765
Change-Id: I3f4242d4323d447097b2de42bfade969a6e3fd9d
2015-09-25 11:18:20 -07:00
Kunal Mehta
c7a6e1cc5e Add @codingStandardsIgnoreFile to ConsecutiveParametersMatcher.php
It was apparently copied from upstream, and doesn't match our coding
conventions.

Change-Id: I6da7ce6f29c9dff007f81a6fbf07dcc6ad37f04c
2015-09-25 09:54:12 -07:00
addshore
349ca056b7 Move LogFormatter test comment block
This was missed in:
https://gerrit.wikimedia.org/r/#/c/239783/
Ia5016c82c00dd7c35a6f1253d6e385b587ec485e

Change-Id: Ibf537aaca2a0ca9d2c509499f6da5b9e51b06037
2015-09-25 15:36:06 +00:00
umherirrender
d6961552b3 Migrate protect log to new log system
This localize the protect type, level and expiry on Special:Log/protect.
To allow i18n there are some details stored in the log params of new log
items, these details also shown on API output.
The details cannot get from the old existing data, because there are
containing L10n strings therefore i18n works only for new items.
In the api and for IRC the old description text is still stored in the
log params for backward compatibility.

This allows use of gender on Special:Log. Old messages are kept for use
in IRC. Tests already exists to ensure an unchanged IRC message.

Bug: T47988
Change-Id: I3bb85c61b857972e66c99c499d7d785c88cafb25
2015-09-25 17:07:50 +02:00
Kunal Mehta
9a3c7b43ea Move FileContentsHasher into includes/utils/
The class only contains two dependencies upon MediaWiki (ObjectCache &
wfGlobalCacheKey) which are suitable for inclusion in the utils
directory.

Change-Id: I85b4c763be2670c40f26d93e75cedcb68eaa7987
2015-09-24 18:27:28 -07:00
jenkins-bot
bdabeab02a Merge "Add unit tests for FileContentsHasher" 2015-09-25 00:43:23 +00:00
jenkins-bot
1d93821f3b Merge "Remove $this reference in static method" 2015-09-24 20:19:35 +00:00
C. Scott Ananian
fad704814e Typo fix to phab reference in comment
This got inadvertently corrupted in the bugzilla->phab cleanup done
in 271da88127.

Change-Id: Ic70a9bd167e76800466a00521f5564d9d13c7c2b
2015-09-24 17:06:40 +00:00
jenkins-bot
8ae3055201 Merge "Some bugzilla.wikimedia.org -> phabricator.wikimedia.org changes" 2015-09-24 15:49:25 +00:00
umherirrender
271da88127 Some bugzilla.wikimedia.org -> phabricator.wikimedia.org changes
Changed some old bugzilla links to new phabricator links in comments,
test data and error message. This reduces the need for redirects from
old bugzilla to new phabricator from our source code.

Change-Id: Id98278e26ce31656295a23f3cadb536859c4caa5
2015-09-24 17:17:25 +02:00
Ori Livneh
c243869d10 Add unit tests for FileContentsHasher
Adds two unit tests for the FileContentsHasher class introduced in I1ff61153.

Change-Id: I711db6bb25c018d36fd89c8ab2dbe8d11ed94537
2015-09-24 13:39:09 +01:00
saper
ae1729a24b Skip ImportTest if allow_url_fopen disabled
Workaround for:

Bug: 73283
Change-Id: I7afbf4dba358c89f9ba78042d82c35df1d2258e8
2015-09-24 11:28:32 +00:00
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
Erik Bernhardson
91aebb6072 Remove $this reference in static method
Adds a couple tests to demonstrate the problem and fixes
it.

Change-Id: Ib15088e83ad333fb126446fad86f97ae12ff6e74
2015-09-23 21:08:36 +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