blob: 11fc96093adf86066b34c83af724746d1faf6bb3 [file] [log] [blame]
Joshua Hesketh66f9f602013-08-14 11:28:10 +10001#!/usr/bin/python2
2#
3# Copyright 2013 Rackspace Australia
4#
5# Licensed under the Apache License, Version 2.0 (the "License"); you may
6# not use this file except in compliance with the License. You may obtain
7# a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14# License for the specific language governing permissions and limitations
15# under the License.
Joshua Heskethef72b8a2013-08-12 11:17:14 +100016
Joshua Heskethef72b8a2013-08-12 11:17:14 +100017
Joshua Hesketh66f9f602013-08-14 11:28:10 +100018import json
19import os
20import testtools
Joshua Hesketh0d9a8c02013-08-14 12:38:14 +100021import time
Joshua Heskethb9a7f742013-08-14 12:55:14 +100022from fakes import FakeGearmanManager, FakeGearmanServer,\
23 FakeRealDbUpgradeRunner
Joshua Heskethef72b8a2013-08-12 11:17:14 +100024
Joshua Hesketh66f9f602013-08-14 11:28:10 +100025CONFIG_DIR = os.path.join(os.path.dirname(__file__), 'etc')
26with open(os.path.join(CONFIG_DIR, 'config.json'), 'r') as config_stream:
27 CONFIG = json.load(config_stream)
Joshua Heskethef72b8a2013-08-12 11:17:14 +100028
Joshua Heskethef72b8a2013-08-12 11:17:14 +100029
Joshua Hesketh66f9f602013-08-14 11:28:10 +100030class TestGearmanManager(testtools.TestCase):
31 def setUp(self):
32 super(TestGearmanManager, self).setUp()
33 self.config = CONFIG
Joshua Hesketh66f9f602013-08-14 11:28:10 +100034 self.gearman_server = FakeGearmanServer(
35 self.config['zuul_server']['gearman_port'])
Joshua Hesketh0d9a8c02013-08-14 12:38:14 +100036 self.config['zuul_server']['gearman_port'] = self.gearman_server.port
37
Joshua Hesketh123625c2013-09-17 13:34:52 +100038 self.task = FakeRealDbUpgradeRunner(self.config,
Joshua Hesketh527966b2013-11-19 12:01:06 +110039 self.config['plugins'][0],
40 'test-worker-1', self)
Joshua Hesketh0d9a8c02013-08-14 12:38:14 +100041 self.tasks = dict(FakeRealDbUpgradeRunner_worker=self.task)
Joshua Hesketh66f9f602013-08-14 11:28:10 +100042
43 self.gearman_manager = FakeGearmanManager(self.config,
44 self.tasks,
45 self)
46
47 def test_manager_function_registered(self):
48 """ Check the manager is set up correctly and registered with the
49 gearman server with an appropriate function """
Joshua Hesketh0d9a8c02013-08-14 12:38:14 +100050
51 # Give the gearman server up to 5 seconds to register the function
52 for x in range(500):
53 time.sleep(0.01)
54 if len(self.gearman_server.functions) > 0:
55 break
56
57 hostname = os.uname()[1]
58 function_name = 'stop:turbo-hipster-manager-%s' % hostname
59
60 self.assertIn(function_name, self.gearman_server.functions)
61
62 def test_task_registered_with_manager(self):
63 """ Check the FakeRealDbUpgradeRunner_worker task is registered """
64 self.assertIn('FakeRealDbUpgradeRunner_worker',
65 self.gearman_manager.tasks.keys())
66
67 def test_stop_task(self):
68 """ Check that the manager successfully stops a task when requested
69 """
Joshua Hesketh66f9f602013-08-14 11:28:10 +100070 pass