# Copyright (c) 2017 Cisco and/or its affiliates.
# 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.

"""Test variables for Policer test suite."""


def get_variables():
    """Create and return a dictionary of test variables for the specified
    test case.

    :returns: Dictionary of test variables - settings for Honeycomb's Policer.
    :rtype: dict
    """
    policer_data = {
        "policer_data": {
            "name": "policy1",
            "cir": 450,
            "cb": 50000,
            "rate-type": "kbps",
            "round-type": "closest",
            "type": "1r2c",
            "conform-action": {
                "meter-action-type": "meter-action-transmit"
            },
            "exceed-action": {
                "meter-action-type": "meter-action-drop"
            }
        },
        "policer_data_oper": {
            "name": "policy1",
            "cir": 450,
            "cb": 50000,
            "rate-type": "kbps",
            "round-type": "closest",
            "type": "1r2c",
            "conform-action": {
                "meter-action-type": "policer:meter-action-transmit"
            },
            "exceed-action": {
                "meter-action-type": "policer:meter-action-drop"
            }
        },
        "policer_data_2": {
            "name": "policy1",
            "cir": 900,
            "cb": 50000,
            "rate-type": "kbps",
            "round-type": "closest",
            "type": "1r2c",
            "conform-action": {
                "meter-action-type": "meter-action-transmit"
            },
            "exceed-action": {
                "meter-action-type": "meter-action-drop"
            }
        },
        "policer_data_oper_2": {
            "name": "policy1",
            "cir": 900,
            "cb": 50000,
            "rate-type": "kbps",
            "round-type": "closest",
            "type": "1r2c",
            "conform-action": {
                "meter-action-type": "policer:meter-action-transmit"
            },
            "exceed-action": {
                "meter-action-type": "policer:meter-action-drop"
            }
        },
        "policer_data_3": {
            "name": "policy1",
            "cir": 100,
            "eir": 150,
            "cb": 200,
            "eb": 300,
            "rate-type": "pps",
            "round-type": "closest",
            "type": "2r3c-2698",
            "conform-action": {
                "meter-action-type": "meter-action-transmit"
            },
            "exceed-action": {
                "meter-action-type": "meter-action-mark-dscp",
                "dscp": "AF22"
            },
            "violate-action": {
                "meter-action-type": "meter-action-drop"
            },
            "color-aware": True
            },
        "policer_data_oper_3": {
            "name": "policy1",
            "cir": 100,
            "eir": 150,
            "cb": 200,
            "eb": 300,
            "rate-type": "pps",
            "round-type": "closest",
            "type": "2r3c-2698",
            "conform-action": {
                "meter-action-type": "policer:meter-action-transmit"
            },
            "exceed-action": {
                "meter-action-type": "policer:meter-action-mark-dscp",
            },
            "violate-action": {
                "meter-action-type": "policer:meter-action-drop"
            },
            "color-aware": True
        },

        "acl_tables": {
            # settings for policer tables
            "hc_acl_table": {
                "name": "table0",
                "nbuckets": 2,
                "memory_size": 1048576,
                "skip_n_vectors": 12,
                "miss_next": "permit",
                "mask": "00:00:00:00:00:00:00:00:00:00:00:00:ff:ff:ff:ff"
            },
            # setting for acl sessions
            "hc_acl_session": {
                "match": "00:00:00:00:00:00:00:00:00:00:00:00:C0:A8:7A:01",
                "policer_hit_next": "policy1",
                "color_classfier": "exceed-color",
            },
            "hc_acl_session2": {
                "match": "00:00:00:00:00:00:00:00:00:00:00:00:C0:A8:7A:02",
                "policer_hit_next": "policy1",
                "color_classfier": "exceed-color",
            },
        },
    }
    return policer_data