utils/test_bgp: Add unit tests for IPv6 Flow Spec
@@ -28,6 +28,7 @@ from ryu.lib.packet.bgp import (
from ryu.services.protocols.bgp.core import BgpCoreError
from ryu.services.protocols.bgp.utils.bgp import create_v4flowspec_actions
+from ryu.services.protocols.bgp.utils.bgp import create_v6flowspec_actions
LOG = logging.getLogger(__name__)
@@ -83,3 +84,49 @@ class Test_Utils_BGP(unittest.TestCase):
}
expected_communities = []
self._test_create_v4flowspec_actions(actions, expected_communities)
+
+ def _test_create_v6flowspec_actions(self, actions, expected_communities):
+ communities = create_v6flowspec_actions(actions)
+ expected_communities.sort(key=lambda x: x.subtype)
+ communities.sort(key=lambda x: x.subtype)
+ eq_(str(expected_communities), str(communities))
+
+ def test_create_v6flowspec_actions_all_actions(self):
+ actions = {
+ 'traffic_rate': {
+ 'as_number': 0,
+ 'rate_info': 100.0,
+ },
+ 'traffic_action': {
+ 'action': 3,
+ },
+ 'redirect': {
+ 'as_number': 10,
+ 'local_administrator': 10,
+ },
+ 'traffic_marking': {
+ 'dscp': 24,
+ }
+ }
+ expected_communities = [
+ BGPFlowSpecTrafficRateCommunity(as_number=0, rate_info=100.0),
+ BGPFlowSpecTrafficActionCommunity(action=3),
+ BGPFlowSpecRedirectCommunity(as_number=10, local_administrator=10),
+ BGPFlowSpecTrafficMarkingCommunity(dscp=24),
+ ]
+ self._test_create_v6flowspec_actions(actions, expected_communities)
+
+ def test_create_v6flowspec_actions_without_actions(self):
+ actions = None
+ expected_communities = []
+ self._test_create_v6flowspec_actions(actions, expected_communities)
+
+ @raises(ValueError)
+ def test_create_v6flowspec_actions_not_exist_actions(self):
+ actions = {
+ 'traffic_test': {
+ 'test': 10,
+ },
+ }
+ expected_communities = []
+ self._test_create_v6flowspec_actions(actions, expected_communities)
