summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Hesketh <josh@nitrotech.org>2014-01-16 19:19:34 +1100
committerJoshua Hesketh <josh@nitrotech.org>2014-01-20 11:27:39 +1100
commite095c8cf1c788ed7c5af1d3073bbf955b78f1b39 (patch)
treec834b288b3a267a8c2cb6f97bdda89235a16acac
parent9177876e16ed5d8963b029271342c539d634daac (diff)
downloadturbo-hipster-e095c8cf1c788ed7c5af1d3073bbf955b78f1b39.tar.gz
Add tests for task_step
Change-Id: I9f7ec4633e91264b6821ae3edb3a021e8843553d
-rw-r--r--tests/fakes.py8
-rw-r--r--tests/test_common.py58
2 files changed, 66 insertions, 0 deletions
diff --git a/tests/fakes.py b/tests/fakes.py
index a4b3b60..07bac13 100644
--- a/tests/fakes.py
+++ b/tests/fakes.py
@@ -299,3 +299,11 @@ class FakeGearmanServer(gear.Server):
qlen = (len(self.high_queue) + len(self.normal_queue) +
len(self.low_queue))
self.log.debug("done releasing queued jobs %s (%s)" % (regex, qlen))
+
+
+class FakeJob(object):
+ def __init__(self):
+ pass
+
+ def sendWorkStatus(self, *args, **kwargs):
+ pass
diff --git a/tests/test_common.py b/tests/test_common.py
new file mode 100644
index 0000000..796257c
--- /dev/null
+++ b/tests/test_common.py
@@ -0,0 +1,58 @@
+#!/usr/bin/python2
+#
+# Copyright 2014 Rackspace Australia
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import testtools
+
+import fakes
+
+from turbo_hipster.lib import common
+from turbo_hipster.lib import models
+
+
+class TestTaskStep(testtools.TestCase):
+ def test_task_step_decorator(self):
+ class FakeTask(models.Task):
+ def __init__(self, global_config, plugin_config, job_name):
+ super(FakeTask, self).__init__(global_config, plugin_config,
+ job_name)
+ # Define the number of steps we will do to determine our
+ # progress.
+ self.total_steps = 2
+
+ @common.task_step
+ def do_something(self):
+ pass
+
+ def non_step(self):
+ pass
+
+ @common.task_step
+ def do_something_more(self):
+ pass
+
+ task = FakeTask({}, {}, 'job_name')
+ task.job = fakes.FakeJob()
+
+ self.assertEqual(0, task.current_step)
+
+ task.do_something()
+ self.assertEqual(1, task.current_step)
+
+ task.non_step()
+ self.assertEqual(1, task.current_step)
+
+ task.do_something_more()
+ self.assertEqual(2, task.current_step)