Skip to content

Commit 6cd1e1c

Browse files
committed
no idea whats happening
1 parent fd2cad9 commit 6cd1e1c

File tree

5 files changed

+968
-0
lines changed

5 files changed

+968
-0
lines changed

tests/unit/test_fcsfile.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import os
2+
import responses
3+
from cellengine.loader import get_fcsfile
4+
5+
6+
base_url = os.environ.get("CELLENGINE_DEVELOPMENT", "https://cellengine.com/api/v1/")
7+
8+
9+
@responses.activate
10+
def test_get_fcsfile(fcsfiles):
11+
responses.add(
12+
responses.GET,
13+
base_url
14+
+ "experiments/5d38a6f79fae87499999a74b/fcsfiles/5d64abe2ca9df61349ed8e7c",
15+
json=fcsfiles[3],
16+
)
17+
fcsfile = get_fcsfile(
18+
experiment_id="5d38a6f79fae87499999a74b", _id="5d64abe2ca9df61349ed8e7c"
19+
)
20+
# fcsfile = get_fcsfile(
21+
# experiment_id="5d38a6f79fae87499999a74b", name="Specimen_001_A1_A01.fcs"
22+
# )
23+
assert fcsfile._id == "5d64abe2ca9df61349ed8e7c"
24+
25+
26+
@responses.activate
27+
def test_get_fcsfile_by_name(fcsfiles):
28+
responses.add(
29+
responses.GET,
30+
base_url + "experiments/5d38a6f79fae87499999a74b/fcsfiles",
31+
json=fcsfiles[3],
32+
)
33+
responses.add(
34+
responses.GET,
35+
base_url
36+
+ "experiments/5d38a6f79fae87499999a74b/fcsfiles/5d64abe2ca9df61349ed8e7c",
37+
json=fcsfiles[3],
38+
)
39+
fcsfile = get_fcsfile(
40+
experiment_id="5d38a6f79fae87499999a74b", name="Specimen_001_A1_A01.fcs"
41+
)
42+
assert fcsfile._id == "5d64abe2ca9df61349ed8e7c"
43+
44+
45+
@responses.activate
46+
def test_get_fcsfile_by_name_and_experiment_name(fcsfiles, experiments):
47+
responses.add(
48+
responses.GET, base_url + "experiments", json=experiments[0],
49+
)
50+
responses.add(
51+
responses.GET,
52+
base_url + "experiments/5d38a6f79fae87499999a74b",
53+
json=experiments[0],
54+
)
55+
responses.add(
56+
responses.GET,
57+
base_url + "experiments/5d38a6f79fae87499999a74b/fcsfiles",
58+
json=fcsfiles[3],
59+
)
60+
responses.add(
61+
responses.GET,
62+
base_url
63+
+ "experiments/5d38a6f79fae87499999a74b/fcsfiles/5d64abe2ca9df61349ed8e7c",
64+
json=fcsfiles[3],
65+
)
66+
fcsfile = get_fcsfile(
67+
experiment_id="5d38a6f79fae87499999a74b", name="Specimen_001_A1_A01.fcs"
68+
)
69+
assert fcsfile._id == "5d64abe2ca9df61349ed8e7c"

