Manybubbles has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/115193

Change subject: Setup jenkins configuration
......................................................................

Setup jenkins configuration

Change-Id: I8ab4ae49fba1e71aa13c151559347e065f47a2c7
---
M CirrusSearch.php
A tests/jenkins/Jenkins.php
A tests/jenkins/cleanSetup.php
3 files changed, 140 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CirrusSearch 
refs/changes/93/115193/1

diff --git a/CirrusSearch.php b/CirrusSearch.php
index e39d162..755c773 100644
--- a/CirrusSearch.php
+++ b/CirrusSearch.php
@@ -254,6 +254,7 @@
 $wgAutoloadClasses['CirrusSearch\Connection'] = $includes . 'Connection.php';
 $wgAutoloadClasses['CirrusSearch\DeletePagesJob'] = $includes . 
'DeletePagesJob.php';
 $wgAutoloadClasses['CirrusSearch\ElasticsearchIntermediary'] = $includes . 
'ElasticsearchIntermediary.php';
+$wgAutoloadClasses['CirrusSearch\ForceSearchIndex'] = __DIR__ . 
'/maintenance/forceSearchIndex.php';
 $wgAutoloadClasses['CirrusSearch\Hooks'] = $includes . 'Hooks.php';
 $wgAutoloadClasses['CirrusSearch\LinksUpdateJob'] = $includes . 
'LinksUpdateJob.php';
 $wgAutoloadClasses['CirrusSearch\LinksUpdateSecondaryJob'] = $includes . 
'LinksUpdateSecondaryJob.php';
@@ -305,3 +306,10 @@
 $wgJobClasses[ 'cirrusSearchLinksUpdateSecondary' ] = 
'CirrusSearch\LinksUpdateSecondaryJob';
 $wgJobClasses[ 'cirrusSearchMassIndex' ] = 'CirrusSearch\MassIndexJob';
 $wgJobClasses[ 'cirrusSearchOtherIndex' ] = 'CirrusSearch\OtherIndexJob';
+
+/**
+ * Jenkins configuration required to get all the browser tests passing cleanly.
+ */
+if ( isset( $wgWikimediaJenkinsCI ) && $wgWikimediaJenkinsCI === true ) {
+       require( __DIR__ . '/tests/jenkins/Jenkins.php' );
+}
diff --git a/tests/jenkins/Jenkins.php b/tests/jenkins/Jenkins.php
new file mode 100644
index 0000000..96b432e
--- /dev/null
+++ b/tests/jenkins/Jenkins.php
@@ -0,0 +1,82 @@
+<?php
+namespace CirrusSearch\Jenkins;
+
+/**
+ * Sets up configuration required to run the browser tests on Jenkins.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+// All of this has to be done at setup time so it has the right globals.  No 
putting
+// it in a class or anything.
+
+// Configuration we have to override before installing Cirrus but only if 
we're using
+// Jenkins as a prototype for development.
+if ( !isset( $wgRedisPassword ) ) {
+       $wgRedisPassword = 'notsecure';
+}
+
+// Extra Cirrus stuff for Jenkins
+$wgAutoloadClasses[ 'CirrusSearch\Jenkins\CleanSetup' ] = __DIR__ . 
'/cleanSetup.php';
+$wgHooks[ 'LoadExtensionSchemaUpdates' ][] = 
'CirrusSearch\Jenkins\Jenkins::installCleanSetup';
+
+// Dependencies
+require( "$IP/extensions/Elastica/Elastica.php" );
+require( "$IP/extensions/MwEmbedSupport/MwEmbedSupport.php" );
+require( "$IP/extensions/TimedMediaHandler/TimedMediaHandler.php" );
+require( "$IP/extensions/PdfHandler/PdfHandler.php" );
+
+// Configuration
+$wgSearchType = 'CirrusSearch';
+$wgOggThumbLocation = '/usr/bin/oggThumb';
+$wgGroupPermissions[ '*' ][ 'deleterevision' ] = true;
+$wgFileExtensions[] = 'pdf';
+$wgCapitalLinks = false;
+$wgUseInstantCommons = true;
+$wgEnableUploads = true;
+$wgJobTypeConf['default'] = array(
+       'class' => 'JobQueueRedis',
+       'order' => 'fifo',
+       'redisServer' => 'localhost',
+       'checkDelay' => true, # The magic bit.
+       'redisConfig' => array(
+               'password' => $wgRedisPassword,
+       ),
+);
+$wgJobQueueAggregator = array(
+       'class'       => 'JobQueueAggregatorRedis',
+       'redisServer' => 'localhost',
+       'redisConfig' => array(
+               'password' => $wgRedisPassword,
+       ),
+);
+
+// Extra helpful configuration but not really required
+$wgShowExceptionDetails = true;
+$wgCirrusSearchShowScore = true;
+
+class Jenkins {
+       /**
+        * Installs a maintenance script the provides a clean Elasticsearch 
index for testing.
+        * @param DatabaseUpdater $updater database updater
+        * @return bool true so we let other extensions install more 
maintenance actions
+        */
+       public static function installCleanSetup( $updater ) {
+               print('foo');
+               $updater->addPostDatabaseUpdateMaintenance( 
'CirrusSearch\Jenkins\CleanSetup');
+               return true;
+       }
+}
diff --git a/tests/jenkins/cleanSetup.php b/tests/jenkins/cleanSetup.php
new file mode 100644
index 0000000..86b2cb0
--- /dev/null
+++ b/tests/jenkins/cleanSetup.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace CirrusSearch\Jenkins;
+use \Maintenance;
+
+/**
+ * Calls maintenance scripts properly to get an empty and configured index and
+ * anything else required for browser tests to pass.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+$IP = getenv( 'MW_INSTALL_PATH' );
+if( $IP === false ) {
+       $IP = __DIR__ . '/../../../..';
+}
+require_once( "$IP/maintenance/Maintenance.php" );
+
+class CleanSetup extends Maintenance {
+       public function execute() {
+               $child = $this->runChild( 
'CirrusSearch\UpdateSearchIndexConfig' );
+               $child->mOptions[ 'startOver' ] = true;
+               $child->execute();
+               $child = $this->runChild( 'CirrusSearch\ForceSearchIndex' );
+               $child->mOptions[ 'forceUpdate' ] = true;
+               $child->mOptions[ 'skipLinks' ] = true;
+               $child->mOptions[ 'indexOnSkip' ] = true;
+               $child->execute();
+               $child = $this->runChild( 'CirrusSearch\ForceSearchIndex' );
+               $child->mOptions[ 'forceUpdate' ] = true;
+               $child->mOptions[ 'skipParse' ] = true;
+               $child->execute();
+       }
+}
+
+$maintClass = "CirrusSearch\Jenkins\CleanSetup";
+require_once RUN_MAINTENANCE_IF_MAIN;

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8ab4ae49fba1e71aa13c151559347e065f47a2c7
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/CirrusSearch
Gerrit-Branch: master
Gerrit-Owner: Manybubbles <never...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to