コード例 #1
0
    def test_invalid_subscriber(self):
        """
        Try to apply an invalid policy to a subscriber, should log and error

        Assert:
            Only 1 flow gets added to the table (drop flow)
        """
        fake_controller_setup(self.enforcement_controller)
        imsi = 'IMSI000000000000001'
        sub_ip = '192.168.128.45'
        flow_list = [
            FlowDescription(match=FlowMatch(
                ip_src=convert_ipv4_str_to_ip_proto('9999.0.0.0/24')),
                            action=FlowDescription.DENY)
        ]
        policy = PolicyRule(id='invalid', priority=2, flow_list=flow_list)
        invalid_sub_context = RyuDirectSubscriberContext(
            imsi, sub_ip, self.enforcement_controller,
            self._tbl_num).add_dynamic_rule(policy)
        isolator = RyuDirectTableIsolator(
            RyuForwardFlowArgsBuilder.from_subscriber(
                invalid_sub_context.cfg).build_requests(),
            self.testing_controller)
        flow_query = FlowQuery(self._tbl_num, self.testing_controller)
        num_flows_start = len(flow_query.lookup())
        snapshot_verifier = SnapshotVerifier(self, self.BRIDGE,
                                             self.service_manager)

        with isolator, invalid_sub_context, snapshot_verifier:
            wait_after_send(self.testing_controller)
            num_flows_final = len(flow_query.lookup())

        self.assertEqual(num_flows_final - num_flows_start, 0)
コード例 #2
0
ファイル: utils.py プロジェクト: stjordanis/magma-1
 def packet_sender():
     isolators = [
         RyuDirectTableIsolator(
             RyuForwardFlowArgsBuilder.from_subscriber(
                 sub).build_requests(),
             self.testing_controller,
         ) for sub in subs
     ]
     flow_query = FlowQuery(20, self.testing_controller)
     pkt_start = sum(flow.packets for flow in flow_query.lookup())
     with ExitStack() as es:
         for iso in isolators:
             es.enter_context(iso)
         for packet in packets:
             pkt_sender.send(packet, count=count)
         wait_after_send(self.testing_controller)
         pkt_final = sum(flow.packets for flow in flow_query.lookup())
     return pkt_final - pkt_start