]> granicus.if.org Git - pdns/commitdiff
geoipbackend: Add mmdb support for regression test
authorAki Tuomi <cmouse@cmouse.fi>
Wed, 3 Jan 2018 21:36:16 +0000 (23:36 +0200)
committerAki Tuomi <cmouse@cmouse.fi>
Wed, 14 Feb 2018 07:15:53 +0000 (09:15 +0200)
.gitignore
modules/geoipbackend/regression-tests/GeoLiteCity.mmdb.b64 [new file with mode: 0644]
modules/geoipbackend/regression-tests/write-mmdb.pl [new file with mode: 0644]
regression-tests/backends/geoip-master

index b96b924d40dc62c2c3c903d13d950c4e57ac5d97..a2c07bf039e5165c3ca9183984e0ba91e7e0d79f 100644 (file)
@@ -50,3 +50,4 @@ pdns_recursor.pid
 *.gcno
 *.gcov
 modules/geoipbackend/regression-tests/GeoLiteCity.dat
+modules/geoipbackend/regression-tests/GeoLiteCity.mmdb
diff --git a/modules/geoipbackend/regression-tests/GeoLiteCity.mmdb.b64 b/modules/geoipbackend/regression-tests/GeoLiteCity.mmdb.b64
new file mode 100644 (file)
index 0000000..bee561f
--- /dev/null
@@ -0,0 +1,33 @@
+AAABAAAAoAAAAgAAAKAAAAMAAACgAAAEAAAAoAAABQAAAKAAAAYAAACgAAAHAAAAoAAACAAAAKAA
+AAkAAACgAAAKAAAAoAAACwAAAKAAAAwAAACgAAANAAAAoAAADgAAAKAAAA8AAACgAAAQAAAAoAAA
+EQAAAKAAABIAAACgAAATAAAAoAAAFAAAAKAAABUAAACgAAAWAAAAoAAAFwAAAKAAABgAAACgAAAZ
+AAAAoAAAGgAAAKAAABsAAACgAAAcAAAAoAAAHQAAAKAAAB4AAACgAAAfAAAAoAAAIAAAAKAAACEA
+AACgAAAiAAAAoAAAIwAAAKAAACQAAACgAAAlAAAAoAAAJgAAAKAAACcAAACgAAAoAAAAoAAAKQAA
+AKAAACoAAACgAAArAAAAoAAALAAAAKAAAC0AAACgAAAuAAAAoAAALwAAAKAAADAAAACgAAAxAAAA
+oAAAMgAAAKAAADMAAACgAAA0AAAAoAAANQAAAKAAADYAAACgAAA3AAAAoAAAOAAAAKAAADkAAACg
+AAA6AAAAoAAAOwAAAKAAADwAAACgAAA9AAAAoAAAPgAAAKAAAD8AAACgAABAAAAAoAAAQQAAAKAA
+AEIAAACgAABDAAAAoAAARAAAAKAAAEUAAACgAABGAAAAoAAARwAAAKAAAEgAAACgAABJAAAAoAAA
+SgAAAKAAAEsAAACgAABMAAAAoAAATQAAAKAAAE4AAACgAABPAAAAoAAAUAAAAKAAAFEAAACgAABS
+AAAAoAAAUwAAAKAAAFQAAACgAABVAAAAoAAAVgAAAKAAAFcAAACgAABYAAAAoAAAWQAAAKAAAFoA
+AACgAABbAAAAoAAAXAAAAKAAAF0AAACgAABeAAAAoAAAXwAAAKAAAGAAAACgAABhAAAAoAAAYgAA
+AIEAAGMAAACgAABkAAAAoAAAZQAAAKAAAGYAAACgAABnAAAAoAAAoAAAAGgAAGkAAACgAABqAAAA
+oAAAawAAAKAAAGwAAACgAABtAAAAoAAAbgAAAKAAAG8AAAB4AACgAAAAcAAAcQAAAKAAAHIAAACg
+AABzAAAAoAAAdAAAAKAAAHUAAACgAAB2AAAAoAAAdwAAAKAAAKAAAACwAAB5AAAAoAAAegAAAKAA
+AHsAAACgAAB8AAAAoAAAfQAAAKAAAH4AAACgAAB/AAAAoAAAoAAAAIAAAKAAAAFsAACgAAAAggAA
+oAAAAIMAAKAAAACEAACgAAAAhQAAoAAAAIYAAKAAAACHAACIAAAAoAAAiQAAAKAAAIoAAACgAACL
+AAAAoAAAjAAAAKAAAI0AAACgAACOAAAAoAAAjwAAAKAAAJAAAACgAACRAAAAoAAAkgAAAKAAAJMA
+AACgAACUAAAAoAAAlQAAAKAAAJYAAACgAACXAAAAoAAAmAAAAKAAAJkAAACgAACaAAAAoAAAmwAA
+AKAAAJwAAACgAACdAAAAoAAAngAAAJ8AAKAAAAHmAAIwAAACbwAAAAAAAAAAAAAAAAAAAADkRGNp
+dHniSmdlb25hbWVfaWTDINUmRW5hbWVz4UJlbkhSZXNlYXJjaEljb250aW5lbnTjRGNvZGVCT0Mg
+B8Nfci8gFuFCZW5HT2NlYW5pYUdjb3VudHJ54yAHwx+zEEhpc29fY29kZUJBVSAW4UJlbklBdXN0
+cmFsaWFIbG9jYXRpb27jT2FjY3VyYWN5X3JhZGl1c6EBSGxhdGl0dWRlaD/wAAAAAAAASWxvbmdp
+dHVkZWg/8AAAAAAAAOQgAeIgB8NYkRIgFuFCZW5ITXVraWx0ZW8gKeMgNEJOQSAHw19yLSAW4UJl
+bk1Ob3J0aCBBbWVyaWNhIFDjIAfDX2XhIF9CVVMgFuFCZW5NVW5pdGVkIFN0YXRlcyB74yCFoQEg
+l2hAR/TdLxqfviCpaMBek3gDRtxd4yAB4iAHwQEgFuFCZW5CQzEgUOMgB8EBIF9CTzEgFuFCZW5D
+TyAxTHN1YmRpdmlzaW9ucwEE4yAHwQEgX0JMMSAW4UJlbkNMIDHjIAHiIAfBAiAW4UJlbkJDMiBQ
+4yAHwQIgX0JPMSAW4UJlbkNPIDIhXQEE4yAHwQIgX0JMMiAW4UJlbkNMIDLjIAHiIAfBAyAW4UJl
+bkJDMyBQ4yAHwQMgX0JPMSAW4UJlbkNPIDMhXQEE4yAHwQMgX0JMMyAW4UJlbkNMIDOrze9NYXhN
+aW5kLmNvbelbYmluYXJ5X2Zvcm1hdF9tYWpvcl92ZXJzaW9uoQJbYmluYXJ5X2Zvcm1hdF9taW5v
+cl92ZXJzaW9uoEtidWlsZF9lcG9jaAQCWk1MMk1kYXRhYmFzZV90eXBlTEdlb0NpdHktTGl0ZUtk
+ZXNjcmlwdGlvbuFCZW5TTW9jayBnZW9pcCBkYXRhYmFzZUppcF92ZXJzaW9uoQZJbGFuZ3VhZ2Vz
+AQRCZW5Kbm9kZV9jb3VudMGgS3JlY29yZF9zaXploRw=
diff --git a/modules/geoipbackend/regression-tests/write-mmdb.pl b/modules/geoipbackend/regression-tests/write-mmdb.pl
new file mode 100644 (file)
index 0000000..9a7d1c1
--- /dev/null
@@ -0,0 +1,77 @@
+use MaxMind::DB::Writer::Tree;
+
+my %types = (
+        city          => 'map',
+        names         => 'map',
+        en            => 'utf8_string',
+        geoname_id    => 'uint32',
+        location      => 'map',
+        latitude      => 'double',
+        longitude     => 'double',
+        accuracy_radius => 'uint16',
+        continent     => 'map',
+        country       => 'map',
+        code          => 'utf8_string',
+        iso_code      => 'utf8_string',
+        subdivisions  => ['array', 'map'],
+);
+
+my $tree = MaxMind::DB::Writer::Tree->new(
+    ip_version            => 6,
+    record_size           => 28,
+    database_type         => 'GeoCity-Lite',
+    languages             => ['en'],
+    description           => { en => 'Mock geoip database' },
+    map_key_type_callback => sub { $types{ $_[0] } },
+    remove_reserved_networks => 0,
+);
+
+$tree->insert_network(
+    '1.1.1.0/24',
+    {
+      'city' => { "geoname_id" => 2151718, "names" => { "en" => "Research" } },
+      'continent' => { "code" => "OC", "geoname_id" => 6255151, "names" => { "en" => "Oceania" } },
+      'country' => { "geoname_id" => 2077456, "iso_code" => "AU", "names" => { "en" => "Australia" } },
+      'location' => { "latitude" => 1.0, "longitude" => 1.0, accuracy_radius => 1 },
+    }
+);
+
+$tree->insert_network(
+    '1.2.3.0/24',
+    {
+      'city' => { "geoname_id" => 5804306, "names" => { "en" => "Mukilteo" } },
+      'continent' => { "code" => "NA", "geoname_id" => 6255149, "names" => { "en" => "North America" } },
+      'country' => { "geoname_id" => 6252001, "iso_code" => "US", "names" => { "en" => "United States" } },
+      'location' => { "latitude" => 47.913000, "longitude" => -122.304200, accuracy_radius => 1 },
+    }
+);
+
+$tree->insert_network(
+    '127.0.0.1/32',
+    {
+      'country' => { "geoname_id" => 1, "iso_code" => "O1", "names" => { "en" => "O 1" } },
+      'city' => { "geoname_id" => 1, "names" => { "en" => "C1" } },
+      'subdivisions' => [{ "geoname_id" => 1, "iso_code" => "L1", "names" => { "en" => "L 1" } }],
+    }
+);
+
+$tree->insert_network(
+    '127.0.0.2/32',
+    {
+      'country' => { "geoname_id" => 2, "iso_code" => "O1", "names" => { "en" => "O 2" } },
+      'subdivisions' => [{ "geoname_id" => 2, "iso_code" => "L2", "names" => { "en" => "L 2" } }],
+      'city' => { "geoname_id" => 2, "names" => { "en" => "C2" } },
+    }
+);
+
+$tree->insert_network(
+    '127.0.0.3/32',
+    {
+      'country' => { "geoname_id" => 3, "iso_code" => "O1", "names" => { "en" => "O 3" } },
+      'subdivisions' => [{ "geoname_id" => 3, "iso_code" => "L3", "names" => { "en" => "L 3" } }],
+      'city' => { "geoname_id" => 3, "names" => { "en" => "C3" } },
+    }
+);
+
+open my $fh, '>:raw', 'GeoLiteCity.mmdb';
+$tree->write_tree($fh);
index a6a1456e2b185f18250be6080c0e9f2b04ada7fd..fe35442ca7b14c716ef68b6d6ee8b1559e32729b 100644 (file)
@@ -84,6 +84,7 @@ EOF
                fi
 
                base64 -d < $testsdir/GeoLiteCity.dat.b64 > $testsdir/GeoLiteCity.dat
+               base64 -d < $testsdir/GeoLiteCity.mmdb.b64 > $testsdir/GeoLiteCity.mmdb
 
                geoipdatabase=${geoipdatabase:-$testsdir/GeoLiteCity.dat}