aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php
Commit message (Collapse)AuthorAgeFilesLines
* tests: Use namespaced classesUmherirrender2024-10-211-3/+3
| | | | | | | | Changes to the use statements and some additions are done automatically via script This also updates @covers tag for the namespaced classes Change-Id: I859ba6d05018c99710b744e2becab432410d3bca
* Add namespace to remaining parts of Wikimedia\FileBackendJames D. Forrester2024-10-031-1/+3
| | | | | Bug: T353458 Change-Id: I49c843c9d8f6459c0fbf774afeea7a82fa564b59
* Add namespace and deprecation alias to FileBackendEbrahim Byagowi2024-05-191-0/+1
| | | | | | | | | This patch introduces a namespace declaration for the Wikimedia\FileBackend to FileBackend and establishes a class alias marked as deprecated since version 1.43. Bug: T353458 Change-Id: Id897687b1d679fd7d179e3a32e617aae10ebff33
* filebackend: Retry Swift requests with new auth token on 401Tim Starling2024-03-151-1/+78
| | | | | | | | | | | | | | | | | | | | | Every Wednesday, we get hundreds of user-visible storage failures, because there is only one global storage token and it has a lifetime of one week. The code assumes that requesting a token regularly will avoid expiry, but that is not the case. So, when a request fails with a 401, refresh the auth token, then retry the request. Factor out HTTP request handling to allow this. Swift gives us the remaining lifetime of the token in seconds, so use that as the server and process cache expiry time. There will be a stampede when it expires, but my laptop can do 700 req/s single- threaded, so it should be OK. Add tests to cover the cases previously handled by checking the return value of getAuthentication(). Bug: T358830 Change-Id: If9fe4dde4127592adae1b81e8eb925c4f59443d9
* tests: Fix @covers and @coversDefaultClass to have leading \Reedy2024-02-161-4/+4
| | | | Change-Id: I5629f91387f2ac453ee4341bfe4bba310bd52f03
* objectcache,resourceloader,rdbms,jobqueue: Widen @covers annotationsTimo Tijhof2023-04-101-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Follows-up I4c7d826c7ec654b, I1287f3979aba1bf1. We lose useful coverage and spend valuable time keeping these accurate through refactors (or worse, forget to do so). The theoretically "bad" accidental coverage is almost never actually bad. Having said that, I'm not removing them wholesale (yet). I've audited each of these specific files to confirm it is a general test of the specified subject class, and also kept it limited to those specified classes. That's imho more than 100% of the benefit for less than 1% of the cost (more because `@covers` is more valuable than the fragile and corrosive individual private method tracking in tests that inevitably get out of date with no local incentive to keep them up to date). Cases like structure tests keep `@coversNothing` etc and we still don't count coverage of other classes. There may be a handful of large legacy classes where some methods are effectively class-like in complexity and that's why it's good for PHPUnit to offer the precision instrument but that doesn't meant we have to use that by-default for everything. I think best practice is to write good narrow unit tests, that reflect how the code should be used in practice. Not to write bad tests and hide part of its coverage within the same class or even namespace. Fortunately, that's generally what we do already it's just that we also kept these annotations still in many cases. This wastes time to keep methods in sync, time to realize (and fix) when other people inevitably didn't keep them in sync, time to find uncovered code only to realize it is already covered, time for a less experienced engineer to feel obligate to and do write a low quality test to cover the "missing" branch in an unrealistic way, time wasted in on-boarding by using such "bad" tests as example for how to use the code and then having to unlearn it months/years later, loss of telemetry in knowing what code actually isn't propertly tested due to being masked by a bad test, and lost oppertunities to find actually ununused/unreachable code and to think about how to instead structure the code such that maybe that code can be removed. ------ Especially cases like LBFactoryTest.php were getting out of hand, and in GlobalIdGeneratorTest.php we even resorted to reminding people with inline comments to keep tags in sync. Change-Id: I69b5385868cc6b451e5f2ebec9539694968bf58c
* Clean up tests that misused the parameters of assertSame/EqualsFunc2022-02-081-3/+3
| | | | | | | | | | | | Expected value is the first parameter to assertSame() or assertEquals(). And turn to use assertCount() for some assertions aginst count of array. Based on code search `assert(?:Same|Equals)\(.+,.+expected` and I look through files roughly, so some assertions that don't contains 'expected' are also fixed. In the meantime, some assertions that I am not clear about are not touched. Change-Id: I75798b60d29fd19b33f4fdf34ed3c788db420d01
* build: Updating dependencieslibraryupgrader2021-07-221-1/+1
| | | | | | | | | | | | | | composer: * mediawiki/mediawiki-codesniffer: 36.0.0 → 37.0.0 The following sniffs now pass and were enabled: * Generic.ControlStructures.InlineControlStructure * MediaWiki.PHPUnit.AssertCount.NotUsed npm: * svgo: 2.3.0 → 2.3.1 * https://npmjs.com/advisories/1754 (CVE-2021-33587) Change-Id: I2a9bbee2fecbf7259876d335f565ece4b3622426
* Hard deprecate LockManagerGroup::singleton() and ::destroySingletons()ZabeMath2021-05-031-1/+2
| | | | | | | both deprecated since 1.34. Bug: T249030 Change-Id: Ic8747430dae6d9ebe8ca52841cf0d998968dfc2f
* Allow x-delete-at and x-delete-after expiry headerskalle2021-04-261-0/+30
| | | | | | | | | | | | | | From: https://docs.openstack.org/swift/latest/overview_expiring_objects.html The swift-object-expirer offers scheduled deletion of objects. The Swift client would use the X-Delete-At or X-Delete-After headers during an object PUT or POST and the cluster would automatically quit serving that object at the specified time and would shortly thereafter remove the object from the system. Bug: T280496 Change-Id: I886f3cea51f80d820841f8548941ca02a0a514c3
* filebackend: Fix index error in SwiftFileBackendThiemo Kreuz2020-07-281-0/+4
| | | | | | | This fixes a regression introduced by If3d2f18. Bug: T259023 Change-Id: I654b1bcf0ff65f68ed7d92d51a6b39325da731f3
* Reduce nesting by turning big if-else into guard clausesThiemo Kreuz2020-07-241-1/+1
| | | | Change-Id: If3d2f18af0cc7d0f8fe9f764bd4d0e4bae70e440
* MediaWikiTestCase to MediaWikiIntegrationTestCaseaddshore2020-06-301-1/+1
| | | | | | | | | | | | | The name change happened some time ago, and I think its about time to start using the name name! (Done with a find and replace) My personal motivation for doing this is that I have started trying out vscode as an IDE for mediawiki development, and right now it doesn't appear to handle php aliases very well or at all. Change-Id: I412235d91ae26e4c1c6a62e0dbb7e7cf3c5ed4a6
* tests: Add explicit return type void to setUp() and tearDown()Max Semenik2019-10-301-1/+1
| | | | | | Bug: T192167 Depends-On: I581e54278ac5da3f4e399e33f2c7ad468bae6b43 Change-Id: I3a21fb55db76bac51afdd399cf40ed0760e4f343
* filebackend: rename and simplify header sanitizing methods in SwiftFileBackendAaron Schulz2019-09-081-76/+17
| | | | | | | | | In addition: * Remove restriction that Content-Type was ignored in 'copy' and 'move'. * Fix failing tests due to copy/move not respecting 'ignoreMissingSource' when using doQuickOperations(). Change-Id: Id1befeefeaaf75f0a6bf0e68b1e62271d432f953
* Revert "Separate MediaWiki unit and integration tests"Legoktm2019-06-131-0/+216
| | | | | | | | This reverts commit 0a2b996278e57a8b8c5377cd3a3eaa54f993d4a9. Reason for revert: Broke postgres tests. Change-Id: I27d8e0c807ad5f0748b9611a4f3df84cc213fbe1
* Separate MediaWiki unit and integration testsMáté Szabó2019-06-131-216/+0
| | | | | | | | | | | | | | | | | | | | | This changeset implements T89432 and related tickets and is based on exploration done at the Prague Hackathon. The goal is to identify tests in MediaWiki core that can be run without having to install & configure MediaWiki and its dependencies, and provide a way to execute these tests via the standard phpunit entry point, allowing for faster development and integration with existing tooling like IDEs. The initial set of tests that met these criteria were identified using the work Amir did in I88822667693d9e00ac3d4639c87bc24e5083e5e8. These tests were then moved into a new subdirectory under phpunit/ and organized into a separate test suite. The environment for this suite is set up via a PHPUnit bootstrap file without a custom entry point. You can execute these tests by running: $ vendor/bin/phpunit -d memory_limit=512M -c tests/phpunit/unit-tests.xml Bug: T89432 Bug: T87781 Bug: T84948 Change-Id: Iad01033a0548afd4d2a6f2c1ef6fcc9debf72c0d
* Use ::class to resolve class names in testsUmherirrender2018-01-261-1/+1
| | | | | | | This helps to find renamed or misspelled classes earlier. Phan will check the class names Change-Id: Ie541a7baae10ab6f5c13f95ac2ff6598b8f8950c
* Do not strip Content-Type header for POST requests to swiftCormac Parle2017-11-281-0/+65
| | | | | | | | | | | | libcurl adds 'Content-Type: application/x-www-form-urlencoded' to a POST request if the 'Content-Type' header is not set manually. Because data in swift is updated via POST, the Content-Type header must be set explicitly to stop a run of refreshFileHeaders.php from changing the Content-Type of all files in swift to application/x-www-form-urlencoded Bug: T178849 Change-Id: I43c21bc1b73e37104cf07cd5f1c1557f472b9898
* Switch to librarized version of TestingAccessWrapperGergő Tisza2017-04-201-0/+2
| | | | | | | | | | | | | | | 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
* Fix @covers for FileBackendTim Starling2017-02-271-4/+5
| | | | | | | | | | | | | It's up to the developer to choose the level of granularity they are aspiring for in their test coverage. But that granularity level should be reflected in @covers. When you have hundreds of lines of code testing a single-line function (FileBackend::doOperation), that's a good hint that something went wrong. FileBackendTest is 2700 lines of code and appears to be aiming to test the whole filebackend module. So I adjusted @covers to reflect that. Change-Id: Iacd8cf475d1761c3b32c739983343619a9509d6b
* Add missing namespace to @covers commentsTimo Tijhof2016-02-231-4/+4
| | | | | | | | | | | | | | | | | | | PHP_CodeCoverage_Exception: > Trying to @cover not existing method "SwiftFileBackend::sanitzeHdrs". > Trying to @cover not existing method "LineFormatter::normalizeException". > Trying to @cover not existing method "MonologSpi::mergeConfig". > Trying to @cover not existing method "ProcessCacheLRU::het". > Trying to @cover not existing method "BitmapHandler::swapICCProfile". > Trying to @cover not existing class or interface "checkParseSafety". > Trying to @cover not existing method "Article::__call". (was removed). > Trying to @cover not existing method "ExtensionProcessor::extracttExtensionMessagesFiles". > Trying to @cover not existing method "FileContentsHasher::getFileContentHash". Makes code coverage run fail at the moment. These used to be warnings in PHPUnit 3.x, but are now hard exceptions in PHPUnit 4.x when requesting a coverage report. Change-Id: If7f45ca57fd7d480d35b1414a889398837c0c472
* Convert all array() syntax to []Kunal Mehta2016-02-171-39/+39
| | | | | | | | | | 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
* Remove excess newlines at the end of filesRicordisamoa2015-09-271-1/+0
| | | | | | Many of them added with commit 776c865077ea38ca1f9205ad778a600b41332d60 Change-Id: I481b15c45ead1f5f482e120cb40ea8f3297543cf
* Fixed spacingumherirrender2015-09-261-1/+1
| | | | | | | | | | - 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
* Re-enable Generic.Files.EndFileNewline.NotFoundReedy2015-09-261-1/+2
| | | | Change-Id: Ib84ce8dc973f7e3fe688435a72f7936342b6f2dd
* Cleaned up and split up Swift header parsing methods a bitAaron Schulz2015-08-051-3/+60
| | | | | | * Added tests for the metadata headers portion of the code Change-Id: I8ac65e31212b4cca4592f963e0ca5ad30e1349f7
* Added sanitizeHdrs() tests for SwiftAaron Schulz2015-07-291-0/+91
Change-Id: I2e3c3225c729e5220ca16f6ef4518da49e7f721c