def test_add_session_persistence_app_cookie_persist(
            self, basic_service_no_persist):

        adapter = ServiceModelAdapter(mock.MagicMock())
        listener = basic_service_no_persist['listener']
        pool = basic_service_no_persist['pools'][0]
        pool['session_persistence'] = dict(type="APP_COOKIE")
        vip_name = 'vip_name'
        persist_name = "app_cookie_{}".format(vip_name)

        vip = dict(name=vip_name)
        adapter._add_profiles_session_persistence(listener, pool, vip)

        expected = dict(
            name=vip_name,
            ipProtocol='tcp', profiles=['/Common/http',
                                        '/Common/oneconnect'],
            fallbackPersistence='',
            persist=[dict(name=persist_name)])
        assert vip == expected

        pool['lb_algorithm'] = 'SOURCE_IP'
        vip = dict(name=vip_name)
        adapter._add_profiles_session_persistence(listener, pool, vip)

        expected = dict(
            name=vip_name,
            ipProtocol='tcp', profiles=['/Common/http',
                                        '/Common/oneconnect'],
            fallbackPersistence='/Common/source_addr',
            persist=[dict(name=persist_name)])
        assert vip == expected
    def test_add_session_persistence_app_cookie_persist(
            self, basic_service_no_persist):

        adapter = ServiceModelAdapter(mock.MagicMock())
        listener = basic_service_no_persist['listener']
        pool = basic_service_no_persist['pools'][0]
        pool['session_persistence'] = dict(type="APP_COOKIE")
        vip_name = 'vip_name'
        persist_name = "app_cookie_{}".format(vip_name)

        vip = dict(name=vip_name)
        adapter._add_profiles_session_persistence(listener, pool, vip)

        expected = dict(name=vip_name,
                        ipProtocol='tcp',
                        profiles=['/Common/http', '/Common/oneconnect'],
                        fallbackPersistence='',
                        persist=[dict(name=persist_name)])
        assert vip == expected

        pool['lb_algorithm'] = 'SOURCE_IP'
        vip = dict(name=vip_name)
        adapter._add_profiles_session_persistence(listener, pool, vip)

        expected = dict(name=vip_name,
                        ipProtocol='tcp',
                        profiles=['/Common/http', '/Common/oneconnect'],
                        fallbackPersistence='/Common/source_addr',
                        persist=[dict(name=persist_name)])
        assert vip == expected
    def test_add_session_persistence_sourceip_persist(
            self, basic_service_no_persist):

        adapter = ServiceModelAdapter(mock.MagicMock())
        listener = basic_service_no_persist['listener']
        pool = basic_service_no_persist['pools'][0]
        pool['session_persistence'] = dict(type="SOURCE_IP")

        vip = dict()
        adapter._add_profiles_session_persistence(listener, pool, vip)

        expected = dict(ipProtocol='tcp',
                        profiles=['/Common/fastL4'],
                        fallbackPersistence='',
                        persist=[dict(name='/Common/source_addr')])
        assert vip == expected

        pool['lb_algorithm'] = 'SOURCE_IP'
        vip = dict()
        adapter._add_profiles_session_persistence(listener, pool, vip)

        expected = dict(ipProtocol='tcp',
                        profiles=['/Common/fastL4'],
                        fallbackPersistence='',
                        persist=[dict(name='/Common/source_addr')])
        assert vip == expected
    def test_add_session_peristence_tcp_no_pool(
            self, basic_http_service_no_pool):
        adapter = ServiceModelAdapter(mock.MagicMock())
        listener = basic_http_service_no_pool['listener']
        listener['protocol'] = 'TCP'

        vip = dict()
        adapter._add_profiles_session_persistence(listener, None, vip)

        expected = dict(ipProtocol='tcp', profiles=['/Common/fastL4'],
                        fallbackPersistence='', persist=[])
        assert vip == expected
    def test_add_session_peristence_tcp_no_pool(
            self, basic_http_service_no_pool):
        adapter = ServiceModelAdapter(mock.MagicMock())
        listener = basic_http_service_no_pool['listener']
        listener['protocol'] = 'TCP'

        vip = dict()
        adapter._add_profiles_session_persistence(listener, None, vip)

        expected = dict(ipProtocol='tcp', profiles=['/Common/fastL4'],
                        fallbackPersistence='', persist=[])
        assert vip == expected
    def test_add_session_persistence_pool_no_persist(self,
                                                     basic_service_no_persist):

        adapter = ServiceModelAdapter(mock.MagicMock())
        listener = basic_service_no_persist['listener']
        pool = basic_service_no_persist['pools'][0]

        vip = dict()
        adapter._add_profiles_session_persistence(listener, pool, vip)

        expected = dict(ipProtocol='tcp',
                        profiles=['/Common/http', '/Common/oneconnect'],
                        fallbackPersistence='',
                        persist=[])
        assert vip == expected
    def test_add_session_persistence_pool_no_persist(
            self, basic_service_no_persist):

        adapter = ServiceModelAdapter(mock.MagicMock())
        listener = basic_service_no_persist['listener']
        pool = basic_service_no_persist['pools'][0]

        vip = dict()
        adapter._add_profiles_session_persistence(listener, pool, vip)

        expected = dict(ipProtocol='tcp',
                        profiles=['/Common/http',
                                  '/Common/oneconnect'],
                        fallbackPersistence='', persist=[])
        assert vip == expected
    def test_add_session_persistence_pool_invalid_persist(
            self, basic_service_no_persist):

        adapter = ServiceModelAdapter(mock.MagicMock())
        listener = basic_service_no_persist['listener']
        pool = basic_service_no_persist['pools'][0]
        pool['session_persistence'] = dict(type="INVALID")
        f5_openstack_agent.lbaasv2.drivers.bigip.service_adapter.LOG = Mock()
        vip = dict()
        adapter._add_profiles_session_persistence(listener, pool, vip)

        expected = dict(ipProtocol='tcp',
                        profiles=['/Common/http', '/Common/oneconnect'],
                        fallbackPersistence='',
                        persist=[])
        assert vip == expected
    def test_add_session_persistence_pool_invalid_persist(
            self, basic_service_no_persist):

        adapter = ServiceModelAdapter(mock.MagicMock())
        listener = basic_service_no_persist['listener']
        pool = basic_service_no_persist['pools'][0]
        pool['session_persistence'] = dict(type="INVALID")
        f5_openstack_agent.lbaasv2.drivers.bigip.service_adapter.LOG = Mock()
        vip = dict()
        adapter._add_profiles_session_persistence(listener, pool, vip)

        expected = dict(ipProtocol='tcp',
                        profiles=['/Common/http',
                                  '/Common/oneconnect'],
                        fallbackPersistence='', persist=[])
        assert vip == expected