]>
Commit | Line | Data |
---|---|---|
f67539c2 TL |
1 | %% |
2 | %% Licensed to the Apache Software Foundation (ASF) under one | |
3 | %% or more contributor license agreements. See the NOTICE file | |
4 | %% distributed with this work for additional information | |
5 | %% regarding copyright ownership. The ASF licenses this file | |
6 | %% to you under the Apache License, Version 2.0 (the | |
7 | %% "License"); you may not use this file except in compliance | |
8 | %% with the License. You may obtain a copy of the License at | |
9 | %% | |
10 | %% http://www.apache.org/licenses/LICENSE-2.0 | |
11 | %% | |
12 | %% Unless required by applicable law or agreed to in writing, | |
13 | %% software distributed under the License is distributed on an | |
14 | %% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
15 | %% KIND, either express or implied. See the License for the | |
16 | %% specific language governing permissions and limitations | |
17 | %% under the License. | |
18 | %% | |
19 | ||
20 | -module(test_thrift_buffered_transport). | |
21 | -include_lib("eunit/include/eunit.hrl"). | |
22 | ||
23 | ||
24 | new(Transport) -> thrift_buffered_transport:new(Transport). | |
25 | ||
26 | new_test_() -> | |
27 | [ | |
28 | {"new buffered membuffer", ?_assertMatch( | |
29 | {ok, {t_transport, thrift_buffered_transport, {t_buffered, | |
30 | {t_transport, thrift_membuffer_transport, {t_membuffer, []}}, | |
31 | [] | |
32 | }}}, | |
33 | new({t_transport, thrift_membuffer_transport, {t_membuffer, []}}) | |
34 | )} | |
35 | ]. | |
36 | ||
37 | ||
38 | read(Frame, Bytes) -> thrift_buffered_transport:read(Frame, Bytes). | |
39 | ||
40 | read_test_() -> | |
41 | [ | |
42 | {"read zero bytes from an empty buffered membuffer", ?_assertMatch( | |
43 | { | |
44 | {t_buffered, | |
45 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
46 | [] | |
47 | }, | |
48 | {ok, <<>>} | |
49 | }, | |
50 | read( | |
51 | {t_buffered, | |
52 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
53 | [] | |
54 | }, | |
55 | 0 | |
56 | ) | |
57 | )}, | |
58 | {"read 1 byte from an empty buffered membuffer", ?_assertMatch( | |
59 | {_, {ok, <<>>}}, | |
60 | read( | |
61 | {t_buffered, | |
62 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
63 | [] | |
64 | }, | |
65 | 1 | |
66 | ) | |
67 | )}, | |
68 | {"read zero bytes from nonempty buffered membuffer", ?_assertMatch( | |
69 | { | |
70 | {t_buffered, | |
71 | {t_transport, thrift_membuffer_transport, {t_membuffer, | |
72 | <<"hallo world">> | |
73 | }}, | |
74 | [] | |
75 | }, | |
76 | {ok, <<>>} | |
77 | }, | |
78 | read( | |
79 | {t_buffered, | |
80 | {t_transport, thrift_membuffer_transport, {t_membuffer, | |
81 | <<"hallo world">> | |
82 | }}, | |
83 | [] | |
84 | }, | |
85 | 0 | |
86 | ) | |
87 | )}, | |
88 | {"read 1 byte from nonempty buffered membuffer", ?_assertMatch( | |
89 | { | |
90 | {t_buffered, | |
91 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<"allo world">>}}, | |
92 | [] | |
93 | }, | |
94 | {ok, <<"h">>} | |
95 | }, | |
96 | read( | |
97 | {t_buffered, | |
98 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<"hallo world">>}}, | |
99 | [] | |
100 | }, | |
101 | 1 | |
102 | ) | |
103 | )}, | |
104 | {"read 1 byte from nonempty buffer", ?_assertMatch( | |
105 | { | |
106 | {t_buffered, | |
107 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<"allo world">>}}, | |
108 | [] | |
109 | }, | |
110 | {ok, <<"h">>} | |
111 | }, | |
112 | read( | |
113 | {t_buffered, | |
114 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<"hallo world">>}}, | |
115 | [] | |
116 | }, | |
117 | 1 | |
118 | ) | |
119 | )}, | |
120 | {"read a zillion bytes from nonempty buffered membuffer", ?_assertMatch( | |
121 | { | |
122 | {t_buffered, | |
123 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
124 | [] | |
125 | }, | |
126 | {ok, <<"hallo world">>} | |
127 | }, | |
128 | read( | |
129 | {t_buffered, | |
130 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<"hallo world">>}}, | |
131 | [] | |
132 | }, | |
133 | 65536 | |
134 | ) | |
135 | )} | |
136 | ]. | |
137 | ||
138 | ||
139 | read_exact(Frame, Bytes) -> thrift_buffered_transport:read_exact(Frame, Bytes). | |
140 | ||
141 | read_exact_test_() -> | |
142 | [ | |
143 | {"read exactly zero bytes from an empty buffered membuffer", ?_assertMatch( | |
144 | { | |
145 | {t_buffered, | |
146 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
147 | [] | |
148 | }, | |
149 | {ok, <<>>} | |
150 | }, | |
151 | read_exact( | |
152 | {t_buffered, | |
153 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
154 | [] | |
155 | }, | |
156 | 0 | |
157 | ) | |
158 | )}, | |
159 | {"read exactly 1 byte from an empty buffered membuffer", ?_assertMatch( | |
160 | {_, {error, eof}}, | |
161 | read_exact( | |
162 | {t_buffered, | |
163 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
164 | [] | |
165 | }, | |
166 | 1 | |
167 | ) | |
168 | )}, | |
169 | {"read exactly zero bytes from nonempty buffered membuffer", ?_assertMatch( | |
170 | { | |
171 | {t_buffered, | |
172 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<"hallo world">>}}, | |
173 | [] | |
174 | }, | |
175 | {ok, <<>>} | |
176 | }, | |
177 | read_exact( | |
178 | {t_buffered, | |
179 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<"hallo world">>}}, | |
180 | [] | |
181 | }, | |
182 | 0 | |
183 | ) | |
184 | )}, | |
185 | {"read exactly 1 byte from nonempty buffered membuffer", ?_assertMatch( | |
186 | { | |
187 | {t_buffered, | |
188 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<"allo world">>}}, | |
189 | [] | |
190 | }, | |
191 | {ok, <<"h">>} | |
192 | }, | |
193 | read_exact( | |
194 | {t_buffered, | |
195 | {t_transport, thrift_membuffer_transport, {t_membuffer, | |
196 | <<"hallo world">> | |
197 | }}, | |
198 | [] | |
199 | }, | |
200 | 1 | |
201 | ) | |
202 | )}, | |
203 | {"read exactly 1 byte from nonempty buffer", ?_assertMatch( | |
204 | { | |
205 | {t_buffered, | |
206 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<"allo world">>}}, | |
207 | [] | |
208 | }, | |
209 | {ok, <<"h">>} | |
210 | }, | |
211 | read_exact( | |
212 | {t_buffered, | |
213 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<"hallo world">>}}, | |
214 | [] | |
215 | }, | |
216 | 1 | |
217 | ) | |
218 | )}, | |
219 | {"read exactly a zillion bytes from nonempty buffered membuffer", ?_assertMatch( | |
220 | { | |
221 | {t_buffered, | |
222 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<"hallo world">>}}, | |
223 | [] | |
224 | }, | |
225 | {error, eof} | |
226 | }, | |
227 | read_exact( | |
228 | {t_buffered, | |
229 | {t_transport, thrift_membuffer_transport, {t_membuffer, | |
230 | <<"hallo world">> | |
231 | }}, | |
232 | [] | |
233 | }, | |
234 | 65536 | |
235 | ) | |
236 | )} | |
237 | ]. | |
238 | ||
239 | ||
240 | write(Framed, Data) -> thrift_buffered_transport:write(Framed, Data). | |
241 | ||
242 | write_test_() -> | |
243 | [ | |
244 | {"write empty list to empty buffered membuffer", ?_assertMatch( | |
245 | { | |
246 | {t_buffered, | |
247 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
248 | [[], []] | |
249 | }, | |
250 | ok | |
251 | }, | |
252 | write( | |
253 | {t_buffered, | |
254 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
255 | [] | |
256 | }, | |
257 | [] | |
258 | ) | |
259 | )}, | |
260 | {"write empty list to nonempty buffered membuffer", ?_assertMatch( | |
261 | { | |
262 | {t_buffered, | |
263 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
264 | [["hallo world"], []] | |
265 | }, | |
266 | ok | |
267 | }, | |
268 | write( | |
269 | {t_buffered, | |
270 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
271 | ["hallo world"] | |
272 | }, | |
273 | [] | |
274 | ) | |
275 | )}, | |
276 | {"write empty binary to empty buffered membuffer", ?_assertMatch( | |
277 | { | |
278 | {t_buffered, | |
279 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
280 | [[], <<>>] | |
281 | }, | |
282 | ok | |
283 | }, | |
284 | write( | |
285 | {t_buffered, | |
286 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
287 | [] | |
288 | }, | |
289 | <<>> | |
290 | ) | |
291 | )}, | |
292 | {"write empty binary to nonempty buffered membuffer", ?_assertMatch( | |
293 | { | |
294 | {t_buffered, | |
295 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
296 | [["hallo world"], <<>>] | |
297 | }, | |
298 | ok | |
299 | }, | |
300 | write( | |
301 | {t_buffered, | |
302 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
303 | ["hallo world"] | |
304 | }, | |
305 | <<>> | |
306 | ) | |
307 | )} | |
308 | ]. | |
309 | ||
310 | ||
311 | flush(Transport) -> thrift_buffered_transport:flush(Transport). | |
312 | ||
313 | flush_test_() -> | |
314 | [ | |
315 | {"flush empty buffered membuffer", ?_assertMatch( | |
316 | {{t_buffered, | |
317 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
318 | [] | |
319 | }, | |
320 | ok | |
321 | }, | |
322 | flush({t_buffered, | |
323 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
324 | [] | |
325 | }) | |
326 | )}, | |
327 | {"flush nonempty buffered membuffer", ?_assertMatch( | |
328 | {{t_buffered, | |
329 | {t_transport, thrift_membuffer_transport, {t_membuffer, | |
330 | [<<>>, <<"hallo world">>] | |
331 | }}, | |
332 | [] | |
333 | }, | |
334 | ok | |
335 | }, | |
336 | flush({t_buffered, | |
337 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
338 | <<"hallo world">> | |
339 | }) | |
340 | )} | |
341 | ]. | |
342 | ||
343 | ||
344 | close(Transport) -> thrift_buffered_transport:close(Transport). | |
345 | ||
346 | close_test_() -> | |
347 | {"close buffered membuffer", ?_assertMatch( | |
348 | {{t_buffered, | |
349 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
350 | [] | |
351 | }, | |
352 | ok | |
353 | }, | |
354 | close({t_buffered, | |
355 | {t_transport, thrift_membuffer_transport, {t_membuffer, <<>>}}, | |
356 | [] | |
357 | }) | |
358 | )}. | |
359 |