Skip to content

Commit 5d28223

Browse files
Merge pull request #49 from algolia/fix-build
Fix CI with a more accurate wait for keys updates
2 parents 73f6ad4 + d88b3cf commit 5d28223

File tree

3 files changed

+48
-19
lines changed

3 files changed

+48
-19
lines changed

tests/helpers.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from __future__ import unicode_literals
44

55
import os
6+
import time
67
from random import randint
78

89
from faker import Factory
@@ -36,7 +37,7 @@ def generate_id(self):
3637
return str(new_id)
3738

3839

39-
def get_api_client():
40+
def get_api_client():
4041
if 'APPENGINE_RUNTIME' in os.environ:
4142
from google.appengine.api import apiproxy_stub_map
4243
from google.appengine.api import urlfetch_stub
@@ -51,3 +52,25 @@ def safe_index_name(name):
5152
return name
5253
job = os.environ['TRAVIS_JOB_NUMBER']
5354
return '{0}_travis-{1}'.format(name, job)
55+
56+
57+
def wait_key(index, key, block=None):
58+
for i in range(60):
59+
try:
60+
k = index.get_user_key_acl(key)
61+
if block is None or block(k):
62+
return
63+
except:
64+
pass
65+
# Not found.
66+
time.sleep(1)
67+
68+
69+
def wait_missing_key(index, key):
70+
for i in range(60):
71+
try:
72+
index.get_user_key_acl(key)
73+
time.sleep(1)
74+
except:
75+
# Not found.
76+
return

tests/test_keys.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from .helpers import safe_index_name
1616
from .helpers import get_api_client
1717
from .helpers import FakeData
18+
from .helpers import wait_key, wait_missing_key
1819

1920

2021
class KeyTest(unittest.TestCase):
@@ -64,7 +65,7 @@ def test_add_user_keys(self):
6465
def test_get_user_key(self):
6566
res = self.client.add_user_key(['search'])
6667
key = res['key']
67-
time.sleep(5)
68+
wait_key(self.client, key)
6869

6970
res = self.client.get_user_key_acl(key)
7071
self.assertEqual(res['value'], key)
@@ -79,28 +80,30 @@ def test_update_user_keys(self):
7980
res = self.client.add_user_key(['search'])
8081
keys.append(res['key'])
8182

82-
time.sleep(5)
83+
for k in keys:
84+
wait_key(self.client, k)
8385

8486
res = self.client.update_user_key(keys[0], ['addObject'],
8587
max_queries_per_ip_per_hour=5)
8688
self.assertGreater(len(res['key']), 0)
87-
time.sleep(5)
89+
wait_key(self.client, keys[0], lambda k: k['acl'] == ['addObject'])
8890
res = self.client.get_user_key_acl(keys[0])
8991
self.assertSetEqual(set(res['acl']), set(['addObject']))
9092
self.assertEqual(res['maxQueriesPerIPPerHour'], 5)
9193

9294
res = self.client.update_user_key(keys[1], ['deleteObject'],
9395
max_hits_per_query=10)
9496
self.assertGreater(len(res['key']), 0)
95-
time.sleep(5)
97+
98+
wait_key(self.client, keys[1], lambda k: k['acl'] == ['deleteObject'])
9699
res = self.client.get_user_key_acl(keys[1])
97100
self.assertSetEqual(set(res['acl']), set(['deleteObject']))
98101
self.assertEqual(res['maxHitsPerQuery'], 10)
99102

100103
res = self.client.update_user_key(keys[2], ['settings', 'search'],
101104
validity=60)
102105
self.assertGreater(len(res['key']), 0)
103-
time.sleep(5)
106+
wait_key(self.client, keys[2], lambda k: set(k['acl']) == set(['settings', 'search']))
104107
res = self.client.get_user_key_acl(keys[2])
105108
self.assertSetEqual(set(res['acl']), set(['settings', 'search']))
106109
self.assertIn('validity', res)
@@ -112,10 +115,10 @@ def test_update_user_keys(self):
112115
def test_delete_user_keys(self):
113116
res = self.client.add_user_key(['search'])
114117
key = res['key']
115-
time.sleep(5)
118+
wait_key(self.client, res['key'])
116119

117120
self.client.delete_user_key(key)
118-
time.sleep(5)
121+
wait_missing_key(self.client, res['key'])
119122

120123
res = self.client.list_user_keys()
121124
res_keys = [elt['value'] for elt in res['keys']]
@@ -150,7 +153,7 @@ def test_index_add_user_keys(self):
150153
def test_index_get_user_key(self):
151154
res = self.index.add_user_key(['search'])
152155
key = res['key']
153-
time.sleep(5)
156+
wait_key(self.index, res['key'])
154157

