]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/thrift/lib/erl/test/test_thrift_buffered_transport.erl
buildsys: switch source download to quincy
[ceph.git] / ceph / src / jaegertracing / thrift / lib / erl / test / test_thrift_buffered_transport.erl
CommitLineData
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
24new(Transport) -> thrift_buffered_transport:new(Transport).
25
26new_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
38read(Frame, Bytes) -> thrift_buffered_transport:read(Frame, Bytes).
39
40read_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
139read_exact(Frame, Bytes) -> thrift_buffered_transport:read_exact(Frame, Bytes).
140
141read_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
240write(Framed, Data) -> thrift_buffered_transport:write(Framed, Data).
241
242write_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
311flush(Transport) -> thrift_buffered_transport:flush(Transport).
312
313flush_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
344close(Transport) -> thrift_buffered_transport:close(Transport).
345
346close_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