Gergő Tisza has uploaded a new change for review. https://gerrit.wikimedia.org/r/133766
Change subject: Add sampling to unsampled event logging ...................................................................... Add sampling to unsampled event logging Has issues: - needs dependency injection - needs to be DRY - should not load mw.eventLogging when we are not in sample Due to urgency this will be fixed in another commit. Change-Id: I0df067a619109a7c945f82c8d33fa2e621217f0b Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/619 --- M MultimediaViewer.php M MultimediaViewerHooks.php M resources/mmv/mmv.DurationLogger.js M resources/mmv/mmv.logger.js M tests/qunit/mmv/mmv.DurationLogger.test.js 5 files changed, 38 insertions(+), 4 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MultimediaViewer refs/changes/66/133766/1 diff --git a/MultimediaViewer.php b/MultimediaViewer.php index 6952143..a1f9f3c 100644 --- a/MultimediaViewer.php +++ b/MultimediaViewer.php @@ -25,6 +25,17 @@ $wgNetworkPerformanceSamplingFactor = false; } +if ( !isset( $wgMediaViewerSamplingFactor ) ) { + /** + * If set, records user activity and loading times. A value of 1000 means there will be an + * 1:1000 chance to enable logging on page load; for that page, either all or none of the + * events will be logged. + * False if unset. + * @var int|bool + */ + $wgMediaViewerSamplingFactor = false; +} + if ( !isset( $wgMediaViewerIsInBeta ) ) { /** @var bool: If set, Media Viewer will try to use BetaFeatures. False if unset. **/ $wgMediaViewerIsInBeta = false; diff --git a/MultimediaViewerHooks.php b/MultimediaViewerHooks.php index a19b954..7227421 100644 --- a/MultimediaViewerHooks.php +++ b/MultimediaViewerHooks.php @@ -144,8 +144,8 @@ * @return bool */ public static function resourceLoaderGetConfigVars( &$vars ) { - global $wgAPIPropModules, $wgNetworkPerformanceSamplingFactor, $wgMediaViewerIsInBeta, - $wgMediaViewerUseThumbnailGuessing, $wgMediaViewerShowSurvey; + global $wgAPIPropModules, $wgNetworkPerformanceSamplingFactor, $wgMediaViewerSamplingFactor, + $wgMediaViewerIsInBeta, $wgMediaViewerUseThumbnailGuessing, $wgMediaViewerShowSurvey; $vars['wgMultimediaViewer'] = array( 'infoLink' => self::$infoLink, 'discussionLink' => self::$discussionLink, @@ -153,6 +153,7 @@ 'globalUsageAvailable' => isset( $wgAPIPropModules['globalusage'] ), 'useThumbnailGuessing' => (bool)$wgMediaViewerUseThumbnailGuessing, 'showSurvey' => (bool)$wgMediaViewerShowSurvey, + 'samplingFactor' => $wgMediaViewerSamplingFactor, ); $vars['wgNetworkPerformanceSamplingFactor'] = $wgNetworkPerformanceSamplingFactor; $vars['wgMediaViewer'] = true; diff --git a/resources/mmv/mmv.DurationLogger.js b/resources/mmv/mmv.DurationLogger.js index 5a75abe..0905ad5 100644 --- a/resources/mmv/mmv.DurationLogger.js +++ b/resources/mmv/mmv.DurationLogger.js @@ -98,7 +98,10 @@ e.country = self.Geo.country; } - self.eventLog.logEvent( self.schema, e ); + if ( self.isInSample() ) { + self.eventLog.logEvent( self.schema, e ); + } + mw.log( message ); } ); } @@ -138,5 +141,14 @@ return waitForEventLog; }; + L.isInSample = function () { + var factor = mw.config.get( 'wgMultimediaViewer' ).samplingFactor; + + if ( !$.isNumeric( factor ) || factor < 1 ) { + return false; + } + return Math.floor( Math.random() * factor ) === 0; + }; + mw.mmv.durationLogger = new DurationLogger(); }( mediaWiki, jQuery ) ); \ No newline at end of file diff --git a/resources/mmv/mmv.logger.js b/resources/mmv/mmv.logger.js index 4a9d18a..2f12138 100644 --- a/resources/mmv/mmv.logger.js +++ b/resources/mmv/mmv.logger.js @@ -75,7 +75,7 @@ mw.log( translatedAction ); - if ( mw.eventLog && !skipEventLog ) { + if ( mw.eventLog && !skipEventLog && this.isInSample() ) { return mw.eventLog.logEvent( 'MediaViewer', { version: '1.1', action: action @@ -85,5 +85,14 @@ return $.Deferred().resolve(); }; + L.isInSample = function () { + var factor = mw.config.get( 'wgMultimediaViewer' ).samplingFactor; + + if ( !$.isNumeric( factor ) || factor < 1 ) { + return false; + } + return Math.floor( Math.random() * factor ) === 0; + }; + mw.mmv.logger = new Logger(); }( mediaWiki, jQuery ) ); diff --git a/tests/qunit/mmv/mmv.DurationLogger.test.js b/tests/qunit/mmv/mmv.DurationLogger.test.js index 629f57a..41e3ca1 100755 --- a/tests/qunit/mmv/mmv.DurationLogger.test.js +++ b/tests/qunit/mmv/mmv.DurationLogger.test.js @@ -2,6 +2,7 @@ QUnit.module( 'mmv.DurationLogger', QUnit.newMwEnvironment({ setup: function () { this.clock = this.sandbox.useFakeTimers(); + mw.config.get( 'wgMultimediaViewer' ).samplingFactor = 1; } } ) ); -- To view, visit https://gerrit.wikimedia.org/r/133766 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0df067a619109a7c945f82c8d33fa2e621217f0b Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/MultimediaViewer Gerrit-Branch: master Gerrit-Owner: Gergő Tisza <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
