tests/test_util_ip.lua
author Matthew Wild <mwild1@gmail.com>
Wed, 30 May 2018 21:55:09 +0100
changeset 8849 7ec098b68042
parent 5776 bd0ff8ae98a8
permissions -rw-r--r--
Merge 0.9->0.10
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5604
6df0ec991f2e tests: Some much-needed cleanup...
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     1
5607
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
     2
function match(match, _M)
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
     3
	local _ = _M.new_ip;
5606
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
     4
	local ip = _"10.20.30.40";
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
     5
	assert_equal(match(ip, _"10.0.0.0", 8), true);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
     6
	assert_equal(match(ip, _"10.0.0.0", 16), false);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
     7
	assert_equal(match(ip, _"10.0.0.0", 24), false);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
     8
	assert_equal(match(ip, _"10.0.0.0", 32), false);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
     9
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    10
	assert_equal(match(ip, _"10.20.0.0", 8), true);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    11
	assert_equal(match(ip, _"10.20.0.0", 16), true);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    12
	assert_equal(match(ip, _"10.20.0.0", 24), false);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    13
	assert_equal(match(ip, _"10.20.0.0", 32), false);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    14
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    15
	assert_equal(match(ip, _"0.0.0.0", 32), false);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    16
	assert_equal(match(ip, _"0.0.0.0", 0), true);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    17
	assert_equal(match(ip, _"0.0.0.0"), false);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    18
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    19
	assert_equal(match(ip, _"10.0.0.0", 255), false, "excessive number of bits");
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    20
	assert_equal(match(ip, _"10.0.0.0", -8), true, "negative number of bits");
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    21
	assert_equal(match(ip, _"10.0.0.0", -32), true, "negative number of bits");
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    22
	assert_equal(match(ip, _"10.0.0.0", 0), true, "zero bits");
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    23
	assert_equal(match(ip, _"10.0.0.0"), false, "no specified number of bits (differing ip)");
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    24
	assert_equal(match(ip, _"10.20.30.40"), true, "no specified number of bits (same ip)");
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    25
5607
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    26
	assert_equal(match(_"127.0.0.1", _"127.0.0.1"), true, "simple ip");
5606
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    27
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    28
	assert_equal(match(_"8.8.8.8", _"8.8.0.0", 16), true);
3dc141acf381 test_util_ip: Add tests for IP matching
Matthew Wild <mwild1@gmail.com>
parents: 5604
diff changeset
    29
	assert_equal(match(_"8.8.4.4", _"8.8.0.0", 16), true);
5604
6df0ec991f2e tests: Some much-needed cleanup...
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    30
end
5607
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    31
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    32
function parse_cidr(parse_cidr, _M)
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    33
	local new_ip = _M.new_ip;
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5607
diff changeset
    34
5607
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    35
	assert_equal(new_ip"0.0.0.0", new_ip"0.0.0.0")
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5607
diff changeset
    36
5607
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    37
	local function assert_cidr(cidr, ip, bits)
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    38
		local parsed_ip, parsed_bits = parse_cidr(cidr);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    39
		assert_equal(new_ip(ip), parsed_ip, cidr.." parsed ip is "..ip);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    40
		assert_equal(bits, parsed_bits, cidr.." parsed bits is "..tostring(bits));
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    41
	end
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    42
	assert_cidr("0.0.0.0", "0.0.0.0", nil);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    43
	assert_cidr("127.0.0.1", "127.0.0.1", nil);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    44
	assert_cidr("127.0.0.1/0", "127.0.0.1", 0);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    45
	assert_cidr("127.0.0.1/8", "127.0.0.1", 8);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    46
	assert_cidr("127.0.0.1/32", "127.0.0.1", 32);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    47
	assert_cidr("127.0.0.1/256", "127.0.0.1", 256);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    48
	assert_cidr("::/48", "::", 48);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    49
end
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    50
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    51
function new_ip(new_ip)
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    52
	local v4, v6 = "IPv4", "IPv6";
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    53
	local function assert_proto(s, proto)
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    54
		local ip = new_ip(s);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    55
		if proto then
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    56
			assert_equal(ip and ip.proto, proto, "protocol is correct for "..("%q"):format(s));
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    57
		else
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    58
			assert_equal(ip, nil, "address is invalid");
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    59
		end
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    60
	end
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    61
	assert_proto("127.0.0.1", v4);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    62
	assert_proto("::1", v6);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    63
	assert_proto("", nil);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    64
	assert_proto("abc", nil);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    65
	assert_proto("   ", nil);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    66
end
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    67
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    68
function commonPrefixLength(cpl, _M)
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    69
	local new_ip = _M.new_ip;
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    70
	local function assert_cpl6(a, b, len, v4)
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    71
		local ipa, ipb = new_ip(a), new_ip(b);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    72
		if v4 then len = len+96; end
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    73
		assert_equal(cpl(ipa, ipb), len, "common prefix length of "..a.." and "..b.." is "..len);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    74
		assert_equal(cpl(ipb, ipa), len, "common prefix length of "..b.." and "..a.." is "..len);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    75
	end
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    76
	local function assert_cpl4(a, b, len)
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    77
		return assert_cpl6(a, b, len, "IPv4");
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    78
	end
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    79
	assert_cpl4("0.0.0.0", "0.0.0.0", 32);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    80
	assert_cpl4("255.255.255.255", "0.0.0.0", 0);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    81
	assert_cpl4("255.255.255.255", "255.255.0.0", 16);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    82
	assert_cpl4("255.255.255.255", "255.255.255.255", 32);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    83
	assert_cpl4("255.255.255.255", "255.255.255.255", 32);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    84
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    85
	assert_cpl6("::1", "::1", 128);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    86
	assert_cpl6("abcd::1", "abcd::1", 128);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    87
	assert_cpl6("abcd::abcd", "abcd::", 112);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    88
	assert_cpl6("abcd::abcd", "abcd::abcd:abcd", 96);
eee23fb79a5e test_util_ip.lua: Add more tests for util.ip
Matthew Wild <mwild1@gmail.com>
parents: 5606
diff changeset
    89
end