Skip to content
This repository was archived by the owner on Nov 22, 2024. It is now read-only.

Commit 4a8626f

Browse files
committed
make zone choice random, add delay for import as it is rate limited
1 parent 3b17a03 commit 4a8626f

2 files changed

Lines changed: 50 additions & 20 deletions

File tree

tests/test_dns_import_export.py

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import os
44
import sys
55
import uuid
6+
import time
7+
import random
68
import tempfile
79

810
fp = open('/dev/null', 'rb')
@@ -14,31 +16,40 @@
1416
# test IMPORT EXPORT
1517

1618
cf = None
17-
zone_name = None
18-
zone_id = None
1919

2020
def test_cloudflare():
2121
global cf
2222
cf = CloudFlare.CloudFlare()
2323
assert isinstance(cf, CloudFlare.CloudFlare)
2424

25+
zone_name = None
26+
zone_id = None
27+
2528
def test_find_zone():
2629
global zone_name, zone_id
27-
# grab the first zone identifier
28-
params = {'per_page':1}
30+
# grab a random zone identifier from the first 10 zones
31+
params = {'per_page':10}
2932
zones = cf.zones.get(params=params)
30-
assert len(zones) == 1
31-
zone_name = zones[0]['name']
32-
zone_id = zones[0]['id']
33+
assert len(zones) > 0 and len(zones) <= 10
34+
n = random.randrange(len(zones))
35+
zone_name = zones[n]['name']
36+
zone_id = zones[n]['id']
3337
assert len(zone_id) == 32
34-
print('zone: %s %s' % (zone_id, zone_name))
38+
print('zone: %s %s' % (zone_id, zone_name), file=sys.stderr)
3539

3640
def test_dns_import():
3741
# IMPORT
3842
# create a zero length file
3943
fp = tempfile.TemporaryFile(mode='w+b')
4044
fp.seek(0)
41-
results = cf.zones.dns_records.import_.post(zone_id, files={'file':fp})
45+
while True:
46+
try:
47+
results = cf.zones.dns_records.import_.post(zone_id, files={'file':fp})
48+
break
49+
except CloudFlare.exceptions.CloudFlareAPIError as e:
50+
print('cf.zones.dns_records.import: returned %d "%s"' % (int(e), str(e))) # 429 or 99998
51+
time.sleep(.5) # This is sadly needed as import seems to be rate limited
52+
fp.seek(0)
4253
# {"recs_added": 0, "recs_added_by_type": {}, "total_records_parsed": 0}
4354
assert len(results) > 0
4455
assert results['recs_added'] == 0
@@ -64,7 +75,14 @@ def test_dns_import_with_debug():
6475
# create a zero length file
6576
fp = tempfile.TemporaryFile(mode='w+b')
6677
fp.seek(0)
67-
results = cf.zones.dns_records.import_.post(zone_id, files={'file':fp})
78+
while True:
79+
try:
80+
results = cf.zones.dns_records.import_.post(zone_id, files={'file':fp})
81+
break
82+
except CloudFlare.exceptions.CloudFlareAPIError as e:
83+
print('cf.zones.dns_records.import: returned %d "%s"' % (int(e), str(e))) # 429 or 99998
84+
time.sleep(.5) # This is sadly needed as import seems to be rate limited
85+
fp.seek(0)
6886
# {"recs_added": 0, "recs_added_by_type": {}, "total_records_parsed": 0}
6987
assert len(results) > 0
7088
assert results['recs_added'] == 0
@@ -78,3 +96,12 @@ def test_dns_export_with_debug():
7896
assert isinstance(dns_records, str)
7997
assert 'SOA' in dns_records
8098
assert 'NS' in dns_records
99+
100+
if __name__ == '__main__':
101+
test_cloudflare()
102+
test_find_zone()
103+
test_dns_import()
104+
test_dns_export()
105+
test_cloudflare_with_debug()
106+
test_dns_import_with_debug()
107+
test_dns_export_with_debug()

tests/test_dns_records.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,34 @@
33
import os
44
import sys
55
import uuid
6+
import random
67

78
sys.path.insert(0, os.path.abspath('..'))
89
import CloudFlare
910

1011
# test GET POST PUT PATCH & DELETE - but not in that order
1112

1213
cf = None
13-
zone_name = None
14-
zone_id = None
1514

1615
def test_cloudflare():
1716
global cf
1817
cf = CloudFlare.CloudFlare()
1918
assert isinstance(cf, CloudFlare.CloudFlare)
2019

20+
zone_name = None
21+
zone_id = None
22+
2123
def test_find_zone():
2224
global zone_name, zone_id
23-
# grab the first zone identifier
24-
params = {'per_page':1}
25+
# grab a random zone identifier from the first 10 zones
26+
params = {'per_page':10}
2527
zones = cf.zones.get(params=params)
26-
assert len(zones) == 1
27-
zone_name = zones[0]['name']
28-
zone_id = zones[0]['id']
28+
assert len(zones) > 0 and len(zones) <= 10
29+
n = random.randrange(len(zones))
30+
zone_name = zones[n]['name']
31+
zone_id = zones[n]['id']
2932
assert len(zone_id) == 32
30-
print('zone: %s %s' % (zone_id, zone_name))
33+
print('zone: %s %s' % (zone_id, zone_name), file=sys.stderr)
3134

3235
dns_name = None
3336
dns_type = None
@@ -42,7 +45,7 @@ def test_dns_records():
4245
dns_content1 = 'temp pytest element 1'
4346
dns_content2 = 'temp pytest element 2'
4447
dns_content3 = 'temp pytest element 3'
45-
print('dns_record: %s' % (dns_name))
48+
print('dns_record: %s' % (dns_name), file=sys.stderr)
4649

4750
def test_dns_records_get1():
4851
# GET
@@ -63,7 +66,7 @@ def test_dns_records_post():
6366

6467
dns_id = dns_result['id']
6568
assert len(dns_id) == 32
66-
print('dns_record: %s %s' % (dns_name, dns_id))
69+
print('dns_record: %s %s' % (dns_name, dns_id), file=sys.stderr)
6770

6871
def test_dns_records_get2():
6972
# GET

0 commit comments

Comments
 (0)