tests/unit/test_lru_cache.py

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
import os
2+
import responses
3+
import cellengine
4+
from cellengine import loader
5+
6+
# TODO: pull the double-responses from a name request into a fixture
7+
# see the `responses` documentation on pytest fixtures
8+
9+
10+
base_url = os.environ.get("CELLENGINE_DEVELOPMENT", "https://cellengine.com/api/v1/")
11+
12+
13+
@responses.activate
14+
def test_lru_cache(client, experiments):
15+
"""Test to see if the LRU cache added hits. Multiple queries of the same
16+
object should add hits and new queries should add a miss."""
17+
loader.by_name.cache_clear()
18+
19+
responses.add(responses.GET, base_url + "experiments", json=experiments[0])
20+
responses.add(
21+
responses.GET,
22+
base_url + "experiments/5d38a6f79fae87499999a74b",
23+
json=experiments[0],
24+
)
25+
exp1 = client.get_experiment(name="test_experiment")
26+
assert loader.by_name.cache_info().misses == 1
27+
28+
responses.add(responses.GET, base_url + "experiments", json=experiments[0])
29+
responses.add(
30+
responses.GET,
31+
base_url + "experiments/5d38a6f79fae87499999a74b",
32+
json=experiments[0],
33+
)
34+
exp1 = client.get_experiment(name="test_experiment")
35+
assert loader.by_name.cache_info().misses == 1
36+
assert loader.by_name.cache_info().hits == 1
37+
38+
responses.add(responses.GET, base_url + "experiments", json=experiments[1])
39+
responses.add(
40+
responses.GET,
41+
base_url + "experiments/5d38a6f79fae87499999a74b",
42+
json=experiments[1],
43+
)
44+
exp2 = client.get_experiment(name="test_experiment-1")
45+
assert loader.by_name.cache_info().misses == 2
46+
47+
48+
@responses.activate
49+
def test_lru_cache_paths(client, experiments, fcsfiles, experiment):
50+
"""Test whether the cache returns a url with a name query on the first
51+
request and then an ID on the second request."""
52+
loader.by_name.cache_clear()
53+
54+
responses.add(responses.GET, base_url + "experiments", json=experiments[0])
55+
responses.add(
56+
responses.GET,
57+
base_url + "experiments/5d38a6f79fae87499999a74b",
58+
json=experiments[0],
59+
)
60+
61+
exp = client.get_experiment(name="test_experiment")
62+
assert (
63+
responses.calls[0].request.url
64+
== base_url + "experiments?query=eq(name,%22test_experiment%22)&limit=2"
65+
)
66+
67+
responses.add(responses.GET, base_url + "experiments", json=experiments[0])
68+
exp_copy = client.get_experiment(name="test_experiment")
69+
assert (
70+
responses.calls[1].request.url
71+
== base_url + "experiments/5d38a6f79fae87499999a74b"
72+
)
73+
74+
responses.add(responses.GET, base_url + "experiments", json=[experiments[1]])
75+
responses.add(
76+
responses.GET,
77+
base_url + "experiments/5d5faa686d24fd0bf35129b1",
78+
json=experiments[1],
79+
)
80+
different_exp = client.get_experiment(name="pytest_experiment")
81+
assert (
82+
responses.calls[2].request.url
83+
== base_url + "experiments/5d38a6f79fae87499999a74b"
84+
)
85+
86+
87+
@responses.activate
88+
def test_different_item_cache_accessor(client, experiments, fcsfiles):
89+
"""Test to see if the LRU cache adds hits. Multiple queries of the same
90+
object should add hits and new queries should add a miss.
91+
92+
Multiple queries of files of the same name in different experiments should
93+
register as different queries."""
94+
loader.by_name.cache_clear()
95+
96+
responses.add(
97+
responses.GET,
98+
base_url + "experiments?query=eq(name,%22test_experiment%22)&limit=2",
99+
json=experiments[0],
100+
match_querystring=True,
101+
)
102+
responses.add(
103+
responses.GET,
104+
base_url + "experiments/5d38a6f79fae87499999a74b",
105+
json=experiments[0],
106+
)
107+
exp1 = client.get_experiment(name="test_experiment")
108+
assert loader.by_name.cache_info().misses == 1
109+
110+
responses.add(
111+
responses.GET,
112+
base_url + "experiments/5d38a6f79fae87499999a74b/fcsfiles",
113+
json=fcsfiles[0],
114+
)
115+
responses.add(
116+
responses.GET,
117+
base_url
118+
+ "experiments/5d38a6f79fae87499999a74b/fcsfiles/5d64abe2ca9df61349ed8e79",
119+
json=fcsfiles[0],
120+
)
121+
file1 = exp1.get_fcsfile(name="Specimen_001_A12_A12.fcs")
122+
assert loader.by_name.cache_info().misses == 2
123+
124+
responses.add(
125+
responses.GET,
126+
base_url + "experiments?query=eq(name,%22test_experiment-1%22)&limit=2",
127+
json=experiments[1],
128+
match_querystring=True,
129+
)
130+
responses.add(
131+
responses.GET,
132+
base_url + "experiments/5d5faa686d24fd0bf35129b1",
133+
json=experiments[1],
134+
)
135+
exp2 = client.get_experiment(name="test_experiment-1")
136+
assert loader.by_name.cache_info().misses == 3
137+
138+
responses.add(
139+
responses.GET,
140+
base_url + "experiments/5d5faa686d24fd0bf35129b1/fcsfiles",
141+
json=fcsfiles[1],
142+
)
143+
responses.add(
144+
responses.GET,
145+
base_url
146+
+ "experiments/5d5faa686d24fd0bf35129b1/fcsfiles/5d64abe2ca9df61349ed8e7a",
147+
json=fcsfiles[1],
148+
)
149+
file2 = exp2.get_fcsfile(name="Specimen_001_A12_A12.fcs")
150+
assert (
151+
loader.by_name.cache_info().misses == 4
152+
) # not 3 because this is a different experiment
153+
154+
assert file1._id != file2._id
155+
156+
157+
@responses.activate
158+
def test_global_cache_accessor(client, experiments):
159+
loader.by_name.cache_clear()
160+
assert cellengine.cache_info().misses == 0
161+
assert loader.by_name.cache_info().misses == 0
162+
163+
responses.add(responses.GET, base_url + "experiments", json=experiments[0])
164+
responses.add(
165+
responses.GET,
166+
base_url + "experiments/5d38a6f79fae87499999a74b",
167+
json=experiments[0],
168+
)
169+
exp1 = client.get_experiment(name="test_experiment")
170+
assert cellengine.cache_info().misses == 1
171+
assert loader.by_name.cache_info().misses == 1
172+
173+
cellengine.clear_cache()
174+
assert cellengine.cache_info().misses == 0
175+
assert loader.by_name.cache_info().misses == 0

0 commit comments

Comments
 (0)