def testArchiveSwiftRequiredParams(self): null_driver = LoadBalancerDriver() # Missing basepath field msg = { c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'Swift', c.OBJ_STORE_ENDPOINT_FIELD: "https://example.com", c.OBJ_STORE_TOKEN_FIELD: "XXXX", c.LBLIST_FIELD: [{'protocol': 'http', 'id': '123'}] } controller = c(self.logger, null_driver, msg) response = controller.run() self.assertIn('badRequest', response) # Missing endpoint field msg = { c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'Swift', c.OBJ_STORE_BASEPATH_FIELD: "/lbaaslogs", c.OBJ_STORE_TOKEN_FIELD: "XXXX", c.LBLIST_FIELD: [{'protocol': 'http', 'id': '123'}] } controller = c(self.logger, null_driver, msg) response = controller.run() self.assertIn('badRequest', response) # Missing token field msg = { c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'Swift', c.OBJ_STORE_BASEPATH_FIELD: "/lbaaslogs", c.OBJ_STORE_ENDPOINT_FIELD: "https://example.com", c.LBLIST_FIELD: [{'protocol': 'http', 'id': '123'}] } controller = c(self.logger, null_driver, msg) response = controller.run() self.assertIn('badRequest', response) # Missing load balancer field msg = { c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'Swift', c.OBJ_STORE_BASEPATH_FIELD: "/lbaaslogs", c.OBJ_STORE_ENDPOINT_FIELD: "https://example.com", c.OBJ_STORE_TOKEN_FIELD: "XXXX" } controller = c(self.logger, null_driver, msg) response = controller.run() self.assertIn('badRequest', response)
def testUpdateGoodMonitor(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [ { 'protocol': 'http', 'nodes': [ { 'id': 1234, 'address': '10.0.0.1', 'port': 80 } ], 'monitor': { 'type': 'CONNECT', 'delay': 60, 'timeout': 30, 'attempts': 1, 'path': '/healthcheck' } } ] } controller = c(self.driver, msg) response = controller.run() self.assertNotIn('badRequest', response) self.assertEqual(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)
def testUpdateMissingLBs(self): msg = {c.ACTION_FIELD: 'UPDATE'} controller = c(self.driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEqual(msg, "Missing '%s' element" % c.LBLIST_FIELD)
def testUpdateMonitorMissingAttempts(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [{ 'protocol': 'http', 'nodes': [{ 'id': 1234, 'address': '10.0.0.1', 'port': 80 }], 'monitor': { 'type': 'CONNECT', 'delay': 60, 'timeout': 30, 'path': '/healthcheck' } }] } controller = c(self.driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEqual(msg, "Missing monitor value 'attempts'")
def testUpdateMonitorMissingPath(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [ { 'protocol': 'http', 'nodes': [ { 'id': 1234, 'address': '10.0.0.1', 'port': 80 } ], 'monitor': { 'type': 'CONNECT', 'delay': 60, 'timeout': 30, 'attempts': 1 } } ] } controller = c(self.driver, msg) response = controller.run() self.assertIn(c.RESPONSE_FIELD, response) self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)
def testUpdateMonitorMissingAttempts(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [ { 'protocol': 'http', 'nodes': [ { 'id': 1234, 'address': '10.0.0.1', 'port': 80 } ], 'monitor': { 'type': 'CONNECT', 'delay': 60, 'timeout': 30, 'path': '/healthcheck' } } ] } controller = c(self.driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEquals(msg, "Missing monitor value 'attempts'")
def testUpdateGoodMonitor(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [{ 'protocol': 'http', 'nodes': [{ 'id': 1234, 'address': '10.0.0.1', 'port': 80 }], 'monitor': { 'type': 'CONNECT', 'delay': 60, 'timeout': 30, 'attempts': 1, 'path': '/healthcheck' } }] } controller = c(self.driver, msg) response = controller.run() self.assertNotIn('badRequest', response) self.assertEqual(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 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 testEnable(self): msg = { c.ACTION_FIELD: 'ENABLE' } controller = c(self.driver, msg) response = controller.run() self.assertIn(c.RESPONSE_FIELD, response) self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)
def testCreateMissingNodes(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [{'protocol': 'http'}] } controller = c(self.logger, self.driver, msg) response = controller.run() self.assertIn('badRequest', response)
def testArchiveMissingMethod(self): msg = { c.ACTION_FIELD: 'ARCHIVE' } null_driver = LoadBalancerDriver() controller = c(self.logger, null_driver, msg) response = controller.run() self.assertIn('badRequest', response)
def testCaseSensitive(self): msg = { c.ACTION_FIELD: 'UPDATE', 'LoAdBaLaNcErS': [{'protocol': 'http'}] } controller = c(self.logger, self.driver, msg) response = controller.run() self.assertIn('badRequest', response)
def testArchiveMissingMethod(self): msg = {c.ACTION_FIELD: 'ARCHIVE'} null_driver = LoadBalancerDriver() controller = c(null_driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEqual(msg, "Missing '%s' element" % c.OBJ_STORE_TYPE_FIELD)
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 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 testUpdateMissingLBs(self): msg = { c.ACTION_FIELD: 'UPDATE' } controller = c(self.driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEquals(msg, "Missing '%s' element" % c.LBLIST_FIELD)
def testDiscover(self): msg = {c.ACTION_FIELD: 'DISCOVER'} controller = c(self.driver, msg) response = controller.run() self.assertIn('version', response) self.assertIn('release', response) self.assertEqual(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS) self.assertEqual(response['version'], libra_version) self.assertEqual(response['release'], libra_release)
def testArchiveInvalidMethod(self): msg = { c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'bad' } null_driver = LoadBalancerDriver() controller = c(self.logger, null_driver, msg) response = controller.run() self.assertIn('badRequest', response)
def testCaseSensitive(self): msg = { c.ACTION_FIELD: 'UPDATE', 'LoAdBaLaNcErS': [{ 'protocol': 'http' }] } controller = c(self.driver, msg) response = controller.run() self.assertIn('badRequest', response)
def testUpdateMissingNodes(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [{'protocol': 'http'}] } controller = c(self.driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEquals(msg, "Missing 'nodes' element")
def testArchiveMissingMethod(self): msg = { c.ACTION_FIELD: 'ARCHIVE' } null_driver = LoadBalancerDriver() controller = c(null_driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEquals(msg, "Missing '%s' element" % c.OBJ_STORE_TYPE_FIELD)
def testDiscover(self): msg = { c.ACTION_FIELD: 'DISCOVER' } controller = c(self.logger, self.driver, msg) response = controller.run() self.assertIn('version', response) self.assertIn('release', response) self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS) self.assertEquals(response['version'], libra_version) self.assertEquals(response['release'], libra_release)
def testUpdateMissingNodes(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [{ 'protocol': 'http' }] } controller = c(self.driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEqual(msg, "Missing 'nodes' element")
def testArchiveNotImplemented(self): msg = { c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'Swift', c.OBJ_STORE_BASEPATH_FIELD: "/lbaaslogs", c.OBJ_STORE_ENDPOINT_FIELD: "https://example.com", c.OBJ_STORE_TOKEN_FIELD: "XXXX", c.LBLIST_FIELD: [{'protocol': 'http', 'id': '123'}] } null_driver = LoadBalancerDriver() controller = c(self.logger, null_driver, msg) response = controller.run() self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_FAILURE) self.assertIn(c.ERROR_FIELD, response) self.assertEquals(response[c.ERROR_FIELD], "Selected driver does not support ARCHIVE action.")
def testUpdateMissingProto(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [{ 'nodes': [{ 'id': 1234, 'address': '10.0.0.1', 'port': 80 }] }] } controller = c(self.driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEquals(msg, "Missing required 'protocol' value.")
def testCreateMissingProto(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [ { 'nodes': [ { 'address': '10.0.0.1', 'port': 80 } ] } ] } controller = c(self.logger, self.driver, msg) response = controller.run() self.assertIn('badRequest', response)
def testUpdateMissingNodeID(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [{ 'protocol': 'http', 'nodes': [{ 'address': '10.0.0.1', 'port': 80 }] }] } controller = c(self.driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEqual(msg, "Missing node 'id'")
def testUpdate(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [{ 'protocol': 'http', 'nodes': [{ 'id': 1234, 'address': '10.0.0.1', 'port': 80 }] }] } controller = c(self.driver, msg) response = controller.run() self.assertIn(c.RESPONSE_FIELD, response) self.assertEqual(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)
def testArchiveNotImplemented(self): msg = { c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'Swift', c.OBJ_STORE_BASEPATH_FIELD: "/lbaaslogs", c.OBJ_STORE_ENDPOINT_FIELD: "https://example.com", c.OBJ_STORE_TOKEN_FIELD: "XXXX", c.LBLIST_FIELD: [{ 'protocol': 'http', 'id': '123' }] } null_driver = LoadBalancerDriver() controller = c(null_driver, msg) response = controller.run() self.assertEqual(response[c.RESPONSE_FIELD], c.RESPONSE_FAILURE) self.assertIn(c.ERROR_FIELD, response) self.assertEqual(response[c.ERROR_FIELD], "Selected driver does not support ARCHIVE action.")
def testUpdate(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [ { '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 testUpdateMissingProto(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [ { 'nodes': [ { 'id': 1234, 'address': '10.0.0.1', 'port': 80 } ] } ] } controller = c(self.driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEqual(msg, "Missing required 'protocol' value.")
def testUpdateMissingNodeID(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [ { 'protocol': 'http', 'nodes': [ { 'address': '10.0.0.1', 'port': 80 } ] } ] } controller = c(self.driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEquals(msg, "Missing node 'id'")
def testBadAlgorithm(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [{ 'protocol': 'http', 'algorithm': 'BOGUS', 'nodes': [{ 'id': 1234, 'address': '10.0.0.1', 'port': 80 }] }] } controller = c(self.driver, msg) response = controller.run() self.assertIn(c.RESPONSE_FIELD, response) self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_FAILURE)
def testBadAlgorithm(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [ { 'protocol': 'http', 'algorithm': 'BOGUS', 'nodes': [ { 'id': 1234, 'address': '10.0.0.1', 'port': 80 } ] } ] } controller = c(self.driver, msg) response = controller.run() self.assertIn(c.RESPONSE_FIELD, response) self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_FAILURE)
def testUpdateMonitorMissingPath(self): msg = { c.ACTION_FIELD: 'UPDATE', c.LBLIST_FIELD: [{ 'protocol': 'http', 'nodes': [{ 'id': 1234, 'address': '10.0.0.1', 'port': 80 }], 'monitor': { 'type': 'CONNECT', 'delay': 60, 'timeout': 30, 'attempts': 1 } }] } controller = c(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.driver, msg) response = controller.run() self.assertIn(c.RESPONSE_FIELD, response) self.assertEqual(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)
def testSuspend(self): msg = {c.ACTION_FIELD: 'SUSPEND'} controller = c(self.driver, msg) response = controller.run() self.assertIn(c.RESPONSE_FIELD, response) self.assertEqual(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)
def testArchiveSwiftRequiredParams(self): null_driver = LoadBalancerDriver() # Missing basepath field msg = { c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'Swift', c.OBJ_STORE_ENDPOINT_FIELD: "https://example.com", c.OBJ_STORE_TOKEN_FIELD: "XXXX", c.LBLIST_FIELD: [{ 'protocol': 'http', 'id': '123' }] } controller = c(null_driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEqual(msg, "Missing '%s' element" % c.OBJ_STORE_BASEPATH_FIELD) # Missing endpoint field msg = { c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'Swift', c.OBJ_STORE_BASEPATH_FIELD: "/lbaaslogs", c.OBJ_STORE_TOKEN_FIELD: "XXXX", c.LBLIST_FIELD: [{ 'protocol': 'http', 'id': '123' }] } controller = c(null_driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEqual(msg, "Missing '%s' element" % c.OBJ_STORE_ENDPOINT_FIELD) # Missing token field msg = { c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'Swift', c.OBJ_STORE_BASEPATH_FIELD: "/lbaaslogs", c.OBJ_STORE_ENDPOINT_FIELD: "https://example.com", c.LBLIST_FIELD: [{ 'protocol': 'http', 'id': '123' }] } controller = c(null_driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEqual(msg, "Missing '%s' element" % c.OBJ_STORE_TOKEN_FIELD) # Missing load balancer field msg = { c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'Swift', c.OBJ_STORE_BASEPATH_FIELD: "/lbaaslogs", c.OBJ_STORE_ENDPOINT_FIELD: "https://example.com", c.OBJ_STORE_TOKEN_FIELD: "XXXX" } controller = c(null_driver, msg) response = controller.run() self.assertIn('badRequest', response) msg = response['badRequest']['validationErrors']['message'] self.assertEqual(msg, "Missing '%s' element" % c.LBLIST_FIELD)
def testArchiveInvalidMethod(self): msg = {c.ACTION_FIELD: 'ARCHIVE', c.OBJ_STORE_TYPE_FIELD: 'bad'} null_driver = LoadBalancerDriver() controller = c(null_driver, msg) response = controller.run() self.assertIn('badRequest', response)
def testBadAction(self): msg = {c.ACTION_FIELD: 'BOGUS'} controller = c(self.driver, msg) response = controller.run() self.assertIn(c.RESPONSE_FIELD, response) self.assertEqual(response[c.RESPONSE_FIELD], c.RESPONSE_FAILURE)
def testEnable(self): msg = {c.ACTION_FIELD: 'ENABLE'} controller = c(self.driver, msg) response = controller.run() self.assertIn(c.RESPONSE_FIELD, response) self.assertEquals(response[c.RESPONSE_FIELD], c.RESPONSE_SUCCESS)