4483fe5006
This patch is based on https://review.openstack.org/161194 It renames vmware_nsx/tests/unit/vmware/ to vmware_nsx/tests/unit/ and creates subdirectories vmware_nsx/tests/unit/dvs/ vmware_nsx/tests/unit/nsx_mh/ vmware_nsx/tests/unit/nsx_v/ vmware_nsx/tests/unit/nsx_v3/ vmware_nsx/tests/unit/nsxlib/mh/ vmware_nsx/tests/unit/nsxlib/v3/ This is part of new vmware_nsx directory structure proposed in https://goo.gl/GdWXyH. Change-Id: I16aa2455bce55f6455bb5e504ee9684c675b4257
95 lines
4.6 KiB
Python
95 lines
4.6 KiB
Python
# Copyright 2014 VMware, Inc.
|
|
# All Rights Reserved
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import mock
|
|
from oslo_serialization import jsonutils
|
|
|
|
from neutron.tests import base
|
|
from vmware_nsx.plugins.nsx_v.vshield import nsxv_loadbalancer
|
|
from vmware_nsx.plugins.nsx_v.vshield import vcns
|
|
|
|
|
|
class NsxvLoadbalancerTestCase(base.BaseTestCase):
|
|
|
|
EDGE_OBJ_JSON = (
|
|
'{"accelerationEnabled":false,"applicationProfile":[{'
|
|
'"applicationProfileId":"applicationProfile-1","insertXForwardedFor":'
|
|
'false,"name":"MDSrvProxy","persistence":{"cookieMode":"insert",'
|
|
'"cookieName":"JSESSIONID","expire":"30","method":"cookie"},'
|
|
'"serverSslEnabled":false,"sslPassthrough":false,"template":"HTTP"}],'
|
|
'"applicationRule":[],"enableServiceInsertion":false,"enabled":true,'
|
|
'"featureType":"loadbalancer_4.0","logging":{"enable":false,'
|
|
'"logLevel":"info"},"monitor":[{"interval":10,"maxRetries":3,"method":'
|
|
'"GET","monitorId":"monitor-1","name":"MDSrvMon","timeout":15,"type":'
|
|
'"http","url":"/"}],"pool":[{"algorithm":"round-robin",'
|
|
'"applicationRuleId":[],"member":[{"condition":"enabled","ipAddress":'
|
|
'"192.168.0.39","maxConn":0,"memberId":"member-1","minConn":0,'
|
|
'"monitorPort":8775,"name":"Member-1","port":8775,"weight":1}],'
|
|
'"monitorId":["monitor-1"],"name":"MDSrvPool","poolId":"pool-1",'
|
|
'"transparent":false}],"version":6,"virtualServer":[{'
|
|
'"accelerationEnabled":false,"applicationProfileId":'
|
|
'"applicationProfile-1","applicationRuleId":[],"connectionLimit":0,'
|
|
'"defaultPoolId":"pool-1","enableServiceInsertion":false,'
|
|
'"enabled":true,"ipAddress":"169.254.0.3","name":"MdSrv",'
|
|
'"port":"8775","protocol":"http","virtualServerId":'
|
|
'"virtualServer-1"}]}')
|
|
|
|
OUT_OBJ_JSON = (
|
|
'{"accelerationEnabled": false, "applicationProfile": [{'
|
|
'"applicationProfileId": "applicationProfile-1", '
|
|
'"insertXForwardedFor": false, "name": "MDSrvProxy", "persistence": '
|
|
'{"expire": "30", "method": "cookie"}, "serverSslEnabled": false, '
|
|
'"sslPassthrough": false, "template": "HTTP"}],'
|
|
' "enableServiceInsertion": false, "enabled": true, "featureType": '
|
|
'"loadbalancer_4.0", "monitor": [{"interval": 10, "maxRetries": 3, '
|
|
'"method": "GET", "monitorId": "monitor-1", "name": "MDSrvMon", '
|
|
'"timeout": 15, "type": "http", "url": "/"}], "pool": [{"algorithm":'
|
|
' "round-robin", "member": [{"condition": "enabled", "ipAddress": '
|
|
'"192.168.0.39", "maxConn": 0, "memberId": "member-1", "minConn": 0, '
|
|
'"monitorPort": 8775, "name": "Member-1", "port": 8775, "weight": 1}],'
|
|
' "monitorId": ["monitor-1"], "name": "MDSrvPool", "poolId": "pool-1",'
|
|
' "transparent": false}], "virtualServer": [{"accelerationEnabled": '
|
|
'false, "applicationProfileId": "applicationProfile-1", '
|
|
'"connectionLimit": 0, "defaultPoolId": "pool-1", '
|
|
'"enableServiceInsertion": false, "enabled": true, "ipAddress": '
|
|
'"169.254.0.3", "name": "MdSrv", "port": "8775", "protocol": '
|
|
'"http", "virtualServerId": "virtualServer-1"}]}')
|
|
|
|
LB_URI = '/api/4.0/edges/%s/loadbalancer/config?async=true'
|
|
EDGE_1 = 'edge-x'
|
|
EDGE_2 = 'edge-y'
|
|
|
|
def setUp(self):
|
|
super(NsxvLoadbalancerTestCase, self).setUp()
|
|
self._lb = nsxv_loadbalancer.NsxvLoadbalancer()
|
|
self._vcns = vcns.Vcns(None, None, None, None, True)
|
|
|
|
def test_get_edge_loadbalancer(self):
|
|
h = None
|
|
v = jsonutils.loads(self.EDGE_OBJ_JSON)
|
|
|
|
with mock.patch.object(self._vcns, 'do_request',
|
|
return_value=(h, v)) as mock_do_request:
|
|
lb = nsxv_loadbalancer.NsxvLoadbalancer.get_loadbalancer(
|
|
self._vcns, self.EDGE_1)
|
|
lb.submit_to_backend(self._vcns, self.EDGE_2)
|
|
|
|
mock_do_request.assert_called_with(
|
|
vcns.HTTP_PUT,
|
|
self.LB_URI % self.EDGE_2,
|
|
self.OUT_OBJ_JSON,
|
|
format='json',
|
|
encode=False)
|