summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Karpilovskij <mark.karpilovskij@nic.cz>2019-02-25 13:34:12 +0100
committerMark Karpilovskij <mark.karpilovskij@nic.cz>2019-02-25 16:05:33 +0100
commit32f517c0668ddb22ded04a349633c609a1ba8a0c (patch)
tree8b60987a8b61b8027908c63851c27622c9c514e8
parenttest-extra: add test for re-signing with changed NSEC3 parameters (diff)
downloadknot-32f517c0668ddb22ded04a349633c609a1ba8a0c.tar.xz
knot-32f517c0668ddb22ded04a349633c609a1ba8a0c.zip
tests-extra: extend modules/geoip test
-rw-r--r--tests-extra/tests/modules/geoip/data/geo.conf501
-rw-r--r--tests-extra/tests/modules/geoip/test.py65
2 files changed, 62 insertions, 504 deletions
diff --git a/tests-extra/tests/modules/geoip/data/geo.conf b/tests-extra/tests/modules/geoip/data/geo.conf
deleted file mode 100644
index 67c5bdee2..000000000
--- a/tests-extra/tests/modules/geoip/data/geo.conf
+++ /dev/null
@@ -1,501 +0,0 @@
-foo.example.com:
- - geo: "AD;1"
- A: 127.255.1.0
- - geo: "AE;2"
- A: 127.255.2.0
- - geo: "AF;3"
- A: 127.255.3.0
- - geo: "AG;4"
- A: 127.255.4.0
- - geo: "AI;5"
- A: 127.255.5.0
- - geo: "AL;6"
- A: 127.255.6.0
- - geo: "AM;7"
- A: 127.255.7.0
- - geo: "AO;8"
- A: 127.255.8.0
- - geo: "AQ;9"
- A: 127.255.9.0
- - geo: "AR;10"
- A: 127.255.10.0
- - geo: "AS;11"
- A: 127.255.11.0
- - geo: "AT;12"
- A: 127.255.12.0
- - geo: "AU;13"
- A: 127.255.13.0
- - geo: "AW;14"
- A: 127.255.14.0
- - geo: "AX;15"
- A: 127.255.15.0
- - geo: "AZ;16"
- A: 127.255.16.0
- - geo: "BA;17"
- A: 127.255.17.0
- - geo: "BB;18"
- A: 127.255.18.0
- - geo: "BD;19"
- A: 127.255.19.0
- - geo: "BE;20"
- A: 127.255.20.0
- - geo: "BF;21"
- A: 127.255.21.0
- - geo: "BG;22"
- A: 127.255.22.0
- - geo: "BH;23"
- A: 127.255.23.0
- - geo: "BI;24"
- A: 127.255.24.0
- - geo: "BJ;25"
- A: 127.255.25.0
- - geo: "BL;26"
- A: 127.255.26.0
- - geo: "BM;27"
- A: 127.255.27.0
- - geo: "BN;28"
- A: 127.255.28.0
- - geo: "BO;29"
- A: 127.255.29.0
- - geo: "BQ;30"
- A: 127.255.30.0
- - geo: "BQ;31"
- A: 127.255.31.0
- - geo: "BR;32"
- A: 127.255.32.0
- - geo: "BS;33"
- A: 127.255.33.0
- - geo: "BT;34"
- A: 127.255.34.0
- - geo: "BV;35"
- A: 127.255.35.0
- - geo: "BW;36"
- A: 127.255.36.0
- - geo: "BY;37"
- A: 127.255.37.0
- - geo: "BZ;38"
- A: 127.255.38.0
- - geo: "CA;39"
- A: 127.255.39.0
- - geo: "CC;40"
- A: 127.255.40.0
- - geo: "CD;41"
- A: 127.255.41.0
- - geo: "CF;42"
- A: 127.255.42.0
- - geo: "CG;43"
- A: 127.255.43.0
- - geo: "CH;44"
- A: 127.255.44.0
- - geo: "CI;45"
- A: 127.255.45.0
- - geo: "CK;46"
- A: 127.255.46.0
- - geo: "CL;47"
- A: 127.255.47.0
- - geo: "CM;48"
- A: 127.255.48.0
- - geo: "CN;49"
- A: 127.255.49.0
- - geo: "CO;50"
- A: 127.255.50.0
- - geo: "CR;51"
- A: 127.255.51.0
- - geo: "CU;52"
- A: 127.255.52.0
- - geo: "CV;53"
- A: 127.255.53.0
- - geo: "CW;54"
- A: 127.255.54.0
- - geo: "CX;55"
- A: 127.255.55.0
- - geo: "CY;56"
- A: 127.255.56.0
- - geo: "CZ;57"
- A: 127.255.57.0
- - geo: "DE;58"
- A: 127.255.58.0
- - geo: "DJ;59"
- A: 127.255.59.0
- - geo: "DK;60"
- A: 127.255.60.0
- - geo: "DM;61"
- A: 127.255.61.0
- - geo: "DO;62"
- A: 127.255.62.0
- - geo: "DZ;63"
- A: 127.255.63.0
- - geo: "EC;64"
- A: 127.255.64.0
- - geo: "EE;65"
- A: 127.255.65.0
- - geo: "EG;66"
- A: 127.255.66.0
- - geo: "EH;67"
- A: 127.255.67.0
- - geo: "ER;68"
- A: 127.255.68.0
- - geo: "ES;69"
- A: 127.255.69.0
- - geo: "ET;70"
- A: 127.255.70.0
- - geo: "FI;71"
- A: 127.255.71.0
- - geo: "FJ;72"
- A: 127.255.72.0
- - geo: "FK;73"
- A: 127.255.73.0
- - geo: "FM;74"
- A: 127.255.74.0
- - geo: "FO;75"
- A: 127.255.75.0
- - geo: "FR;76"
- A: 127.255.76.0
- - geo: "GA;77"
- A: 127.255.77.0
- - geo: "GB;78"
- A: 127.255.78.0
- - geo: "GD;79"
- A: 127.255.79.0
- - geo: "GE;80"
- A: 127.255.80.0
- - geo: "GF;81"
- A: 127.255.81.0
- - geo: "GG;82"
- A: 127.255.82.0
- - geo: "GH;83"
- A: 127.255.83.0
- - geo: "GI;84"
- A: 127.255.84.0
- - geo: "GL;85"
- A: 127.255.85.0
- - geo: "GM;86"
- A: 127.255.86.0
- - geo: "GN;87"
- A: 127.255.87.0
- - geo: "GP;88"
- A: 127.255.88.0
- - geo: "GQ;89"
- A: 127.255.89.0
- - geo: "GR;90"
- A: 127.255.90.0
- - geo: "GS;91"
- A: 127.255.91.0
- - geo: "GT;92"
- A: 127.255.92.0
- - geo: "GU;93"
- A: 127.255.93.0
- - geo: "GW;94"
- A: 127.255.94.0
- - geo: "GY;95"
- A: 127.255.95.0
- - geo: "HK;96"
- A: 127.255.96.0
- - geo: "HM;97"
- A: 127.255.97.0
- - geo: "HN;98"
- A: 127.255.98.0
- - geo: "HR;99"
- A: 127.255.99.0
- - geo: "HT;100"
- A: 127.255.100.0
- - geo: "HU;101"
- A: 127.255.101.0
- - geo: "ID;102"
- A: 127.255.102.0
- - geo: "IE;103"
- A: 127.255.103.0
- - geo: "IL;104"
- A: 127.255.104.0
- - geo: "IM;105"
- A: 127.255.105.0
- - geo: "IN;106"
- A: 127.255.106.0
- - geo: "IO;107"
- A: 127.255.107.0
- - geo: "IQ;108"
- A: 127.255.108.0
- - geo: "IR;109"
- A: 127.255.109.0
- - geo: "IS;110"
- A: 127.255.110.0
- - geo: "IT;111"
- A: 127.255.111.0
- - geo: "JE;112"
- A: 127.255.112.0
- - geo: "JM;113"
- A: 127.255.113.0
- - geo: "JO;114"
- A: 127.255.114.0
- - geo: "JP;115"
- A: 127.255.115.0
- - geo: "KE;116"
- A: 127.255.116.0
- - geo: "KG;117"
- A: 127.255.117.0
- - geo: "KH;118"
- A: 127.255.118.0
- - geo: "KI;119"
- A: 127.255.119.0
- - geo: "KM;120"
- A: 127.255.120.0
- - geo: "KN;121"
- A: 127.255.121.0
- - geo: "KP;122"
- A: 127.255.122.0
- - geo: "KR;123"
- A: 127.255.123.0
- - geo: "KW;124"
- A: 127.255.124.0
- - geo: "KY;125"
- A: 127.255.125.0
- - geo: "KZ;126"
- A: 127.255.126.0
- - geo: "LA;127"
- A: 127.255.127.0
- - geo: "LB;128"
- A: 127.255.128.0
- - geo: "LC;129"
- A: 127.255.129.0
- - geo: "LI;130"
- A: 127.255.130.0
- - geo: "LK;131"
- A: 127.255.131.0
- - geo: "LR;132"
- A: 127.255.132.0
- - geo: "LS;133"
- A: 127.255.133.0
- - geo: "LT;134"
- A: 127.255.134.0
- - geo: "LU;135"
- A: 127.255.135.0
- - geo: "LV;136"
- A: 127.255.136.0
- - geo: "LY;137"
- A: 127.255.137.0
- - geo: "MA;138"
- A: 127.255.138.0
- - geo: "MC;139"
- A: 127.255.139.0
- - geo: "MD;140"
- A: 127.255.140.0
- - geo: "ME;141"
- A: 127.255.141.0
- - geo: "MF;142"
- A: 127.255.142.0
- - geo: "MG;143"
- A: 127.255.143.0
- - geo: "MH;144"
- A: 127.255.144.0
- - geo: "MK;145"
- A: 127.255.145.0
- - geo: "ML;146"
- A: 127.255.146.0
- - geo: "MM;147"
- A: 127.255.147.0
- - geo: "MN;148"
- A: 127.255.148.0
- - geo: "MO;149"
- A: 127.255.149.0
- - geo: "MP;150"
- A: 127.255.150.0
- - geo: "MQ;151"
- A: 127.255.151.0
- - geo: "MR;152"
- A: 127.255.152.0
- - geo: "MS;153"
- A: 127.255.153.0
- - geo: "MT;154"
- A: 127.255.154.0
- - geo: "MU;155"
- A: 127.255.155.0
- - geo: "MV;156"
- A: 127.255.156.0
- - geo: "MW;157"
- A: 127.255.157.0
- - geo: "MX;158"
- A: 127.255.158.0
- - geo: "MY;159"
- A: 127.255.159.0
- - geo: "MZ;160"
- A: 127.255.160.0
- - geo: "NA;161"
- A: 127.255.161.0
- - geo: "NC;162"
- A: 127.255.162.0
- - geo: "NE;163"
- A: 127.255.163.0
- - geo: "NF;164"
- A: 127.255.164.0
- - geo: "NG;165"
- A: 127.255.165.0
- - geo: "NI;166"
- A: 127.255.166.0
- - geo: "NL;167"
- A: 127.255.167.0
- - geo: "NO;168"
- A: 127.255.168.0
- - geo: "NP;169"
- A: 127.255.169.0
- - geo: "NR;170"
- A: 127.255.170.0
- - geo: "NU;171"
- A: 127.255.171.0
- - geo: "NZ;172"
- A: 127.255.172.0
- - geo: "OM;173"
- A: 127.255.173.0
- - geo: "PA;174"
- A: 127.255.174.0
- - geo: "PE;175"
- A: 127.255.175.0
- - geo: "PF;176"
- A: 127.255.176.0
- - geo: "PG;177"
- A: 127.255.177.0
- - geo: "PH;178"
- A: 127.255.178.0
- - geo: "PK;179"
- A: 127.255.179.0
- - geo: "PL;180"
- A: 127.255.180.0
- - geo: "PM;181"
- A: 127.255.181.0
- - geo: "PN;182"
- A: 127.255.182.0
- - geo: "PR;183"
- A: 127.255.183.0
- - geo: "PS;184"
- A: 127.255.184.0
- - geo: "PT;185"
- A: 127.255.185.0
- - geo: "PW;186"
- A: 127.255.186.0
- - geo: "PY;187"
- A: 127.255.187.0
- - geo: "QA;188"
- A: 127.255.188.0
- - geo: "RE;189"
- A: 127.255.189.0
- - geo: "RO;190"
- A: 127.255.190.0
- - geo: "RS;191"
- A: 127.255.191.0
- - geo: "RU;192"
- A: 127.255.192.0
- - geo: "RW;193"
- A: 127.255.193.0
- - geo: "SA;194"
- A: 127.255.194.0
- - geo: "SB;195"
- A: 127.255.195.0
- - geo: "SC;196"
- A: 127.255.196.0
- - geo: "SD;197"
- A: 127.255.197.0
- - geo: "SE;198"
- A: 127.255.198.0
- - geo: "SG;199"
- A: 127.255.199.0
- - geo: "SH;200"
- A: 127.255.200.0
- - geo: "SI;201"
- A: 127.255.201.0
- - geo: "SJ;202"
- A: 127.255.202.0
- - geo: "SK;203"
- A: 127.255.203.0
- - geo: "SL;204"
- A: 127.255.204.0
- - geo: "SM;205"
- A: 127.255.205.0
- - geo: "SN;206"
- A: 127.255.206.0
- - geo: "SO;207"
- A: 127.255.207.0
- - geo: "SR;208"
- A: 127.255.208.0
- - geo: "SS;209"
- A: 127.255.209.0
- - geo: "ST;210"
- A: 127.255.210.0
- - geo: "SV;211"
- A: 127.255.211.0
- - geo: "SX;212"
- A: 127.255.212.0
- - geo: "SY;213"
- A: 127.255.213.0
- - geo: "SZ;214"
- A: 127.255.214.0
- - geo: "TC;215"
- A: 127.255.215.0
- - geo: "TD;216"
- A: 127.255.216.0
- - geo: "TF;217"
- A: 127.255.217.0
- - geo: "TG;218"
- A: 127.255.218.0
- - geo: "TH;219"
- A: 127.255.219.0
- - geo: "TJ;220"
- A: 127.255.220.0
- - geo: "TK;221"
- A: 127.255.221.0
- - geo: "TL;222"
- A: 127.255.222.0
- - geo: "TM;223"
- A: 127.255.223.0
- - geo: "TN;224"
- A: 127.255.224.0
- - geo: "TO;225"
- A: 127.255.225.0
- - geo: "TR;226"
- A: 127.255.226.0
- - geo: "TT;227"
- A: 127.255.227.0
- - geo: "TV;228"
- A: 127.255.228.0
- - geo: "TW;229"
- A: 127.255.229.0
- - geo: "TZ;230"
- A: 127.255.230.0
- - geo: "UA;231"
- A: 127.255.231.0
- - geo: "UG;232"
- A: 127.255.232.0
- - geo: "UM;233"
- A: 127.255.233.0
- - geo: "US;234"
- A: 127.255.234.0
- - geo: "UY;235"
- A: 127.255.235.0
- - geo: "UZ;236"
- A: 127.255.236.0
- - geo: "VA;237"
- A: 127.255.237.0
- - geo: "VC;238"
- A: 127.255.238.0
- - geo: "VE;239"
- A: 127.255.239.0
- - geo: "VG;240"
- A: 127.255.240.0
- - geo: "VI;241"
- A: 127.255.241.0
- - geo: "VN;242"
- A: 127.255.242.0
- - geo: "VU;243"
- A: 127.255.243.0
- - geo: "WF;244"
- A: 127.255.244.0
- - geo: "WS;245"
- A: 127.255.245.0
- - geo: "YE;246"
- A: 127.255.246.0
- - geo: "YT;247"
- A: 127.255.247.0
- - geo: "ZA;248"
- A: 127.255.248.0
- - geo: "ZM;249"
- A: 127.255.249.0
- - geo: "ZW;250"
- A: 127.255.250.0
diff --git a/tests-extra/tests/modules/geoip/test.py b/tests-extra/tests/modules/geoip/test.py
index a9642decf..136f06099 100644
--- a/tests-extra/tests/modules/geoip/test.py
+++ b/tests-extra/tests/modules/geoip/test.py
@@ -6,6 +6,29 @@ from dnstest.test import Test
from dnstest.module import ModGeoip
from dnstest.utils import *
import random
+import os
+
+iso_codes = ['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT',
+ 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI',
+ 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW',
+ 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM',
+ 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK',
+ 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ',
+ 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI',
+ 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK',
+ 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ',
+ 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM',
+ 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR',
+ 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH',
+ 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV',
+ 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO',
+ 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL',
+ 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU',
+ 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL',
+ 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD',
+ 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV',
+ 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG',
+ 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW'];
t = Test(address=4, stress=False)
knot = t.server("knot")
@@ -13,10 +36,31 @@ knot = t.server("knot")
zone = t.zone("example.com.", storage=".")
t.link(zone, knot)
+# Generate configuration files for geoip module.
+geodb_filename = knot.data_dir + "geo.conf"
+subnet_filename = knot.data_dir + "net.conf"
+geo_conf = open(geodb_filename, "w")
+net_conf = open(subnet_filename, "w")
+dname_count = len(iso_codes)
+for i in range(1, dname_count + 1):
+ print("d" + str(i) + ".example.com:", file=geo_conf)
+ print("d" + str(i) + ".example.com:", file=net_conf)
+ geo_id = 1
+ for iso_code in iso_codes:
+ print(" - geo: \"" + iso_code + ";" + str(geo_id) + "\"", file=geo_conf)
+ print(" A: 127.255." + str(geo_id) + ".0", file=geo_conf)
+ print(" - net: 127.255." + str(geo_id) + ".0/24", file=net_conf)
+ print(" A: 127.255." + str(geo_id) + ".0", file=net_conf)
+ geo_id += 1
+geo_conf.close()
+net_conf.close()
+
ModGeoip.check()
-mod_geoip = ModGeoip(t.data_dir + "geo.conf", "geodb", t.data_dir + "db.mmdb",
+mod_geoip = ModGeoip(geodb_filename, "geodb", t.data_dir + "db.mmdb",
["country/iso_code", "(id)city/geoname_id"])
+mod_subnet = ModGeoip(subnet_filename)
+
knot.add_module(zone, mod_geoip);
t.start()
@@ -29,6 +73,21 @@ resp.check(rcode="NOERROR", rdata="192.0.2.4")
# Test geo-dependent answers.
for i in range(1, 1000):
- random_client = "127.255." + str(random.randint(1, 250)) + ".0"
- resp = knot.dig("foo.example.com", "A", source=random_client)
+ random_client = "127.255." + str(random.randint(1, dname_count)) + ".0"
+ resp = knot.dig("d" + str(random.randint(1, dname_count)) + ".example.com", "A", source=random_client)
+ resp.check(rcode="NOERROR", rdata=random_client)
+
+# Test subnet-dependent answers.
+knot.clear_modules(None)
+knot.add_module(zone, mod_subnet);
+knot.gen_confile()
+knot.reload()
+knot.zone_wait(zone)
+
+for i in range(1, 1000):
+ random_client = "127.255." + str(random.randint(1, dname_count)) + ".0"
+ resp = knot.dig("d" + str(random.randint(1, dname_count)) + ".example.com", "A", source=random_client)
resp.check(rcode="NOERROR", rdata=random_client)
+
+os.remove(geodb_filename)
+os.remove(subnet_filename)