Coverage for tld/tests/base.py: 91%

47 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-05-27 05:40 +0000

1# -*- coding: utf-8 -*- 

2 

3import logging 

4import socket 

5from functools import lru_cache 

6 

7__author__ = "Artur Barseghyan" 

8__copyright__ = "2013-2023 Artur Barseghyan" 

9__license__ = "MPL-1.1 OR GPL-2.0-only OR LGPL-2.1-or-later" 

10__all__ = ( 

11 "internet_available_only", 

12 "log_info", 

13) 

14 

15LOG_INFO = True 

16LOGGER = logging.getLogger(__name__) 

17 

18 

19def log_info(func): 

20 """Log some useful info.""" 

21 if not LOG_INFO: 

22 return func 

23 

24 def inner(self, *args, **kwargs): 

25 """Inner.""" 

26 result = func(self, *args, **kwargs) 

27 

28 LOGGER.debug("\n\n%s", func.__name__) 

29 LOGGER.debug("============================") 

30 if func.__doc__: 

31 LOGGER.debug('""" %s """', func.__doc__.strip()) 

32 LOGGER.debug("----------------------------") 

33 if result is not None: 

34 LOGGER.debug(result) 

35 LOGGER.debug("\n++++++++++++++++++++++++++++") 

36 

37 return result 

38 

39 return inner 

40 

41 

42@lru_cache(maxsize=32) 

43def is_internet_available(host="8.8.8.8", port=53, timeout=3): 

44 """Check if internet is available. 

45 

46 Host: 8.8.8.8 (google-public-dns-a.google.com) 

47 OpenPort: 53/tcp 

48 Service: domain (DNS/TCP) 

49 """ 

50 try: 

51 socket.setdefaulttimeout(timeout) 

52 socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port)) 

53 return True 

54 except socket.error as ex: 

55 print(ex) 

56 return False 

57 

58 

59def internet_available_only(func): 

60 def inner(self, *args, **kwargs): 

61 """Inner.""" 

62 if not is_internet_available(): 

63 LOGGER.debug("\n\n%s", func.__name__) 

64 LOGGER.debug("============================") 

65 if func.__doc__: 

66 LOGGER.debug('""" %s """', func.__doc__.strip()) 

67 LOGGER.debug("----------------------------") 

68 LOGGER.debug("Skipping because no Internet connection available.") 

69 LOGGER.debug("\n++++++++++++++++++++++++++++") 

70 return None 

71 

72 result = func(self, *args, **kwargs) 

73 return result 

74 

75 return inner