Пример #1
0
def rows():
    return [
        Row(
            datatypes.datetime('2002-06-24 16:40:23'),
            datatypes.address('172.224.24.114'),
            'POST',
            datatypes.url('/Default.htm'),
            0.67,
            200,
            7930,
            ),
        Row(
            datatypes.datetime('2002-05-02 20:18:01'),
            datatypes.address('172.22.255.255'),
            'GET',
            datatypes.url('/images/picture.jpg'),
            0.1,
            302,
            16328,
            ),
        Row(
            datatypes.datetime('2002-05-29 12:34:56'),
            datatypes.address('9.180.235.203'),
            'HEAD',
            datatypes.url('/images/picture.jpg'),
            0.1,
            202,
            None,
            ),
        ]
Пример #2
0
def test_address_geoip_isp():
    with mock.patch('lars.geoip._GEOIP_IPV4_ISP') as mock_db:
        mock_db.org_by_addr.return_value = 'Internet 404'
        assert dt.address('127.0.0.1').isp == 'Internet 404'
    with mock.patch('lars.geoip._GEOIP_IPV6_ISP') as mock_db:
        mock_db.org_by_addr.return_value = 'Internet 404'
        assert dt.address('::1').isp == 'Internet 404'
Пример #3
0
def test_address_geoip_countries():
    with mock.patch('lars.geoip._GEOIP_IPV4_GEO') as mock_db:
        mock_db.country_code_by_addr.return_value = 'AA'
        assert dt.address('127.0.0.1').country == 'AA'
    with mock.patch('lars.geoip._GEOIP_IPV6_GEO') as mock_db:
        mock_db.country_code_by_addr.return_value = 'BB'
        assert dt.address('::1').country == 'BB'
Пример #4
0
def test_address_geoip_isp():
    with mock.patch('lars.geoip._GEOIP_IPV4_ISP') as mock_db:
        mock_db.org_by_addr.return_value = 'Internet 404'
        assert dt.address('127.0.0.1').isp == 'Internet 404'
    with mock.patch('lars.geoip._GEOIP_IPV6_ISP') as mock_db:
        mock_db.org_by_addr.return_value = 'Internet 404'
        assert dt.address('::1').isp == 'Internet 404'
Пример #5
0
def test_address_geoip_org():
    with mock.patch('lars.geoip._GEOIP_IPV4_ORG') as mock_db:
        mock_db.org_by_addr.return_value = 'Acme Inc.'
        assert dt.address('127.0.0.1').org == 'Acme Inc.'
    with mock.patch('lars.geoip._GEOIP_IPV6_ORG') as mock_db:
        mock_db.org_by_addr.return_value = 'Acme Inc.'
        assert dt.address('::1').org == 'Acme Inc.'
Пример #6
0
def test_address_geoip_countries():
    with mock.patch('lars.geoip._GEOIP_IPV4_GEO') as mock_db:
        mock_db.country_code_by_addr.return_value = 'AA'
        assert dt.address('127.0.0.1').country == 'AA'
    with mock.patch('lars.geoip._GEOIP_IPV6_GEO') as mock_db:
        mock_db.country_code_by_addr.return_value = 'BB'
        assert dt.address('::1').country == 'BB'
Пример #7
0
def test_address_geoip_org():
    with mock.patch('lars.geoip._GEOIP_IPV4_ORG') as mock_db:
        mock_db.org_by_addr.return_value = 'Acme Inc.'
        assert dt.address('127.0.0.1').org == 'Acme Inc.'
    with mock.patch('lars.geoip._GEOIP_IPV6_ORG') as mock_db:
        mock_db.org_by_addr.return_value = 'Acme Inc.'
        assert dt.address('::1').org == 'Acme Inc.'
