예제 #1
0
 def test_get_first_digits_from(self):
     test_ip = '10.0.0.0'
     expected = '10.0.0.'
     assert expected == IPTools.get_first_digits_from(test_ip, 3)
     expected = '10.0.0'
     assert expected == IPTools.get_first_digits_from(test_ip,
                                                      3,
                                                      with_dot=False)
     expected = '10'
     assert expected == IPTools.get_first_digits_from(test_ip,
                                                      1,
                                                      with_dot=False)
     expected = '10.0.0.0'
     assert expected == IPTools.get_first_digits_from(test_ip,
                                                      10,
                                                      with_dot=False)
예제 #2
0
    def test_no_best_candidate_ip_no_gateway(self, monkeypatch):
        def mock_netifaces_ifaddrs(_):
            self.mock_netifaces_counter += 1
            return {
                netifaces.AF_LINK: [{
                    'addr': u'00:e0:4c:68:01:cc'
                }],
                netifaces.AF_INET: [{
                    'broadcast':
                    u'10.0.0.255',
                    'netmask':
                    u'255.255.255.0',
                    'addr':
                    u'65.23.23.{}'.format(self.mock_netifaces_counter)
                }],
                netifaces.AF_INET6: [{
                    'netmask': u'ffff:ffff:ffff:ffff::/64',
                    'flags': 1024,
                    'addr': u'fe80::81a:bbbb:5899:f449%en4'
                }]
            }

        self.mock_netifaces_counter = 1
        monkeypatch.setattr('netifaces.ifaddresses', mock_netifaces_ifaddrs)
        ip_list = IPTools.current_ips()
        interface_ip_count = [
            x + 2 for x in range(len(netifaces.interfaces()))
        ]
        zipped = zip(ip_list, interface_ip_count)
        for ip, count in zipped:
            assert ip == '65.23.23.{}'.format(count)
예제 #3
0
    def test_no_gateway_ip(self, monkeypatch):
        def mock_netifaces_gateways():
            return {}

        monkeypatch.setattr('netifaces.gateways', mock_netifaces_gateways)
        gateway_ip = IPTools.gateway_ip()
        assert not gateway_ip
예제 #4
0
    def test_current_ip(self, monkeypatch):
        def mock_netifaces_ifaddrs(_):
            if self.first_mock_netifaces:
                self.first_mock_netifaces = False
                return {
                    netifaces.AF_LINK: [{
                        'addr': u'00:e0:4c:68:01:cc'
                    }],
                    netifaces.AF_INET: [{
                        'broadcast': u'10.0.0.255',
                        'netmask': u'255.255.255.0',
                        'addr': u'10.0.0.25'
                    }],
                    netifaces.AF_INET6: [{
                        'netmask':
                        u'ffff:ffff:ffff:ffff::/64',
                        'flags':
                        1024,
                        'addr':
                        u'fe80::81a:bbbb:5899:f449%en4'
                    }]
                }
            else:
                return {netifaces.AF_LINK: [{'addr': u'00:e0:4c:68:01:cc'}]}

        self.first_mock_netifaces = True
        monkeypatch.setattr('netifaces.ifaddresses', mock_netifaces_ifaddrs)
        ip_list = IPTools.current_ips()
        assert len(ip_list) == 1
        assert ip_list[0] == '10.0.0.25'
예제 #5
0
    def test_gateway_ip(self, monkeypatch):
        def mock_netifaces_gateways():
            return {
                'default': {
                    2: (u'10.0.0.1', u'en4')
                },
                2: [(u'10.0.0.1', u'en4', True)],
                30: [(u'fe80::%utun0', u'utun0', False)]
            }

        monkeypatch.setattr('netifaces.gateways', mock_netifaces_gateways)
        gateway_ip = IPTools.gateway_ip()
        assert gateway_ip == '10.0.0.1'
예제 #6
0
 def test_get_subnet_from(self):
     test_ip = '127.0.0.1'
     expected = '127.0.0.'
     assert expected == IPTools.get_subnet_from(test_ip)
     expected = '127.0.0.'
     assert expected == IPTools.get_subnet_from(test_ip, with_dot=True)
     expected = '127.0.0'
     assert expected == IPTools.get_subnet_from(test_ip, with_dot=False)
     test_ip = '127.0.0.0.0.0.0.0'
     assert expected == IPTools.get_subnet_from(test_ip, with_dot=False)
     test_ip = '127.0.'
     expected = '127.0'
     assert expected == IPTools.get_subnet_from(test_ip, with_dot=False)
     expected = '127.0.'
     assert expected == IPTools.get_subnet_from(test_ip, with_dot=True)
예제 #7
0
파일: run.py 프로젝트: nawalgupta/pepi
#!/usr/bin/env python

from collections import defaultdict

from app import app
import heartbeater
from server import IPTools

app.heartbeater = heartbeater.Heartbeater(min_interval=5,
                                          base_ip=IPTools.get_subnet_from(
                                              IPTools.current_ips()[0]))
app.heartbeater.start()
app.server_data = defaultdict(list)
app.capture_no = 1
app.run(debug=False, host="0.0.0.0")
예제 #8
0
    def test_current_ips_without_gateway(self, monkeypatch):
        def mock_netifaces_gateways():
            return {}

        def mock_netifaces_ifaddrs(_):
            if self.first_mock_netifaces:
                self.first_mock_netifaces = False
                return {
                    netifaces.AF_LINK: [{
                        'addr': u'00:e0:4c:68:01:cc'
                    }],
                    netifaces.AF_INET: [{
                        'broadcast': u'10.0.0.255',
                        'netmask': u'255.255.255.0',
                        'addr': u'127.0.0.1'
                    }],
                    netifaces.AF_INET6: [{
                        'netmask':
                        u'ffff:ffff:ffff:ffff::/64',
                        'flags':
                        1024,
                        'addr':
                        u'fe80::81a:bbbb:5899:f449%en4'
                    }]
                }
            else:
                self.mock_netifaces_counter += 1
                return {
                    netifaces.AF_LINK: [{
                        'addr': u'00:e0:4c:68:01:cc'
                    }],
                    netifaces.AF_INET: [{
                        'broadcast':
                        u'10.0.0.255',
                        'netmask':
                        u'255.255.255.0',
                        'addr':
                        u'10.0.0.{}'.format(self.mock_netifaces_counter)
                    }],
                    netifaces.AF_INET6: [{
                        'netmask':
                        u'ffff:ffff:ffff:ffff::/64',
                        'flags':
                        1024,
                        'addr':
                        u'fe80::81a:bbbb:5899:f449%en4'
                    }]
                }

        self.first_mock_netifaces = True
        self.mock_netifaces_counter = 1
        monkeypatch.setattr('netifaces.gateways', mock_netifaces_gateways)
        monkeypatch.setattr('netifaces.ifaddresses', mock_netifaces_ifaddrs)
        ip_list = IPTools.current_ips()
        interface_ip_count = [
            x + 2 for x in range(len(netifaces.interfaces()))
        ]

        assert '127.0.0.1' not in ip_list
        zipped = zip(ip_list, interface_ip_count)
        for ip, count in zipped:
            assert ip == '10.0.0.{}'.format(count)