blob: 0f1c71b453f92994ee106c36c25a99fe95f827dc [file] [log] [blame]
#!/usr/bin/python
import unittest
import common
from autotest_lib.frontend import setup_django_environment
from autotest_lib.frontend.planner import planner_test_utils
from autotest_lib.frontend.afe import model_logic
from autotest_lib.frontend.afe import models as afe_models
from autotest_lib.frontend.planner import rpc_interface, models, rpc_utils
class RpcInterfaceTest(unittest.TestCase,
planner_test_utils.PlannerTestMixin):
def setUp(self):
self._planner_common_setup()
self.god.stub_function(rpc_utils, 'start_plan')
def tearDown(self):
self._planner_common_teardown()
def test_submit_plan_success(self):
hosts = ('host1', 'host2')
plan_name = self._PLAN_NAME + '2'
rpc_utils.start_plan.expect_any_call()
rpc_interface.submit_plan(plan_name, hosts, ('label1',), ())
plan = models.Plan.objects.get(name=plan_name)
self.assertEqual(
set(afe_models.Host.objects.filter(hostname__in=hosts)),
set(plan.hosts.all()))
self.assertEqual(1, plan.host_labels.all().count())
self.assertEqual(afe_models.Label.objects.get(name='label1'),
plan.host_labels.all()[0])
self.god.check_playback()
def test_submit_plan_duplicate(self):
self.assertRaises(
model_logic.ValidationError, rpc_interface.submit_plan,
self._PLAN_NAME, (), (), ())
def test_submit_plan_bad_host(self):
self.assertRaises(
model_logic.ValidationError, rpc_interface.submit_plan,
self._PLAN_NAME + '2', ('fakehost'), (), ())
def test_submit_plan_bad_label(self):
self.assertRaises(
model_logic.ValidationError, rpc_interface.submit_plan,
self._PLAN_NAME + '2', (), ('fakelabel'), ())
def test_get_hosts(self):
hosts = rpc_interface.get_hosts(self._PLAN_NAME)
self.assertEqual(set(('host1', 'host2')), set(hosts))
afe_models.Host.objects.get(hostname='host3').labels.add(
afe_models.Label.objects.get(name='label1'))
hosts = rpc_interface.get_hosts(self._PLAN_NAME)
self.assertEqual(set(('host1', 'host2', 'host3')), set(hosts))
afe_models.Host.objects.get(hostname='host3').labels.clear()
hosts = rpc_interface.get_hosts(self._PLAN_NAME)
self.assertEqual(set(('host1', 'host2')), set(hosts))
if __name__ == '__main__':
unittest.main()