summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/command/background/ajax.php33
-rw-r--r--core/command/background/base.php77
-rw-r--r--core/command/background/cron.php33
-rw-r--r--core/command/background/webcron.php33
-rw-r--r--core/register_command.php3
-rw-r--r--tests/lib/command/background.php58
6 files changed, 237 insertions, 0 deletions
diff --git a/core/command/background/ajax.php b/core/command/background/ajax.php
new file mode 100644
index 00000000000..e9cd1405ebd
--- /dev/null
+++ b/core/command/background/ajax.php
@@ -0,0 +1,33 @@
+<?php
+/**
+* The MIT License (MIT)
+*
+* Copyright (c) 2015 Christian Kampka <christian@kampka.net>
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+* THE SOFTWARE.
+*/
+
+namespace OC\Core\Command\Background;
+
+class Ajax extends Base {
+
+ protected function getMode() {
+ return 'ajax';
+ }
+}
diff --git a/core/command/background/base.php b/core/command/background/base.php
new file mode 100644
index 00000000000..48fee818d0a
--- /dev/null
+++ b/core/command/background/base.php
@@ -0,0 +1,77 @@
+<?php
+/**
+* The MIT License (MIT)
+*
+* Copyright (c) 2015 Christian Kampka <christian@kampka.net>
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+* THE SOFTWARE.
+*/
+
+namespace OC\Core\Command\Background;
+
+use \OCP\IConfig;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+* An abstract base class for configuring the background job mode
+* from the command line interface.
+* Subclasses will override the getMode() function to specify the mode to configure.
+*/
+abstract class Base extends Command {
+
+
+ abstract protected function getMode();
+
+ /**
+ * @var \OCP\IConfig
+ */
+ protected $config;
+
+ /**
+ * @param \OCP\IConfig $config
+ */
+ public function __construct(IConfig $config) {
+ $this->config = $config;
+ parent::__construct();
+ }
+
+ protected function configure() {
+ $mode = $this->getMode();
+ $this
+ ->setName("background:$mode")
+ ->setDescription("Use $mode to run background jobs");
+ }
+
+ /**
+ * Executing this command will set the background job mode for owncloud.
+ * The mode to set is specified by the concrete sub class by implementing the
+ * getMode() function.
+ *
+ * @param InputInterface $input
+ * @param OutputInterface $output
+ */
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ $mode = $this->getMode();
+ $this->config->setAppValue( 'core', 'backgroundjobs_mode', $mode );
+ $output->writeln("Set mode for background jobs to '$mode'");
+ }
+}
diff --git a/core/command/background/cron.php b/core/command/background/cron.php
new file mode 100644
index 00000000000..434e88893b2
--- /dev/null
+++ b/core/command/background/cron.php
@@ -0,0 +1,33 @@
+<?php
+/**
+* The MIT License (MIT)
+*
+* Copyright (c) 2015 Christian Kampka <christian@kampka.net>
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+* THE SOFTWARE.
+*/
+
+namespace OC\Core\Command\Background;
+
+class Cron extends Base {
+
+ protected function getMode() {
+ return 'cron';
+ }
+}
diff --git a/core/command/background/webcron.php b/core/command/background/webcron.php
new file mode 100644
index 00000000000..23dbe98e635
--- /dev/null
+++ b/core/command/background/webcron.php
@@ -0,0 +1,33 @@
+<?php
+/**
+* The MIT License (MIT)
+*
+* Copyright (c) 2015 Christian Kampka <christian@kampka.net>
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+* THE SOFTWARE.
+*/
+
+namespace OC\Core\Command\Background;
+
+class WebCron extends Base {
+
+ protected function getMode() {
+ return 'webcron';
+ }
+}
diff --git a/core/register_command.php b/core/register_command.php
index bcff56b8aa7..2328bc7685f 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -27,6 +27,9 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
$application->add(new OC\Core\Command\User\LastSeen());
$application->add(new OC\Core\Command\User\Delete(\OC::$server->getUserManager()));
$application->add(new OC\Core\Command\L10n\CreateJs());
+ $application->add(new OC\Core\Command\Background\Cron(\OC::$server->getConfig()));
+ $application->add(new OC\Core\Command\Background\WebCron(\OC::$server->getConfig()));
+ $application->add(new OC\Core\Command\Background\Ajax(\OC::$server->getConfig()));
} else {
$application->add(new OC\Core\Command\Maintenance\Install(\OC::$server->getConfig()));
}
diff --git a/tests/lib/command/background.php b/tests/lib/command/background.php
new file mode 100644
index 00000000000..7e992480530
--- /dev/null
+++ b/tests/lib/command/background.php
@@ -0,0 +1,58 @@
+<?php
+/**
+* The MIT License (MIT)
+*
+* Copyright (c) 2015 Christian Kampka <christian@kampka.net>
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+* THE SOFTWARE.
+*/
+
+namespace Test\Command;
+
+use Test\TestCase;
+use Symfony\Component\Console\Input\StringInput;
+use Symfony\Component\Console\Output\NullOutput;
+
+use OC\Core\Command\Background\Cron;
+use OC\Core\Command\Background\WebCron;
+use OC\Core\Command\Background\Ajax;
+
+class BackgroundJobs extends TestCase {
+
+ public function testCronCommand() {
+ $config = \OC::$server->getConfig();
+ $job = new Cron($config);
+ $job->run(new StringInput(''), new NullOutput());
+ $this->assertEquals('cron', $config->getAppValue('core', 'backgroundjobs_mode'));
+ }
+
+ public function testAjaxCommand() {
+ $config = \OC::$server->getConfig();
+ $job = new Ajax($config);
+ $job->run(new StringInput(''), new NullOutput());
+ $this->assertEquals('ajax', $config->getAppValue('core', 'backgroundjobs_mode'));
+ }
+
+ public function testWebCronCommand() {
+ $config = \OC::$server->getConfig();
+ $job = new WebCron($config);
+ $job->run(new StringInput(''), new NullOutput());
+ $this->assertEquals('webcron', $config->getAppValue('core', 'backgroundjobs_mode'));
+ }
+}