Пример #8
0
def rows():
    # Construct some test rows with appropriate namedtuples
    Row = namedtuple('Row', (
        'timestamp', 'client', 'method', 'url', 'time_taken', 'status',
        'size',
        ))
    return [
        Row(
            datatypes.datetime('2002-06-24 16:40:23'),
            datatypes.address('172.224.24.114'),
            'POST',
            datatypes.url('/Default.htm'),
            0.67,
            200,
            7930,
            ),
        Row(
            datatypes.datetime('2002-05-02 20:18:01'),
            datatypes.address('172.22.255.255'),
            'GET',
            datatypes.url('/images/picture.jpg'),
            0.1,
            302,
            16328,
            ),
        Row(
            datatypes.datetime('2002-05-29 12:34:56'),
            datatypes.address('9.180.235.203'),
            'HEAD',
            datatypes.url('/images/picture.jpg'),
            0.1,
            202,
            None,
            ),
        ]
Пример #9
0
def rows_null_first():
    return [
        Row(
            datatypes.datetime('2002-06-24 16:40:23'),
            datatypes.address('172.224.24.114'),
            None,
            None,
            0.01,
            408,
            0,
            ),
        Row(
            datatypes.datetime('2002-05-02 20:18:01'),
            datatypes.address('172.22.255.255'),
            'GET',
            datatypes.url('/images/picture.jpg'),
            0.1,
            302,
            16328,
            ),
        Row(
            datatypes.datetime('2002-05-29 12:34:56'),
            datatypes.address('9.180.235.203'),
            'HEAD',
            datatypes.url('/images/picture.jpg'),
            0.1,
            202,
            None,
            ),
        ]
Пример #10
0
def test_address_ipv6():
    assert dt.address('::1') == dt.IPv6Address('::1')
    assert dt.address('[::1]') == dt.IPv6Port('::1')
    assert dt.address('[::1]:80') == dt.IPv6Port('[::1]:80')
    assert dt.address('2001:0db8:85a3:0000:0000:8a2e:0370:7334') == dt.IPv6Address('2001:db8:85a3::8a2e:370:7334')
    assert dt.address('[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:22') == dt.IPv6Port('[2001:db8:85a3::8a2e:370:7334]:22')
    assert dt.address('[fe80::7334]:22') == dt.IPv6Port('[fe80::7334]:22')
    with pytest.raises(ValueError):
        dt.address('[::1]:100000')
Пример #11
0
def test_address_ipv4():
    assert dt.address('127.0.0.1') == dt.IPv4Address('127.0.0.1')
    assert dt.address(b'127.0.0.1:80') == dt.IPv4Port('127.0.0.1:80')
    with pytest.raises(ValueError):
        dt.address('abc')
    with pytest.raises(ValueError):
        dt.address('google.com')
    with pytest.raises(ValueError):
        dt.address('127.0.0.1:100000')
Пример #12
0
def test_address_ipv4():
    assert dt.address('127.0.0.1') == dt.IPv4Address('127.0.0.1')
    assert dt.address(b'127.0.0.1:80') == dt.IPv4Port('127.0.0.1:80')
    with pytest.raises(ValueError):
        dt.address('abc')
    with pytest.raises(ValueError):
        dt.address('google.com')
    with pytest.raises(ValueError):
        dt.address('127.0.0.1:100000')
Пример #13
0
def address_parse(s):
    """
    Parse an IPv4 or IPv6 address (and optional port) in a log file.

    :param str s: The string containing the address to parse
    :returns: A :class:`~lars.datatypes.IPv4Address` value
    """
    return dt.address(s) if s != '-' else None
Пример #14
0
def test_address_ipv6():
    assert dt.address('::1') == dt.IPv6Address('::1')
    assert dt.address('[::1]') == dt.IPv6Port('::1')
    assert dt.address('[::1]:80') == dt.IPv6Port('[::1]:80')
    assert dt.address('2001:0db8:85a3:0000:0000:8a2e:0370:7334'
                      ) == dt.IPv6Address('2001:db8:85a3::8a2e:370:7334')
    assert dt.address('[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:22'
                      ) == dt.IPv6Port('[2001:db8:85a3::8a2e:370:7334]:22')
    assert dt.address('[fe80::7334]:22') == dt.IPv6Port('[fe80::7334]:22')
    with pytest.raises(ValueError):
        dt.address('[::1]:100000')
