@@ -31,71 +31,71 @@ def large_event_response_fixture():
3131 os .remove (file_path )
3232
3333
34- # @pytest.mark.slow
35- # @pytest.mark.limit_memory("20 MB")
36- # @pytest.mark.parametrize(
37- # "decoder_yaml_definition",
38- # [
39- # "type: JsonlDecoder",
40- # ],
41- # )
42- # def test_jsonl_decoder_memory_usage(
43- # requests_mock, large_events_response, decoder_yaml_definition: str
44- # ):
45- # #
46- # lines_in_response, file_path = large_events_response
47- # content = f"""
48- # name: users
49- # type: DeclarativeStream
50- # retriever:
51- # type: SimpleRetriever
52- # decoder:
53- # {decoder_yaml_definition}
54- # paginator:
55- # type: "NoPagination"
56- # requester:
57- # path: "users/{{{{ stream_slice.slice }}}}"
58- # type: HttpRequester
59- # url_base: "https://for-all-mankind.nasa.com/api/v1"
60- # http_method: GET
61- # authenticator:
62- # type: NoAuth
63- # request_headers: {{}}
64- # request_body_json: {{}}
65- # record_selector:
66- # type: RecordSelector
67- # extractor:
68- # type: DpathExtractor
69- # field_path: []
70- # partition_router:
71- # type: ListPartitionRouter
72- # cursor_field: "slice"
73- # values:
74- # - users1
75- # - users2
76- # - users3
77- # - users4
78- # primary_key: []
79- # """
80- #
81- # factory = ModelToComponentFactory()
82- # stream_manifest = YamlDeclarativeSource._parse(content)
83- # stream = factory.create_component(
84- # model_type=DeclarativeStreamModel, component_definition=stream_manifest, config={}
85- # )
86- #
87- # def get_body():
88- # return open(file_path, "rb", buffering=30)
89- #
90- # counter = 0
91- # requests_mock.get("https://for-all-mankind.nasa.com/api/v1/users/users1", body=get_body())
92- # requests_mock.get("https://for-all-mankind.nasa.com/api/v1/users/users2", body=get_body())
93- # requests_mock.get("https://for-all-mankind.nasa.com/api/v1/users/users3", body=get_body())
94- # requests_mock.get("https://for-all-mankind.nasa.com/api/v1/users/users4", body=get_body())
95- #
96- # stream_slices = list(stream.stream_slices(sync_mode=SyncMode.full_refresh))
97- # for stream_slice in stream_slices:
98- # for _ in stream.retriever.read_records(records_schema={}, stream_slice=stream_slice):
99- # counter += 1
100- #
101- # assert counter == lines_in_response * len(stream_slices)
34+ @pytest .mark .slow
35+ @pytest .mark .limit_memory ("20 MB" )
36+ @pytest .mark .parametrize (
37+ "decoder_yaml_definition" ,
38+ [
39+ "type: JsonlDecoder" ,
40+ ],
41+ )
42+ def test_jsonl_decoder_memory_usage (
43+ requests_mock , large_events_response , decoder_yaml_definition : str
44+ ):
45+ #
46+ lines_in_response , file_path = large_events_response
47+ content = f"""
48+ name: users
49+ type: DeclarativeStream
50+ retriever:
51+ type: SimpleRetriever
52+ decoder:
53+ { decoder_yaml_definition }
54+ paginator:
55+ type: "NoPagination"
56+ requester:
57+ path: "users/{{{{ stream_slice.slice }}}}"
58+ type: HttpRequester
59+ url_base: "https://for-all-mankind.nasa.com/api/v1"
60+ http_method: GET
61+ authenticator:
62+ type: NoAuth
63+ request_headers: {{}}
64+ request_body_json: {{}}
65+ record_selector:
66+ type: RecordSelector
67+ extractor:
68+ type: DpathExtractor
69+ field_path: []
70+ partition_router:
71+ type: ListPartitionRouter
72+ cursor_field: "slice"
73+ values:
74+ - users1
75+ - users2
76+ - users3
77+ - users4
78+ primary_key: []
79+ """
80+
81+ factory = ModelToComponentFactory ()
82+ stream_manifest = YamlDeclarativeSource ._parse (content )
83+ stream = factory .create_component (
84+ model_type = DeclarativeStreamModel , component_definition = stream_manifest , config = {}
85+ )
86+
87+ def get_body ():
88+ return open (file_path , "rb" , buffering = 30 )
89+
90+ counter = 0
91+ requests_mock .get ("https://for-all-mankind.nasa.com/api/v1/users/users1" , body = get_body ())
92+ requests_mock .get ("https://for-all-mankind.nasa.com/api/v1/users/users2" , body = get_body ())
93+ requests_mock .get ("https://for-all-mankind.nasa.com/api/v1/users/users3" , body = get_body ())
94+ requests_mock .get ("https://for-all-mankind.nasa.com/api/v1/users/users4" , body = get_body ())
95+
96+ stream_slices = list (stream .stream_slices (sync_mode = SyncMode .full_refresh ))
97+ for stream_slice in stream_slices :
98+ for _ in stream .retriever .read_records (records_schema = {}, stream_slice = stream_slice ):
99+ counter += 1
100+
101+ assert counter == lines_in_response * len (stream_slices )
0 commit comments