Ppchelko has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/352553 )

Change subject: Include reverts from bots
......................................................................


Include reverts from bots

Reverts from bots e.g. ClueBot are important for detecting
vandalism. Include any reverts that bots make in counts for reverts
and bytes changed but not total edits.

Bug: T164558
Change-Id: I0b84803b474244214a2fabfff18a36575d8d748d
---
M lib/EventProcessor.js
M test/features/lib/EventProcessor.js
2 files changed, 36 insertions(+), 15 deletions(-)

Approvals:
  Ppchelko: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/EventProcessor.js b/lib/EventProcessor.js
index 5634d5f..2565920 100644
--- a/lib/EventProcessor.js
+++ b/lib/EventProcessor.js
@@ -88,6 +88,7 @@
         var username = performer.user_text;
         var topic = edit.meta.topic;
         const pages = this.pages;
+        const isBot = performer.user_is_bot;
 
         // ignore the event if it isn't related to enwiki
         if (!/^en\.wikipedia\./.test(edit.meta.domain)) {
@@ -104,16 +105,14 @@
             page.edits -= 1;
             return true;
         } else if (topic === 'mediawiki.revision-create' && 
!edit.page_is_redirect &&
-                !performer.user_is_bot && edit.page_namespace === 0) {
+                edit.page_namespace === 0) {
             if (pages.has(id)) {
                 page = pages.get(id);
-                page.edits++;
-                page.updated = ts;
             } else {
                 page = {
                     id: id,
                     isNew: edit.rev_parent_id === undefined,
-                    edits: 1,
+                    edits: 0,
                     from: ts,
                     updated: ts,
                     rev_len: edit.rev_len,
@@ -129,22 +128,31 @@
                     domain: edit.meta.domain
                 };
             }
-            contributors = page.contributors;
-            if (isAnon) {
-                page.anonEdits += 1;
+            var bytesChanged = edit.rev_len - page.rev_len;
+            if (!isBot) {
+                page.edits++;
+                page.updated = ts;
+                page.bytes = bytesChanged;
+
+                contributors = page.contributors;
+                if (isAnon) {
+                    page.anonEdits += 1;
+                    if (!contributors.names[username]) {
+                        contributors.anons++;
+                    }
+                }
                 if (!contributors.names[username]) {
-                    contributors.anons++;
+                    contributors.total++;
+                    contributors.names[username] = 1;
+                } else {
+                    contributors.names[username]++;
                 }
             }
-            if (!contributors.names[username]) {
-                contributors.total++;
-                contributors.names[username] = 1;
-            } else {
-                contributors.names[username]++;
-            }
-            page.bytes = edit.rev_len - page.rev_len;
             if (isRevert(edit)) {
                 page.reverts++;
+                if (isBot) {
+                    page.bytes = bytesChanged;
+                }
             }
             // update
             pages.set(id, page);
diff --git a/test/features/lib/EventProcessor.js 
b/test/features/lib/EventProcessor.js
index b01462f..04298b3 100644
--- a/test/features/lib/EventProcessor.js
+++ b/test/features/lib/EventProcessor.js
@@ -83,6 +83,19 @@
             'from is timestamp of first recorded edit' );
     });
 
+    it('check reverts from bots are included in data collation', function() {
+        var processor = new EventProcessor({});
+        processor.process( edit( 1, 'Nice', '2016-11-15T18:00:55+00:00', 0, 
false, { rev_len: 20 } ) );
+        processor.process( edit( 1, 'Vandal', '2016-11-15T18:00:55+00:00', 0, 
false, { rev_len: 30 } ) );
+        processor.process( edit( 1, 'Bot', '2016-11-15T18:03:55+00:00', 0, 
true,
+            { rev_len: 20, comment: 'Reverting 1 edit'} ) );
+        var pages = processor.getPages();
+        assert.ok( pages.length === 1, 'Pages with same name are combined into 
single page' );
+        assert.ok( pages[0].edits === 2, 'Edits are counted for all non-bot 
edits' );
+        assert.ok( pages[0].bytes === 0, 'Bytes calculation include reverts 
from bots' );
+        assert.ok( pages[0].reverts === 1, 'Revert is included' );
+    });
+
     it('check processing of contributors', function() {
         var processor = new EventProcessor({});
         processor.process( edit( 1, 'Jon', '2016-11-15T18:00:55+00:00' ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/352553
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I0b84803b474244214a2fabfff18a36575d8d748d
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/services/trending-edits
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson <[email protected]>
Gerrit-Reviewer: BearND <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: Fjalapeno <[email protected]>
Gerrit-Reviewer: Jdlrobson <[email protected]>
Gerrit-Reviewer: Mobrovac <[email protected]>
Gerrit-Reviewer: Ppchelko <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to