def test_021_severely_limited_udp(self):
        global app, app_web_filter, wan_limit_mbit
        # only use 30% because QoS will limit to 10% and we want to make sure it takes effect
        # really high levels will actually be limited by the untangle-vm throughput instead of QoS
        # which can interfere with the test
        targetSpeedMbit = str(wan_limit_mbit*.3)+"M"
        if runtests.quick_tests_only:
            raise unittest.SkipTest('Skipping a time consuming test')
        # We will use iperf server and iperf for this test.
        wan_IP = uvmContext.networkManager().getFirstWanAddress()
        iperfAvailable = global_functions.verify_iperf_configuration(wan_IP)
        if (not iperfAvailable):
            raise unittest.SkipTest("Iperf server and/or iperf not available, skipping alternate port forwarding test")
        # Enabled QoS
        netsettings = uvmContext.networkManager().getNetworkSettings()
        nuke_rules()

        append_rule(create_single_condition_rule("DST_PORT","5000","SET_PRIORITY",1))
            
        pre_UDP_speed = global_functions.get_udp_download_speed( receiverip=global_functions.iperf_server, senderip=remote_control.client_ip, targetRate=targetSpeedMbit )

        # Create DST_PORT based rule to limit bandwidth
        nuke_rules()
        append_rule(create_single_condition_rule("DST_PORT","5000","SET_PRIORITY",7))

        post_UDP_speed = global_functions.get_udp_download_speed( receiverip=global_functions.iperf_server, senderip=remote_control.client_ip, targetRate=targetSpeedMbit )

        print_results( pre_UDP_speed, post_UDP_speed, (wan_limit_kbit/8)*0.1, pre_UDP_speed*.9 )
        assert (post_UDP_speed < pre_UDP_speed*.9)
    def test_014_qos_bypass_custom_rules_udp(self):
        global wan_limit_mbit
        targetSpeedMbit = str(wan_limit_mbit)+"M"
        if runtests.quick_tests_only:
            raise unittest.SkipTest('Skipping a time consuming test')
        # We will use iperf server and iperf for this test.
        wan_IP = uvmContext.networkManager().getFirstWanAddress()
        iperfAvailable = global_functions.verify_iperf_configuration(wan_IP)
        if (not iperfAvailable):
            raise unittest.SkipTest("Iperf server and/or iperf not available")

        netsettings = uvmContext.networkManager().getNetworkSettings()
        netsettings['bypassRules']['list'].append( create_bypass_condition_rule("DST_PORT","5000") )
        netsettings['qosSettings']['qosRules']["list"].append( create_qos_custom_rule("DST_PORT","5000", 1) )
        uvmContext.networkManager().setNetworkSettings( netsettings )

        pre_UDP_speed = global_functions.get_udp_download_speed( receiverip=global_functions.iperf_server, senderip=remote_control.client_ip, targetRate=targetSpeedMbit )

        netsettings['qosSettings']['qosRules']['list'] = []
        netsettings['qosSettings']['qosRules']["list"].append( create_qos_custom_rule("DST_PORT","5000", 7) )
        uvmContext.networkManager().setNetworkSettings( netsettings )

        post_UDP_speed = global_functions.get_udp_download_speed( receiverip=global_functions.iperf_server, senderip=remote_control.client_ip, targetRate=targetSpeedMbit )
        
        # Restore original network settings

        uvmContext.networkManager().setNetworkSettings( orig_network_settings_with_qos )

        print_results( pre_UDP_speed, post_UDP_speed, (wan_limit_kbit/8)*0.1, pre_UDP_speed*.9 )
        assert (post_UDP_speed < pre_UDP_speed*.9)
예제 #3
0
    def test_021_severely_limited_udp(self):
        global wan_limit_mbit

        # severely limited means 10% of wan download bandwidth
        expectedSpeedMbit = wan_limit_mbit * .1

        # a udp iperf test will fail if it loses more than 40% of sent
        # packets, so make sure expectedSpeedMbit is a little less than
        # 60% of targetSpeedMbit
        targetSpeedMbit = str(expectedSpeedMbit * 1.6) + "M"
        if runtests.quick_tests_only:
            raise unittest.SkipTest('Skipping a time consuming test')
        # We will use iperf server and iperf for this test.
        wan_IP = uvmContext.networkManager().getFirstWanAddress()
        iperfAvailable = global_functions.verify_iperf_configuration(wan_IP)
        if (not iperfAvailable):
            raise unittest.SkipTest(
                "Iperf server and/or iperf not available, skipping alternate port forwarding test"
            )
        # Enabled QoS
        netsettings = uvmContext.networkManager().getNetworkSettings()
        nuke_rules(self._app)

        append_rule(
            self._app,
            create_single_condition_rule("DST_PORT", "5000", "SET_PRIORITY",
                                         1))

        pre_UDP_speed = global_functions.get_udp_download_speed(
            receiverip=global_functions.iperf_server,
            senderip=remote_control.client_ip,
            targetRate=targetSpeedMbit)

        # Create DST_PORT based rule to limit bandwidth
        nuke_rules(self._app)
        append_rule(
            self._app,
            create_single_condition_rule("DST_PORT", "5000", "SET_PRIORITY",
                                         7))

        post_UDP_speed = global_functions.get_udp_download_speed(
            receiverip=global_functions.iperf_server,
            senderip=remote_control.client_ip,
            targetRate=targetSpeedMbit)

        print_results(pre_UDP_speed, post_UDP_speed,
                      (wan_limit_kbit / 8) * 0.1, pre_UDP_speed * .9)
        assert (pre_UDP_speed != 0)
        assert (post_UDP_speed != 0)
        assert (post_UDP_speed < pre_UDP_speed * .9)