
The worker now supports a DISCOVER message that can be sent to it to discover which version of the JSON message format that it supports. The Gearman function name that it registers is now simply the hostname and no longer includes 'lbaas-<VERSION>-' as a prefix. Change-Id: Ib34ae424e5461b3b1f8df601a6e7a1fd99c48c05
137 lines
4.3 KiB
Python
137 lines
4.3 KiB
Python
import logging
|
|
import mock_objects
|
|
import unittest
|
|
from libra.worker.controller import LBaaSController as c
|
|
from libra.worker.drivers.haproxy.driver import HAProxyDriver
|
|
|
|
|
|
class TestWorkerController(unittest.TestCase):
|
|
def setUp(self):
|
|
self.logger = logging.getLogger('test_worker_controller')
|
|
self.lh = mock_objects.MockLoggingHandler()
|
|
self.logger.setLevel(logging.DEBUG)
|
|
self.logger.addHandler(self.lh)
|
|
self.driver = HAProxyDriver('mock_objects.FakeOSServices')
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
def testBadAction(self):
|
|
msg = {
|
|
c.ACTION_FIELD: 'BOGUS'
|
|
}
|
|
controller = c(self.logger, self.driver, msg)
|
|
response = controller.run()
|
|
self.assertIn(c.RESPONSE_FIELD, response)
|
|
self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_FAILURE)
|
|
|
|
def testUpdate(self):
|
|
msg = {
|
|
c.ACTION_FIELD: 'UPDATE',
|
|
'loadbalancers': [
|
|
{
|
|
'protocol': 'http',
|
|
'nodes': [
|
|
{
|
|
'address': '10.0.0.1',
|
|
'port': 80
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
controller = c(self.logger, self.driver, msg)
|
|
response = controller.run()
|
|
self.assertIn(c.RESPONSE_FIELD, response)
|
|
self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)
|
|
|
|
def testSuspend(self):
|
|
msg = {
|
|
c.ACTION_FIELD: 'SUSPEND'
|
|
}
|
|
controller = c(self.logger, self.driver, msg)
|
|
response = controller.run()
|
|
self.assertIn(c.RESPONSE_FIELD, response)
|
|
self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)
|
|
|
|
def testEnable(self):
|
|
msg = {
|
|
c.ACTION_FIELD: 'ENABLE'
|
|
}
|
|
controller = c(self.logger, self.driver, msg)
|
|
response = controller.run()
|
|
self.assertIn(c.RESPONSE_FIELD, response)
|
|
self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)
|
|
|
|
def testDelete(self):
|
|
msg = {
|
|
c.ACTION_FIELD: 'DELETE'
|
|
}
|
|
controller = c(self.logger, self.driver, msg)
|
|
response = controller.run()
|
|
self.assertIn(c.RESPONSE_FIELD, response)
|
|
self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)
|
|
|
|
def testCreateMissingLBs(self):
|
|
msg = {
|
|
c.ACTION_FIELD: 'UPDATE'
|
|
}
|
|
controller = c(self.logger, self.driver, msg)
|
|
response = controller.run()
|
|
self.assertIn('badRequest', response)
|
|
|
|
def testCreateMissingNodes(self):
|
|
msg = {
|
|
c.ACTION_FIELD: 'UPDATE',
|
|
'loadbalancers': [ { 'protocol': 'http' } ]
|
|
}
|
|
controller = c(self.logger, self.driver, msg)
|
|
response = controller.run()
|
|
self.assertIn('badRequest', response)
|
|
|
|
def testCreateMissingProto(self):
|
|
msg = {
|
|
c.ACTION_FIELD: 'UPDATE',
|
|
'loadbalancers': [
|
|
{
|
|
'nodes': [
|
|
{
|
|
'address': '10.0.0.1',
|
|
'port': 80
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
controller = c(self.logger, self.driver, msg)
|
|
response = controller.run()
|
|
self.assertIn('badRequest', response)
|
|
|
|
def testBadAlgorithm(self):
|
|
msg = {
|
|
c.ACTION_FIELD: 'UPDATE',
|
|
'loadbalancers': [
|
|
{
|
|
'protocol': 'http',
|
|
'algorithm': 'BOGUS',
|
|
'nodes': [
|
|
{
|
|
'address': '10.0.0.1',
|
|
'port': 80
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
controller = c(self.logger, self.driver, msg)
|
|
response = controller.run()
|
|
self.assertIn(c.RESPONSE_FIELD, response)
|
|
self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_FAILURE)
|
|
|
|
def testDiscover(self):
|
|
msg = { c.ACTION_FIELD: 'DISCOVER' }
|
|
controller = c(self.logger, self.driver, msg)
|
|
response = controller.run()
|
|
self.assertIn('version', response)
|
|
self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)
|