User:Daniel Kinzler (WMDE)/MCR-StorageLayerTesting

Patches to be tested

 * PageUpdater: https://gerrit.wikimedia.org/r/c/mediawiki/core/+/405015
 * RevisionStore: https://gerrit.wikimedia.org/r/c/mediawiki/core/+/416465 (which needs https://gerrit.wikimedia.org/r/c/mediawiki/core/+/406595)

On the mcr-full VM, there is now a branch called McrStorageLayerTest that has these patches applied. We probably want that branch on gerrit, too, so it can be deployed on testwiki.

PageUpdater test plan

 * edit page:
 * page creation works, updates link tables, updates page count
 * page editing works, updates link tables, updates page count
 * undoing an edit sets the undid ID
 * minor edit sets the flag
 * test bot edit sets the RC flag
 * edit conflict is automerged when possible
 * edit conflict GUI works when automerge not possible
 * null edit works (how? use, see https://dev-mcr-full.wmflabs.org/wiki/Time.  expires after one hour)
 * edit stash works (how? perhaps using the debug log, there is a StashEdit channel) (cache hit + cache miss, caching of AF + spam blacklist check)
 * file upload:
 * new file
 * existing file
 * rollback
 * page move: null revision in moved page
 * undelete
 * full page
 * revisions of an existing page
 * changing content model works (wikitext to JS and back)
 * importing a revision works, updates page count
 * double redirect fixer: run fixDoubleRedirects.php --async --title
 * installer: main page is created
 * AbuseFilter: test added link filter, test AF log
 * ConfirmEdit: test added link captcha
 * Echo: test reverted notification
 * Flow: converted user talk page to use Flow, verify new revision saying it has been converted, verify user does not get new message notice
 * NewUserMessage: test welcome message
 * TemplateData: save page with valid and invalid TD transcluded
 * Translate: set wgTranslateUsePreSaveTransform to false, test there is no PST when messages are saved

Daniel will do

 * edit page:
 * page creation works, updates link tables, updates page count
 * page editing works, updates link tables, updates page count
 * undoing an edit sets the undid ID
 * minor edit sets the flag
 * test bot edit sets the RC flag
 * edit conflict is automerged when possible
 * edit conflict GUI works when automerge not possible
 * null edit works (how? use, see https://dev-mcr-full.wmflabs.org/wiki/Time.  expires after one hour) ✅
 * edit stash works (how? perhaps using the debug log, there is a StashEdit channel) (cache hit + cache miss, caching of AF + spam blacklist check)

WikiPage::doEditContent
usage: also Wikibase, BlueSpiceFoundation, SocialProfile, SemanticMediaWiki, LiquidThreads, CentralNotice, SecurePoll, JADE, FlaggedRevs, PeriodicRelatedChanges, PageForms, PageSchemas, DynamicPageList, EtherEditor, FanBoxes, FileImporter, FirstSteps, Athena, BlueSpiceGroupManager, Form, GWToolset, BlueSpiceSMWConnector, HAWelcome, ImageRating, Babel, LinkFilter, CheckUser, MOOC, MassEditRegex, CloneDiff, MsUpload, NotebookViewer, AutoCreateCategoryPages, OfflineImportLexicon, OpenStackManager, OracleTextSearch, CollaborationKit, CommentStreams, Patroller, PhabTaskGraph, PollNY, PrivateDomains, ReplaceText, ConfirmAccount, SemanticImageAnnotator, SpamBlacklist, SpamDiffTool, CreateUserPage, TranslateSvg, UploadWizard, Video, VisualEditor, WikiLexicalData, DataTransfer, WikimediaMaintenance, ZeroPortal, BlogPage, Lud, Nimiarkisto, Sanat, WordNet, BlueSpiceChecklist, CreateWiki
 * EditPage (variations: undo, create vs. update, minor edit, bot edit, conflict, null, stash)
 * LocalFile: upload when description page does not exist
 * Installer: main page creation
 * DoubleRedirectJob
 * WikiPage::commitRollback
 * SpecialChangeContentModel
 * Translate: lots of different uses
 * Flow: lots of different uses
 * MassMessage
 * NewUserMessage

WikiPage::doEditUpdates
usage: also Duplicator, MsUpload, Wikibase, Termbank
 * MovePage: add redirect revision to old page, null revision to new page
 * ImportableOldRevisionImporter
 * PageArchive

WikiPage::prepareContentForEdit
usage: also: SemanticMediaWiki, AkismetKlikApprovedRevs, BlueSpicePageAccess, FlaggedRevs
 * ApiStashEdit stash a content with cache miss
 * WikiImporter stats update after import
 * AbuseFilter: : get tracking info + parsed HTML for the edit
 * ConfirmEdit: trigger early parse for link check
 * SpamBlacklist: trigger early parse in EditFilterMergedContent for link check
 * TemplateData: trigger early parse in PageContentSave for syntax check

(as above) usage: Flow, LiquidThreads
 * Flow: prevent new message notification when the edit is done by the Flow system user (?)

(called in DerivedPageDataUpdater::doUpdates, which is called in WikiPage::doEditContent and WikiPage::doEditUpdates) usage: ApprovedRevs, FlaggedRevs

(as above) usage: CheckUser, Premoderation
 * CheckUser: every 50th edit, prune the checkuser changes table

(called in DerivedPageDataUpdater::prepareContent, which is called in WikiPage::doEditContent and WikiPage::prepareContentForEdit) usage: Translate
 * Translate: disable PST when wgTranslateUsePreSaveTransform is unset and the page is a non-qqq message

(called in PageUpdater::doCreate/doModify, which is called in WikiPage::doEditContent) usage: SemanticMediaWiki, SummaryCards, FlaggedRevs, PageTriage, PubSubHubbub, DataTable2, EducationProgram, SemanticInterlanguageLinks, Transliterator, Wikibase, TimedMediaHandler, SemanticBundle, SocialProfile

(called in PageUpdater::doCreate, which is called in WikiPage::doEditContent) usage: CirrusSearch, EventBus, Gadgets, GlobalUserPage, EditNotify, PageCreationNotif, PageTriage, SharedHelpPages, TweetANew, IndexFunction, TitleKey, MiniInvite
 * EventBus: forward events to the bus

(called in PageUpdater::saveRevision, which is called in WikiPage::doEditContent) usage: Translate, BlogPage, BlueSpiceEditNotifyConnector, TemplateData, AutoCategoriseUploads, EditNotify, reCaptcha, GraphViz, Lingo, MOOC, PageForms, Checkpoint, PureWikiDeletion, SemanticTasks, BlueSpicePageAccess, Premoderation, BlueSpiceEmoticons, BlueSpiceAuthors, WikiCategoryTagCloud, Awesomeness
 * Translate: syntax check
 * TemplateData: triggers early parse to validate templatedata

(as above) usage: Translate, BlueSpiceFoundation, Cognate, Cargo, ConfirmEdit, ApprovedRevs, AbuseFilter, BlogPage, WikimediaEvents, UploadWizard, PeriodicRelatedChanges, TitleBlacklist, SemanticMediaWiki, TheWikipediaLibrary, BlueSpicePageAssignments, BlueSpiceSMWConnector, SpamBlacklist, Athena, ProofreadPage, AutoCreateCategoryPages, Contributors, Drafts, Echo, EditSimilar, EditcountAdditions, EducationProgram, EtherEditor, EventBus, FlaggedRevs, Gadgets, HAWelcome, JsonConfig, LiquidThreads, LiveTranslate, MathSearch, MiniInvite, PageTriage, BlueSpiceExtendedSearch, OfflineImportLexicon, PureWikiDeletion, SemanticTasks, BlueSpiceSmartList, BlueSpiceSaferEdit, TweetANew, BlueSpiceArticleInfo, FeaturedFeeds
 * Translate:
 * all kinds of data updates on message edit (fuzzy, transaltion stats), update translated page
 * tag page (via Translate's custom revision tagging mechanism) as ready for translation
 * ConfirmEdit: clear cache when updating MediaWiki:Captcha-ip-whitelist
 * AbuseFilter: record AF variables into the AF log
 * TitleBlacklist: clear cache when editing MediaWiki:Titleblacklist
 * SpamBlacklist: clear cache when editing blacklist
 * Echo: trigger some notifications (reverted, 10^n edit)
 * EventBus: send null edit notifications to the bus

usage:
 * AbuseFilter: cache AF check results when stashing the edit?
 * SpamBlacklist: cache spam filter check

(used to be called on edits, not used in the current version of the patch) usage: EventBus, Translate, WikimediaEvents, HAWelcome
 * EventBus: send revision-create events to the bus
 * Translate: forces updates on null revisions. (nb. needs extra query to detect a null revision, probably could be handled better)

mcr-full deployed extensions

 * AbuseFilter
 * AntiSpoof
 * Babel
 * BetaFeatures
 * CentralAuth
 * Cite
 * Citoid
 * cldr
 * CodeEditor
 * ConfirmEdit
 * Echo
 * EventBus
 * EventLogging
 * Flow
 * GeoData
 * GlobalCssJs
 * GlobalUsage
 * MobileFrontend
 * NewUserMessage
 * PageImages
 * ParserFunctions
 * README
 * Renameuser
 * Scribunto
 * SpamBlacklist
 * SyntaxHighlight_GeSHi
 * TemplateData
 * TemplateSandbox
 * TextExtracts
 * Thanks
 * TitleBlacklist
 * Translate
 * UniversalLanguageSelector
 * UserMerge
 * VisualEditor
 * WikiEditor
 * WikiLove

WMF deployed extensions

 * 3D
 * AbuseFilter
 * AdvancedSearch
 * AntiSpoof
 * ApiFeatureUsage
 * ArticleCreationWorkflow
 * ArticlePlaceholder
 * Babel
 * BetaFeatures
 * BounceHandler
 * Calendar
 * Campaigns
 * Capiunto
 * CategoryTree
 * CentralAuth
 * CentralNotice
 * CharInsert
 * CheckUser
 * CirrusSearch
 * Cite
 * CiteThisPage
 * Citoid
 * cldr
 * CodeEditor
 * CodeMirror
 * CodeReview
 * Cognate
 * CollaborationKit
 * Collection
 * CommonsMetadata
 * ConfirmEdit
 * ConfirmEdit/FancyCaptcha
 * CongressLookup
 * ContactPage
 * ContentTranslation
 * ContributionTracking
 * CreditsSource
 * Dashiki
 * DisableAccount
 * Disambiguator
 * DismissableSiteNotice
 * DonationInterface
 * DoubleWiki
 * DynamicSidebar
 * Echo
 * EducationProgram
 * Elastica
 * ElectronPdfService
 * EventBus
 * EventLogging
 * ExtensionDistributor
 * FeaturedFeeds
 * FileExporter
 * FileImporter
 * FlaggedRevs
 * Flow
 * FundraiserLandingPage
 * FundraisingTranslateWorkflow
 * Gadgets
 * GeoCrumbs
 * GeoData
 * GettingStarted
 * GlobalBlocking
 * GlobalCssJs
 * GlobalPreferences
 * GlobalUsage
 * GlobalUserPage
 * GoogleNewsSitemap
 * Graph
 * GuidedTour
 * GWToolset
 * ImageMap
 * InputBox
 * Insider
 * intersection
 * Interwiki
 * InterwikiSorting
 * JADE
 * Josa
 * JsonConfig
 * Kartographer
 * LabeledSectionTransclusion
 * LandingCheck
 * LdapAuthentication
 * Linter
 * LiquidThreads
 * Listings
 * LocalisationUpdate
 * LoginNotify
 * MapSources
 * MassMessage
 * Math
 * MobileApp
 * MobileFrontend
 * MultimediaViewer
 * MwEmbedSupport
 * NavigationTiming
 * Newsletter
 * NewUserMessage
 * Nuke
 * OATHAuth
 * OAuth
 * ORES
 * OpenStackManager
 * PageAssessments
 * PagedTiffHandler
 * PageImages
 * PageTriage
 * PageViewInfo
 * ParserFunctions
 * ParserMigration
 * ParsoidBatchAPI
 * PdfHandler
 * PerformanceInspector
 * Petition
 * Poem
 * Popups
 * ProofreadPage
 * PropertySuggester
 * PoolCounter
 * QuickSurveys
 * Quiz
 * ReadingLists
 * RelatedArticles
 * RelatedSites
 * Renameuser
 * RevisionSlider
 * RSS
 * SandboxLink
 * Score
 * Scribunto
 * SearchExtraNS
 * SecurePoll
 * Sentry
 * ShortUrl
 * SiteMatrix
 * SpamBlacklist
 * SubPageList3
 * SubpageSortkey
 * SyntaxHighlight_GeSHi
 * TemplateData
 * TemplateSandbox
 * TemplateStyles
 * TextExtracts
 * Thanks
 * TimedMediaHandler
 * timeline
 * TitleBlacklist
 * TocTree
 * TorBlock
 * Translate
 * TranslationNotifications
 * TrustedXFF
 * TwoColConflict
 * UniversalLanguageSelector
 * UploadsLink
 * UploadWizard
 * UrlShortener
 * UserMerge
 * VipsScaler
 * VisualEditor
 * Wikibase/client/WikibaseClient.php
 * Wikibase/repo/Wikibase.php
 * WikibaseLexeme
 * WikibaseQuality
 * WikibaseQualityConstraints
 * Wikidata.org
 * WikidataPageBanner
 * WikiEditor
 * wikihiero
 * WikiLove
 * WikimediaBadges
 * WikimediaEvents
 * WikimediaIncubator
 * WikimediaMessages
 * XAnalytics
 * ZeroBanner
 * ZeroPortal