diff --git a/scapy/as_resolvers.py b/scapy/as_resolvers.py
index 2c69b101fad04b0d9f3bb46b391632da66287397..61a032dcb14909110fda89025cac8eb71688c86f 100644
--- a/scapy/as_resolvers.py
+++ b/scapy/as_resolvers.py
@@ -76,7 +76,6 @@ class AS_resolver_cymru(AS_resolver):
     server = "whois.cymru.com"
     options = None
     def resolve(self, *ips):
-        ASNlist = []
         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         s.connect((self.server,self.port))
         s.send(b"begin\r\n"+b"\r\n".join(ip.encode("utf8") for ip in ips)+b"\r\nend\r\n")
@@ -87,7 +86,14 @@ class AS_resolver_cymru(AS_resolver):
                 break
             r += l
         s.close()
-        for l in r.splitlines()[1:]:
+
+        return self.parse(r)
+
+    def parse(self, data):
+        """Parse bulk cymru data"""
+
+        ASNlist = []
+        for l in data.splitlines()[1:]:
             l = plain_str(l)
             if "|" not in l:
                 continue
diff --git a/test/regression.uts b/test/regression.uts
index 257917ae526373c67de758c2b7eab9772feb02d6..beacb6d79c73fa7fbfbc75e2a68c7bdd111a3c01 100644
--- a/test/regression.uts
+++ b/test/regression.uts
@@ -802,28 +802,9 @@ for i in six.moves.range(5):
         break
 
 assert (len(ret) == 2)
-
 all(x[1] == "AS15169" for x in ret)
 
-= AS resolver - IPv6
-~ netaccess IP
-* This test retries on failure because it often fails
-
 ret = list()
-success = False
-as_resolver6 = AS_resolver6()
-for i in six.moves.range(5):
-    try:
-        ret = as_resolver6.resolve("2001:4860:4860::8888", "2001:4860:4860::4444")
-    except socket.error:
-        time.sleep(2)
-    else:
-        success = True
-        break
-
-assert (len(ret) == 2)
-assert all(x[1] == 15169 for x in ret)
-
 success = False
 for i in six.moves.range(5):
     try:
@@ -837,7 +818,8 @@ for i in six.moves.range(5):
 assert (len(ret) == 1)
 assert all(x[1] == "AS15169" for x in ret)
 
-# This test is too buggy
+# This test is too buggy, and is simulated below
+#ret = list()
 #success = False
 #for i in six.moves.range(5):
 #    try:
@@ -852,6 +834,35 @@ assert all(x[1] == "AS15169" for x in ret)
 #
 #all(x[1] == "AS15169" for x in ret)
 
+cymru_bulk_data = """
+Bulk mode; whois.cymru.com [2017-10-03 08:38:08 +0000]
+24776   | 217.25.178.5     | INFOCLIP-AS, FR
+36459   | 192.30.253.112   | GITHUB - GitHub, Inc., US
+26496   | 68.178.213.61    | AS-26496-GO-DADDY-COM-LLC - GoDaddy.com, LLC, US
+"""
+tmp = AS_resolver_cymru().parse(cymru_bulk_data)
+assert(len(tmp) == 3)
+assert([l[1] for l in tmp] == ['AS24776', 'AS36459', 'AS26496'])
+
+= AS resolver - IPv6
+~ netaccess IP
+* This test retries on failure because it often fails
+
+ret = list()
+success = False
+as_resolver6 = AS_resolver6()
+for i in six.moves.range(5):
+    try:
+        ret = as_resolver6.resolve("2001:4860:4860::8888", "2001:4860:4860::4444")
+    except socket.error:
+        time.sleep(2)
+    else:
+        success = True
+        break
+
+assert (len(ret) == 2)
+assert all(x[1] == 15169 for x in ret)
+
 
 ############
 ############