]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Generate random ipaddress objects for testing
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 8 Jun 2021 04:07:04 +0000 (05:07 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 8 Jun 2021 04:07:04 +0000 (05:07 +0100)
tests/fix_faker.py

index 2a74f2c8e6a28c389291f126d90d25b9bd7b9082..b57a1945b6f955e48f7b2f365a14066ab0509316 100644 (file)
@@ -1,5 +1,6 @@
 import datetime as dt
 import importlib
+import ipaddress
 from math import isnan
 from uuid import UUID
 from random import choice, random, randrange
@@ -304,6 +305,30 @@ class Faker:
     def make_Int8(self, spec):
         return spec(randrange(-(1 << 63), 1 << 63))
 
+    def make_IPv4Address(self, spec):
+        return ipaddress.IPv4Address(bytes(randrange(256) for _ in range(4)))
+
+    def make_IPv4Interface(self, spec):
+        prefix = randrange(32)
+        return ipaddress.IPv4Interface(
+            (bytes(randrange(256) for _ in range(4)), prefix)
+        )
+
+    def make_IPv4Network(self, spec):
+        return self.make_IPv4Interface(spec).network
+
+    def make_IPv6Address(self, spec):
+        return ipaddress.IPv6Address(bytes(randrange(256) for _ in range(16)))
+
+    def make_IPv6Interface(self, spec):
+        prefix = randrange(128)
+        return ipaddress.IPv6Interface(
+            (bytes(randrange(256) for _ in range(16)), prefix)
+        )
+
+    def make_IPv6Network(self, spec):
+        return self.make_IPv6Interface(spec).network
+
     def make_Json(self, spec):
         return spec(self._make_json())