Skip to content

Commit 8319db9

Browse files
authored
Merge pull request #112 from victor-torres/VCRGzipSerializer
Refactoring VcrGzipSerializer to normalize new cassettes
2 parents df6be83 + a057f1e commit 8319db9

21 files changed

+130
-85
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,6 @@ dist
1111

1212
# documentation
1313
docs/_build
14+
15+
.DS_Store
16+
pytestdebug.log

tests/client/conftest.py

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
import os
2-
import zlib
3-
import base64
4-
import pickle
52

63
import vcr
74
import pytest
@@ -12,42 +9,23 @@
129
from scrapinghub.hubstorage.serialization import MSGPACK_AVAILABLE
1310

1411
from ..conftest import request_accept_header_matcher
15-
16-
17-
TEST_PROJECT_ID = "2222222"
18-
TEST_SPIDER_NAME = 'hs-test-spider'
19-
TEST_FRONTIER_SLOT = 'site.com'
20-
TEST_BOTGROUP = 'python-hubstorage-test'
21-
TEST_COLLECTION_NAME = "test_collection_123"
22-
TEST_ADMIN_AUTH = os.getenv('AUTH', 'f' * 32)
23-
TEST_USER_AUTH = os.getenv('USER_AUTH', 'e' * 32)
24-
TEST_DASH_ENDPOINT = os.getenv('DASH_ENDPOINT', 'http://33.33.33.51:8080/api/')
25-
TEST_HS_ENDPOINT = os.getenv('HS_ENDPOINT',
26-
'http://storage.vm.scrapinghub.com')
12+
from ..conftest import VCRGzipSerializer
13+
from ..conftest import (
14+
TEST_SPIDER_NAME,
15+
TEST_FRONTIER_SLOT,
16+
TEST_COLLECTION_NAME,
17+
TEST_ENDPOINT,
18+
TEST_PROJECT_ID,
19+
TEST_ADMIN_AUTH,
20+
TEST_DASH_ENDPOINT,
21+
)
2722

2823
# use some fixed timestamp to represent current time
2924
TEST_TS = 1476803148638
3025

3126
# vcrpy creates the cassetes automatically under VCR_CASSETES_DIR
3227
VCR_CASSETES_DIR = 'tests/client/cassetes'
3328

34-
35-
class VCRGzipSerializer(object):
36-
"""Custom ZIP serializer for VCR.py."""
37-
38-
def serialize(self, cassette_dict):
39-
# receives a dict, must return a string
40-
# there can be binary data inside some of the requests,
41-
# so it's impossible to use json for serialization to string
42-
compressed = zlib.compress(pickle.dumps(cassette_dict, protocol=2))
43-
return base64.b64encode(compressed).decode('utf8')
44-
45-
def deserialize(self, cassette_string):
46-
# receives a string, must return a dict
47-
decoded = base64.b64decode(cassette_string.encode('utf8'))
48-
return pickle.loads(zlib.decompress(decoded))
49-
50-
5129
my_vcr = vcr.VCR(cassette_library_dir=VCR_CASSETES_DIR, record_mode='once')
5230
my_vcr.register_serializer('gz', VCRGzipSerializer())
5331
my_vcr.register_matcher('accept_header', request_accept_header_matcher)
@@ -79,7 +57,7 @@ def is_using_real_services(request):
7957
@pytest.fixture(scope='session')
8058
def client():
8159
return ScrapinghubClient(auth=TEST_ADMIN_AUTH,
82-
endpoint=TEST_HS_ENDPOINT,
60+
endpoint=TEST_ENDPOINT,
8361
dash_endpoint=TEST_DASH_ENDPOINT)
8462

8563

tests/client/test_activity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import pytest
44

5-
from .conftest import TEST_PROJECT_ID
5+
from ..conftest import TEST_PROJECT_ID
66

77

88
def _add_test_activity(project):

tests/client/test_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from scrapinghub.client.jobs import Job
77
from scrapinghub.client.projects import Projects, Project
88

9-
from .conftest import TEST_PROJECT_ID
9+
from ..conftest import TEST_PROJECT_ID
1010

1111

1212
# ScrapinghubClient class tests

tests/client/test_collections.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from scrapinghub.client.exceptions import NotFound
88
from scrapinghub.client.exceptions import ValueTooLarge
99

10-
from .conftest import TEST_COLLECTION_NAME
10+
from ..conftest import TEST_COLLECTION_NAME
1111

1212

1313
def _mkitem():

tests/client/test_frontiers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from six import string_types
66

77
from scrapinghub.client.frontiers import Frontiers, Frontier, FrontierSlot
8-
from .conftest import TEST_FRONTIER_SLOT
8+
from ..conftest import TEST_FRONTIER_SLOT
99

1010

1111
def _add_test_requests_to_frontier(frontier):

tests/client/test_job.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
from scrapinghub.client.requests import Requests
1010
from scrapinghub.client.samples import Samples
1111

12-
from .conftest import TEST_PROJECT_ID
13-
from .conftest import TEST_SPIDER_NAME
12+
from ..conftest import TEST_PROJECT_ID
13+
from ..conftest import TEST_SPIDER_NAME
1414

1515

1616
def test_job_base(client, spider):

tests/client/test_projects.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717

1818
from scrapinghub.hubstorage.utils import apipoll
1919

20-
from .conftest import TEST_PROJECT_ID, TEST_SPIDER_NAME
21-
from .conftest import TEST_USER_AUTH, TEST_DASH_ENDPOINT
20+
from ..conftest import TEST_PROJECT_ID, TEST_SPIDER_NAME
21+
from ..conftest import TEST_USER_AUTH, TEST_DASH_ENDPOINT
2222
from .utils import validate_default_meta
2323

2424

tests/client/test_spiders.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from scrapinghub.client.spiders import Spider
1313
from scrapinghub.client.utils import JobKey
1414

15-
from .conftest import TEST_PROJECT_ID, TEST_SPIDER_NAME
15+
from ..conftest import TEST_PROJECT_ID, TEST_SPIDER_NAME
1616
from .utils import validate_default_meta
1717

1818

tests/client/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
from .conftest import TEST_PROJECT_ID, TEST_SPIDER_NAME
2-
from .conftest import TEST_DASH_ENDPOINT
1+
from ..conftest import TEST_PROJECT_ID, TEST_SPIDER_NAME
2+
from ..conftest import TEST_DASH_ENDPOINT
33

44

55
def validate_default_meta(meta, state='pending', units=1,

0 commit comments

Comments
 (0)