Пример #15
0
def test_address_geoip_cities():
    with mock.patch('lars.geoip._GEOIP_IPV4_GEO') as mock_db:
        mock_db.region_by_addr.return_value = {'region_name': 'AA'}
        assert dt.address('127.0.0.1').region == 'AA'
        mock_db.record_by_addr.return_value = {'city': 'Timbuktu'}
        assert dt.address('127.0.0.1').city == 'Timbuktu'
        mock_db.record_by_addr.return_value = {'longitude': 1, 'latitude': 2}
        assert dt.address('127.0.0.1').coords == geoip.GeoCoord(1, 2)
        mock_db.record_by_addr.return_value = None
        assert dt.address('127.0.0.1').city is None
        assert dt.address('127.0.0.1').coords is None
    with mock.patch('lars.geoip._GEOIP_IPV6_GEO') as mock_db:
        mock_db.region_by_addr.return_value = {'region_name': 'BB'}
        assert dt.address('::1').region == 'BB'
        mock_db.record_by_addr.return_value = {'city': 'Transylvania'}
        assert dt.address('::1').city == 'Transylvania'
        mock_db.record_by_addr.return_value = {'longitude': 3, 'latitude': 4}
        assert dt.address('::1').coords == geoip.GeoCoord(3, 4)
        mock_db.record_by_addr.return_value = None
        assert dt.address('::1').city is None
        assert dt.address('::1').coords is None
Пример #16
0
def test_address_geoip_cities():
    with mock.patch('lars.geoip._GEOIP_IPV4_GEO') as mock_db:
        mock_db.region_by_addr.return_value = {'region_name': 'AA'}
        assert dt.address('127.0.0.1').region == 'AA'
        mock_db.record_by_addr.return_value = {'city': 'Timbuktu'}
        assert dt.address('127.0.0.1').city == 'Timbuktu'
        mock_db.record_by_addr.return_value = {'longitude': 1, 'latitude': 2}
        assert dt.address('127.0.0.1').coords == geoip.GeoCoord(1, 2)
        mock_db.record_by_addr.return_value = None
        assert dt.address('127.0.0.1').city is None
        assert dt.address('127.0.0.1').coords is None
    with mock.patch('lars.geoip._GEOIP_IPV6_GEO') as mock_db:
        mock_db.region_by_addr.return_value = {'region_name': 'BB'}
        assert dt.address('::1').region == 'BB'
        mock_db.record_by_addr.return_value = {'city': 'Transylvania'}
        assert dt.address('::1').city == 'Transylvania'
        mock_db.record_by_addr.return_value = {'longitude': 3, 'latitude': 4}
        assert dt.address('::1').coords == geoip.GeoCoord(3, 4)
        mock_db.record_by_addr.return_value = None
        assert dt.address('::1').city is None
        assert dt.address('::1').coords is None
Пример #17
0
def rows():
    # Construct some test rows with appropriate namedtuples
    Row = namedtuple('Row', (
        'timestamp',
        'client',
        'method',
        'url',
        'time_taken',
        'status',
        'size',
    ))
    return [
        Row(
            datatypes.datetime('2002-06-24 16:40:23'),
            datatypes.address('172.224.24.114'),
            'POST',
            datatypes.url('/Default.htm'),
            0.67,
            200,
            7930,
        ),
        Row(
            datatypes.datetime('2002-05-02 20:18:01'),
            datatypes.address('172.22.255.255'),
            'GET',
            datatypes.url('/images/picture.jpg'),
            0.1,
            302,
            16328,
        ),
        Row(
            datatypes.datetime('2002-05-29 12:34:56'),
            datatypes.address('9.180.235.203'),
            'HEAD',
            datatypes.url('/images/picture.jpg'),
            0.1,
            202,
            None,
        ),
    ]
Пример #18
0
def test_resolving():
    assert dt.hostname('localhost').address == dt.IPv4Address('127.0.0.1')
    # This is a bit of a hack; largely depends on the system that's running the
    # tests whether these work or not (localhost can be called all sorts of
    # things) but the values below work for vanilla Ubuntu hosts and Travis
    # CI's VMs
    assert dt.hostname('localhost').address.hostname in (
        dt.hostname('localhost'),
        dt.hostname('localhost.localdomain'),
    )
    assert dt.hostname('test.invalid').address is None
    assert dt.address('127.0.0.1').hostname in (
        dt.hostname('localhost'),
        dt.hostname('localhost.localdomain'),
    )
