示例#1
0
    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)
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
 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'")
示例#5
0
 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)
示例#6
0
 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'")
示例#7
0
 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)
示例#8
0
 def testCreateMissingLBs(self):
     msg = {
         c.ACTION_FIELD: 'UPDATE'
     }
     controller = c(self.logger, self.driver, msg)
     response = controller.run()
     self.assertIn('badRequest', response)
示例#9
0
 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)
示例#10
0
 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)
示例#11
0
 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)
示例#12
0
 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)
示例#13
0
 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)
示例#14
0
 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)
示例#15
0
 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)
示例#16
0
 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)
示例#17
0
 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)
示例#18
0
 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)
示例#19
0
 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)
示例#20
0
 def testCaseSensitive(self):
     msg = {
         c.ACTION_FIELD: 'UPDATE',
         'LoAdBaLaNcErS': [{
             'protocol': 'http'
         }]
     }
     controller = c(self.driver, msg)
     response = controller.run()
     self.assertIn('badRequest', response)
示例#21
0
 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")
示例#22
0
 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)
示例#23
0
 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)
示例#24
0
 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")
示例#25
0
 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.")
示例#26
0
 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.")
示例#27
0
 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)
示例#28
0
 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'")
示例#29
0
 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)
示例#30
0
 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.")
示例#31
0
 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)
示例#32
0
 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.")
示例#33
0
 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'")
示例#34
0
 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)
示例#35
0
 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)
示例#36
0
 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)
示例#37
0
 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)
示例#38
0
 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)
示例#39
0
    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)
示例#40
0
 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)
示例#41
0
 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)
示例#42
0
 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)