diff options
author | kali <kali@leap.se> | 2012-10-08 07:57:42 +0900 |
---|---|---|
committer | kali <kali@leap.se> | 2012-10-08 07:57:42 +0900 |
commit | 4d195cd5b6e6600ccf0df78946cab6038a1fcaec (patch) | |
tree | 1362b2844f7e008cad8c29f26861566129af6edd /src/leap/eip | |
parent | 3a77603eae5fea0b1efb226860e0264ccf96f41b (diff) | |
parent | 6728eb9afb21bad867e4052a6190a9bdb34c928a (diff) |
Merge branch 'feature/network_check' into develop
Conflicts:
src/leap/baseapp/mainwindow.py
src/leap/eip/tests/test_checks.py
Diffstat (limited to 'src/leap/eip')
-rw-r--r-- | src/leap/eip/checks.py | 83 | ||||
-rw-r--r-- | src/leap/eip/exceptions.py | 17 | ||||
-rw-r--r-- | src/leap/eip/tests/test_checks.py | 61 |
3 files changed, 4 insertions, 157 deletions
diff --git a/src/leap/eip/checks.py b/src/leap/eip/checks.py index 413a3467..f739c3e8 100644 --- a/src/leap/eip/checks.py +++ b/src/leap/eip/checks.py @@ -1,12 +1,12 @@ import logging import ssl -import platform +#import platform import time import os from gnutls import crypto -import netifaces -import ping +#import netifaces +#import ping import requests from leap import __branding as BRANDING @@ -39,10 +39,6 @@ into base.tests to be invoked by the base leap init routines. However, I'm testing them alltogether for the sake of having the whole unit reachable and testable as a whole. -LeapNetworkChecker ------------------- -Network checks. To be moved to base. -docs TBD """ @@ -52,79 +48,6 @@ def get_ca_cert(): return certs.where(ca_file) -class LeapNetworkChecker(object): - """ - all network related checks - """ - # XXX to be moved to leap.base.checks - # TODO eventually, use a more portable solution - # like psutil - - def run_all(self, checker=None): - if not checker: - checker = self - self.error = None # ? - - # for MVS - checker.test_internet_connection() - checker.is_internet_up() - checker.ping_gateway() - - def test_internet_connection(self): - # XXX we're not passing the error anywhere. - # XXX we probably should raise an exception here? - # unless we use this as smoke test - try: - # XXX remove this hardcoded random ip - requests.get('http://216.172.161.165') - except (requests.HTTPError, requests.RequestException) as e: - self.error = e.message - except requests.ConenctionError as e: - if e.message == "[Errno 113] No route to host": - if not self.is_internet_up(): - self.error = "No valid internet connection found." - else: - self.error = "Provider server appears to be down." - - def is_internet_up(self): - iface, gateway = self.get_default_interface_gateway() - self.ping_gateway(self) - - def get_default_interface_gateway(self): - """only impletemented for linux so far.""" - if not platform.system() == "Linux": - raise NotImplementedError - - f = open("/proc/net/route") - route_table = f.readlines() - f.close() - #toss out header - route_table.pop(0) - - default_iface = None - gateway = None - while route_table: - line = route_table.pop(0) - iface, destination, gateway = line.split('\t')[0:3] - if destination == '00000000': - default_iface = iface - break - - if not default_iface: - raise eipexceptions.NoDefaultInterfaceFoundError - - if default_iface not in netifaces.interfaces(): - raise eipexceptions.InterfaceNotFoundError - - return default_iface, gateway - - def ping_gateway(self, gateway): - #TODO: Discuss how much packet loss (%) is acceptable. - packet_loss = ping.quiet_ping(gateway)[0] - if packet_loss > baseconstants.MAX_ICMP_PACKET_LOSS: - raise eipexceptions.NoConnectionToGateway - - class ProviderCertChecker(object): """ Several checks needed for getting diff --git a/src/leap/eip/exceptions.py b/src/leap/eip/exceptions.py index a6216caa..11bfd620 100644 --- a/src/leap/eip/exceptions.py +++ b/src/leap/eip/exceptions.py @@ -28,7 +28,6 @@ TODO: * EIPClientError: Should inherit from LeapException - and move basic attrs there * gettext / i18n for user messages. @@ -128,22 +127,6 @@ class EIPInitBadProviderError(EIPClientError): class EIPConfigurationError(EIPClientError): pass - -class NoDefaultInterfaceFoundError(EIPClientError): - message = "no default interface found" - usermessage = "Looks like your computer is not connected to the internet" - - -class InterfaceNotFoundError(EIPClientError): - # XXX should take iface arg on init maybe? - message = "interface not found" - - -class NoConnectionToGateway(EIPClientError): - message = "no connection to gateway" - usermessage = "Looks like there are problems with your internet connection" - - # # Errors that probably we don't need anymore # chase down for them and check. diff --git a/src/leap/eip/tests/test_checks.py b/src/leap/eip/tests/test_checks.py index 582dcb84..58ce473f 100644 --- a/src/leap/eip/tests/test_checks.py +++ b/src/leap/eip/tests/test_checks.py @@ -9,11 +9,10 @@ import os import time import urlparse -from StringIO import StringIO from mock import (patch, Mock) import jsonschema -import ping +#import ping import requests from leap.base import config as baseconfig @@ -27,8 +26,6 @@ from leap.testing.basetest import BaseLeapTest from leap.testing.https_server import BaseHTTPSServerTestCase from leap.testing.https_server import where as where_cert -_uid = os.getuid() - class NoLogRequestHandler: def log_message(self, *args): @@ -39,60 +36,6 @@ class NoLogRequestHandler: return '' -class LeapNetworkCheckTest(BaseLeapTest): - # XXX to be moved to base.checks - - __name__ = "leap_network_check_tests" - - def setUp(self): - pass - - def tearDown(self): - pass - - def test_checker_should_implement_check_methods(self): - checker = eipchecks.LeapNetworkChecker() - - self.assertTrue(hasattr(checker, "test_internet_connection"), - "missing meth") - self.assertTrue(hasattr(checker, "is_internet_up"), - "missing meth") - self.assertTrue(hasattr(checker, "ping_gateway"), - "missing meth") - - def test_checker_should_actually_call_all_tests(self): - checker = eipchecks.LeapNetworkChecker() - - mc = Mock() - checker.run_all(checker=mc) - self.assertTrue(mc.test_internet_connection.called, "not called") - self.assertTrue(mc.ping_gateway.called, "not called") - self.assertTrue(mc.is_internet_up.called, - "not called") - - def test_get_default_interface_no_interface(self): - checker = eipchecks.LeapNetworkChecker() - with patch('leap.eip.checks.open', create=True) as mock_open: - with self.assertRaises(eipexceptions.NoDefaultInterfaceFoundError): - mock_open.return_value = StringIO( - "Iface\tDestination Gateway\t" - "Flags\tRefCntd\tUse\tMetric\t" - "Mask\tMTU\tWindow\tIRTT") - checker.get_default_interface_gateway() - - def test_ping_gateway_fail(self): - checker = eipchecks.LeapNetworkChecker() - with patch.object(ping, "quiet_ping") as mocked_ping: - with self.assertRaises(eipexceptions.NoConnectionToGateway): - mocked_ping.return_value = [11, "", ""] - checker.ping_gateway("4.2.2.2") - - @unittest.skipUnless(_uid == 0, "root only") - def test_ping_gateway(self): - checker = eipchecks.LeapNetworkChecker() - checker.ping_gateway("4.2.2.2") - - class EIPCheckTest(BaseLeapTest): __name__ = "eip_check_tests" @@ -132,8 +75,6 @@ class EIPCheckTest(BaseLeapTest): "not called") self.assertTrue(mc.check_complete_eip_config.called, "not called") - #self.assertTrue(mc.ping_gateway.called, - #"not called") # test individual check methods |