def __set_prepare_config_common(status,
                                bbr_enabled_pgs,
                                available_pgs,
                                mapping_pgs,
                                expected_cmds,
                                bbr_applied_pgs=None):
    cfg_mgr = MagicMock()
    common_objs = {
        'directory': Directory(),
        'cfg_mgr': cfg_mgr,
        'tf': TemplateFabric(),
        'constants': global_constants,
    }
    m = BBRMgr(common_objs, "CONFIG_DB", "BGP_BBR")
    m.directory.data = {
        "CONFIG_DB__DEVICE_METADATA": {
            "localhost": {
                "bgp_asn": "65500"
            }
        }
    }
    m.bbr_enabled_pgs = bbr_enabled_pgs
    m._BBRMgr__get_available_peer_groups = MagicMock(
        return_value=available_pgs)
    m._BBRMgr__get_available_peers_per_peer_group = MagicMock(
        return_value=mapping_pgs)
    cmds, peer_groups = m._BBRMgr__set_prepare_config(status)
    assert cmds == expected_cmds
    assert set(peer_groups) == (available_pgs
                                if not bbr_applied_pgs else bbr_applied_pgs)
def test__get_available_peers_per_peer_group():
    cfg_mgr = MagicMock()
    common_objs = {
        'directory': Directory(),
        'cfg_mgr': cfg_mgr,
        'tf': TemplateFabric(),
        'constants': global_constants,
    }
    m = BBRMgr(common_objs, "CONFIG_DB", "BGP_BBR")
    m.cfg_mgr.get_text = MagicMock(return_value=[
        '  neighbor PEER_V4 peer-group',
        '  neighbor PEER_V6 peer-group',
        '  neighbor 10.0.0.1 peer-group PEER_V4',
        '  neighbor fc00::1 peer-group PEER_V6',
        '  neighbor 10.0.0.10 peer-group PEER_V4',
        '  neighbor fc00::2 peer-group PEER_V6',
        '     ',
    ])
    res = m._BBRMgr__get_available_peers_per_peer_group(['PEER_V4', "PEER_V6"])
    assert dict(res) == {
        "PEER_V4": ['10.0.0.1', '10.0.0.10'],
        "PEER_V6": ['fc00::1', 'fc00::2'],
    }