Skip to content

Commit bfddca9

Browse files
committed
Add tests for sh.hs.client/collections
1 parent 0533192 commit bfddca9

File tree

5 files changed

+190
-165
lines changed

5 files changed

+190
-165
lines changed

tests/hubstorage/conftest.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
TEST_FRONTIER_NAME = 'test'
1212
TEST_FRONTIER_SLOT = 'site.com'
1313
TEST_BOTGROUPS = ['python-hubstorage-test', 'g1']
14+
TEST_COLLECTION_NAME = "test_collection_123"
1415

1516
VCR_CASSETES_DIR = 'tests/hubstorage/cassetes'
1617

@@ -41,27 +42,37 @@ def hsspiderid(hsproject):
4142
return str(hsproject.ids.spider(TEST_SPIDER_NAME, create=1))
4243

4344

45+
@pytest.fixture
46+
def hscollection(hsproject):
47+
return hsproject.collections.new_store(TEST_COLLECTION_NAME)
48+
49+
4450
@pytest.fixture(autouse=True, scope='session')
4551
def setup_session(hsclient, hsproject):
4652
yield
4753
hsclient.close()
4854

4955

5056
@pytest.fixture(autouse=True)
51-
def setup_test(hsclient, hsproject, request, vcr_instance):
57+
def setup_test(hsclient, hsproject, hscollection, request, vcr_instance):
5258
cassette_name = '{}/{}.yaml'.format(
5359
request.function.__module__.split('.')[-1],
5460
request.function.__name__
5561
)
5662
with vcr_instance.use_cassette(cassette_name):
5763
_set_testbotgroup(hsproject)
5864
_remove_all_jobs(hsproject)
65+
_clean_collection(hscollection)
5966
yield
6067
_remove_all_jobs(hsproject)
6168
_unset_testbotgroup(hsproject)
6269

6370
# ----------------------------------------------------------------------------
6471

72+
def _clean_collection(hscollection):
73+
for item in hscollection.iter_values():
74+
hscollection.delete(item['_key'])
75+
6576

6677
def _set_testbotgroup(hsproject):
6778
hsproject.settings.apipost(jl={'botgroups': [TEST_BOTGROUPS[0]]})
@@ -81,7 +92,6 @@ def _unset_testbotgroup(hsproject):
8192
requests.delete(url, auth=hsproject.auth)
8293

8394

84-
8595
def _remove_all_jobs(hsproject):
8696
for k in list(hsproject.settings.keys()):
8797
if k != 'botgroups':

tests/hubstorage/test_batchuploader.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88

99
from scrapinghub.hubstorage import ValueTooLarge
1010
from .conftest import TEST_SPIDER_NAME, TEST_AUTH
11+
from .conftest import start_job
1112

1213

1314
def _job_and_writer(hsclient, hsproject, **writerargs):
14-
job = hsproject.push_job(TEST_SPIDER_NAME)
15-
hsproject.jobq.start(job)
15+
hsproject.push_job(TEST_SPIDER_NAME)
16+
start_job(hsproject)
1617
batch_uploader = hsclient.batchuploader
1718
writer = batch_uploader.create_writer(
1819
job.items.url, auth=TEST_AUTH, **writerargs)

tests/hubstorage/test_client.py

Lines changed: 53 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,59 @@
11
"""
22
Test Client
33
"""
4-
from .hstestcase import HSTestCase
54
from scrapinghub import HubstorageClient
65
from scrapinghub.hubstorage.utils import apipoll
76

8-
class ClientTest(HSTestCase):
9-
10-
def test_default_ua(self):
11-
self.assertEqual(self.hsclient.user_agent,
12-
HubstorageClient.DEFAULT_USER_AGENT)
13-
14-
def test_custom_ua(self):
15-
client = HubstorageClient(auth=HSTestCase.auth,
16-
endpoint=HSTestCase.endpoint,
17-
user_agent='testUA')
18-
self.assertEqual(client.user_agent, 'testUA')
19-
20-
def test_push_job(self):
21-
c = self.hsclient
22-
c.push_job(self.projectid, self.spidername,
23-
priority=self.project.jobq.PRIO_LOW,
24-
foo='baz')
25-
job = self.start_job()
26-
m = job.metadata
27-
self.assertEqual(m.get('state'), u'running', c.auth)
28-
self.assertEqual(m.get('foo'), u'baz')
29-
self.project.jobq.finish(job)
30-
self.project.jobq.delete(job)
31-
32-
# job auth token is valid only while job is running
33-
m = c.get_job(job.key).metadata
34-
self.assertEqual(m.get('state'), u'deleted')
35-
self.assertEqual(m.get('foo'), u'baz')
36-
37-
def test_jobsummaries(self):
38-
hsc = self.hsclient
39-
# add at least one running or pending job to ensure summary is returned
40-
hsc.push_job(self.projectid, self.spidername, state='running')
41-
42-
def _get_summary():
43-
jss = hsc.projects.jobsummaries()
44-
mjss = dict((str(js['project']), js) for js in jss)
45-
return mjss.get(self.projectid)
46-
summary = apipoll(_get_summary)
47-
self.assertIsNotNone(summary)
48-
49-
def test_timestamp(self):
50-
ts1 = self.hsclient.server_timestamp()
51-
ts2 = self.hsclient.server_timestamp()
52-
self.assertGreater(ts1, 0)
53-
self.assertLessEqual(ts1, ts2)
7+
from .conftest import TEST_AUTH, TEST_ENDPOINT
8+
from .conftest import TEST_PROJECT_ID, TEST_SPIDER_NAME
9+
from .conftest import start_job
10+
11+
12+
def test_default_ua(hsclient):
13+
assert hsclient.user_agent == HubstorageClient.DEFAULT_USER_AGENT
14+
15+
16+
def test_custom_ua():
17+
client = HubstorageClient(auth=TEST_AUTH,
18+
endpoint=TEST_ENDPOINT,
19+
user_agent='testUA')
20+
assert client.user_agent == 'testUA'
21+
22+
23+
def test_push_job(hsclient, hsproject):
24+
hsclient.push_job(
25+
TEST_PROJECT_ID, TEST_SPIDER_NAME,
26+
priority=hsproject.jobq.PRIO_LOW,
27+
foo='baz',
28+
)
29+
job = start_job(hsproject)
30+
meta = job.metadata
31+
assert meta.get('state') == u'running', hsclient.auth
32+
assert meta.get('foo') == u'baz'
33+
hsproject.jobq.finish(job)
34+
hsproject.jobq.delete(job)
35+
36+
# job auth token is valid only while job is running
37+
meta = hsclient.get_job(job.key).metadata
38+
assert meta.get('state') == u'deleted'
39+
assert meta.get('foo') == u'baz'
40+
41+
42+
def test_jobsummaries(hsclient):
43+
# add at least one running or pending job to ensure summary is returned
44+
hsclient.push_job(TEST_PROJECT_ID, TEST_SPIDER_NAME, state='running')
45+
46+
def _get_summary():
47+
jss = hsclient.projects.jobsummaries()
48+
mjss = dict((str(js['project']), js) for js in jss)
49+
return mjss.get(TEST_PROJECT_ID)
50+
51+
summary = apipoll(_get_summary)
52+
assert summary is not None
53+
54+
55+
def test_timestamp(hsclient):
56+
ts1 = hsclient.server_timestamp()
57+
ts2 = hsclient.server_timestamp()
58+
assert ts1 > 0
59+
assert ts1 <= ts2

0 commit comments

Comments
 (0)