Пример #19
0
def test_resolving():
    assert dt.hostname('localhost').address == dt.IPv4Address('127.0.0.1')
    # This is a bit of a hack; largely depends on the system that's running the
    # tests whether these work or not (localhost can be called all sorts of
    # things) but the values below work for vanilla Ubuntu hosts and Travis
    # CI's VMs
    assert dt.hostname('localhost').address.hostname in (
            dt.hostname('localhost'),
            dt.hostname('localhost.localdomain'),
            )
    assert dt.hostname('test.invalid').address is None
    assert dt.address('127.0.0.1').hostname in (
            dt.hostname('localhost'),
            dt.hostname('localhost.localdomain'),
            )
Пример #20
0
def test_url():
    assert dt.url('foo') == dt.Url('', '', 'foo', '', '', '')
    assert dt.url('//foo/bar') == dt.Url('', 'foo', '/bar', '', '', '')
    assert dt.url('http://foo/') == dt.Url('http', 'foo', '/', '', '', '')
    assert dt.url('http://foo/bar?baz=quux') == dt.Url('http', 'foo', '/bar', '', 'baz=quux', '')
    assert dt.url('https://foo/bar#baz') == dt.Url('https', 'foo', '/bar', '', '', 'baz')
    u = dt.url('http://localhost/foo/bar#baz')
    assert u.scheme == 'http'
    assert u.netloc == 'localhost'
    assert u.path == dt.Path('/foo', 'bar', '')
    assert u.path_str == '/foo/bar'
    assert u.fragment == 'baz'
    assert u.username is None
    assert u.password is None
    assert u.port is None
    assert u.hostname == dt.hostname('localhost')
    assert u.hostname.address == dt.address('127.0.0.1')
Пример #21
0
def test_url():
    assert dt.url('foo') == dt.Url('', '', 'foo', '', '', '')
    assert dt.url('//foo/bar') == dt.Url('', 'foo', '/bar', '', '', '')
    assert dt.url('http://foo/') == dt.Url('http', 'foo', '/', '', '', '')
    assert dt.url('http://foo/bar?baz=quux') == dt.Url('http', 'foo', '/bar',
                                                       '', 'baz=quux', '')
    assert dt.url('https://foo/bar#baz') == dt.Url('https', 'foo', '/bar', '',
                                                   '', 'baz')
    u = dt.url('http://localhost/foo/bar#baz')
    assert u.scheme == 'http'
    assert u.netloc == 'localhost'
    assert u.path == dt.Path('/foo', 'bar', '')
    assert u.path_str == '/foo/bar'
    assert u.fragment == 'baz'
    assert u.username is None
    assert u.password is None
    assert u.port is None
    assert u.hostname == dt.hostname('localhost')
    assert u.hostname.address == dt.address('127.0.0.1')
Пример #22
0
def test_address_port_manipulation():
    addr = dt.address('127.0.0.1:80')
    assert str(addr) == '127.0.0.1:80'
    addr.port = None
    assert str(addr) == '127.0.0.1'
Пример #23
0
def test_address():
    with mock.patch('lars.dns.from_address') as from_address:
        from_address.return_value = '0.0.0.0'
        assert dt.address('0.0.0.0').hostname is None
        from_address.return_value = '::'
        assert dt.address('::').hostname is None
Пример #24
0
def test_address():
    with mock.patch('lars.dns.from_address') as from_address:
        from_address.return_value = '0.0.0.0'
        assert dt.address('0.0.0.0').hostname is None
        from_address.return_value = '::'
        assert dt.address('::').hostname is None
Пример #25
0
def test_address_port_manipulation():
    addr = dt.address('127.0.0.1:80')
    assert str(addr) == '127.0.0.1:80'
    addr.port = None
    assert str(addr) == '127.0.0.1'