155158
res = self.index.get_user_key_acl(key)
156159
self.assertEqual(res['value'], key)
@@ -165,28 +168,29 @@ def test_index_update_user_keys(self):
165168
res = self.index.add_user_key(['search'])
166169
keys.append(res['key'])
167170

168-
time.sleep(5)
171+
for k in keys:
172+
wait_key(self.index, k)
169173

170174
res = self.index.update_user_key(keys[0], ['addObject'],
171175
max_queries_per_ip_per_hour=5)
172176
self.assertGreater(len(res['key']), 0)
173-
time.sleep(5)
177+
wait_key(self.index, keys[0], lambda k: k['acl'] == ['addObject'])
174178
res = self.index.get_user_key_acl(keys[0])
175179
self.assertSetEqual(set(res['acl']), set(['addObject']))
176180
self.assertEqual(res['maxQueriesPerIPPerHour'], 5)
177181

178182
res = self.index.update_user_key(keys[1], ['deleteObject'],
179183
max_hits_per_query=10)
180184
self.assertGreater(len(res['key']), 0)
181-
time.sleep(5)
185+
wait_key(self.index, keys[1], lambda k: k['acl'] == ['deleteObject'])
182186
res = self.index.get_user_key_acl(keys[1])
183187
self.assertSetEqual(set(res['acl']), set(['deleteObject']))
184188
self.assertEqual(res['maxHitsPerQuery'], 10)
185189

186190
res = self.index.update_user_key(keys[2], ['settings', 'search'],
187191
validity=60)
188192
self.assertGreater(len(res['key']), 0)
189-
time.sleep(5)
193+
wait_key(self.index, keys[2], lambda k: set(k['acl']) == set(['search', 'settings']))
190194
res = self.index.get_user_key_acl(keys[2])
191195
self.assertSetEqual(set(res['acl']), set(['settings', 'search']))
192196
self.assertIn('validity', res)
@@ -198,10 +202,10 @@ def test_index_update_user_keys(self):
198202
def test_index_delete_user_keys(self):
199203
res = self.index.add_user_key(['search'])
200204
key = res['key']
201-
time.sleep(5)
205+
wait_key(self.index, res['key'])
202206

203207
self.index.delete_user_key(key)
204-
time.sleep(5)
208+
wait_missing_key(self.index, res['key'])
205209

206210
res = self.index.list_user_keys()
207211
res_keys = [elt['value'] for elt in res['keys']]

tests/test_old_compat.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
from algoliasearch import algoliasearch
1111

12+
from .helpers import wait_key, wait_missing_key
13+
1214

1315
def safe_index_name(name):
1416
if 'TRAVIS' not in os.environ:
@@ -240,7 +242,7 @@ def test_user_key(self):
240242
self.index.waitTask(task['taskID'])
241243
res = self.index.listUserKeys()
242244
newKey = self.index.addUserKey(['search'])
243-
time.sleep(5)
245+
wait_key(self.index, newKey['key'])
244246
self.assertTrue(newKey['key'] != "")
245247
resAfter = self.index.listUserKeys()
246248
is_present = False
@@ -250,7 +252,7 @@ def test_user_key(self):
250252
key = self.index.getUserKeyACL(newKey['key'])
251253
self.assertEquals(key['acl'][0], 'search')
252254
task = self.index.deleteUserKey(newKey['key'])
253-
time.sleep(5)
255+
wait_missing_key(self.index, newKey['key'])
254256
resEnd = self.index.listUserKeys()
255257
is_present = False
256258
for it in resEnd['keys']:
@@ -259,7 +261,7 @@ def test_user_key(self):
259261

260262
res = self.client.listUserKeys()
261263
newKey = self.client.addUserKey(['search'])
262-
time.sleep(5)
264+
wait_key(self.client, newKey['key'])
263265
self.assertTrue(newKey['key'] != "")
264266
resAfter = self.client.listUserKeys()
265267
is_present = False
@@ -269,7 +271,7 @@ def test_user_key(self):
269271
key = self.client.getUserKeyACL(newKey['key'])
270272
self.assertEquals(key['acl'][0], 'search')
271273
task = self.client.deleteUserKey(newKey['key'])
272-
time.sleep(5)
274+
wait_missing_key(self.client, newKey['key'])
273275
resEnd = self.client.listUserKeys()
274276
is_present = False
275277
for it in resEnd['keys']:

0 commit comments

Comments
 (0)