THRIFT-5635 Update erlang client for Erlang 23-25
Client: erl
Patch: Sergey Yelin
This closes #2677
Summary of changes:
- Add useful compiler options
- Format sources using erlfmt
- Switch to modern callbacks in thrift_* modules
- Add static analysis (dialyzer), disabled by default
- Add/fix types for API calls
NOTE: Enabling static analysis requires additional tweaks in multiplexer module.
diff --git a/lib/erl/test/test_disklog.erl b/lib/erl/test/test_disklog.erl
index dcb6fc1..742e895 100644
--- a/lib/erl/test/test_disklog.erl
+++ b/lib/erl/test/test_disklog.erl
@@ -23,77 +23,83 @@
-include_lib("eunit/include/eunit.hrl").
disklog_test() ->
- {ok, TransportFactory} =
- thrift_disk_log_transport:new_transport_factory(
- test_disklog,
- [{file, "./test_log"},
- {size, {1024*1024, 10}}]),
- {ok, ProtocolFactory} =
- thrift_binary_protocol:new_protocol_factory( TransportFactory, []),
- {ok, Proto} = ProtocolFactory(),
- {ok, Client0} = thrift_client:new(Proto, thrift_test_thrift),
+ {ok, TransportFactory} =
+ thrift_disk_log_transport:new_transport_factory(
+ test_disklog,
+ [
+ {file, "./test_log"},
+ {size, {1024 * 1024, 10}}
+ ]
+ ),
+ {ok, ProtocolFactory} =
+ thrift_binary_protocol:new_protocol_factory(TransportFactory, []),
+ {ok, Proto} = ProtocolFactory(),
+ {ok, Client0} = thrift_client:new(Proto, thrift_test_thrift),
- io:format("Client started~n"),
+ io:format("Client started~n"),
- % We have to make oneway calls into this client only since otherwise it
- % will try to read from the disklog and go boom.
- {Client1, {ok, ok}} = thrift_client:call(Client0, testOneway, [16#deadbeef]),
- io:format("Call written~n"),
+ % We have to make oneway calls into this client only since otherwise it
+ % will try to read from the disklog and go boom.
+ {Client1, {ok, ok}} = thrift_client:call(Client0, testOneway, [16#deadbeef]),
+ io:format("Call written~n"),
- % Use the send_call method to write a non-oneway call into the log
- {Client2, ok} =
- thrift_client:send_call(Client1, testString, [<<"hello world">>]),
- io:format("Non-oneway call sent~n"),
+ % Use the send_call method to write a non-oneway call into the log
+ {Client2, ok} =
+ thrift_client:send_call(Client1, testString, [<<"hello world">>]),
+ io:format("Non-oneway call sent~n"),
- {_Client3, ok} = thrift_client:close(Client2),
- io:format("Client closed~n"),
-
- lists:foreach(fun(File) -> file:delete(File) end, [
- "./test_log.1",
- "./test_log.idx",
- "./test_log.siz"
- ]),
- io:format("Cleaning up test files~n"),
+ {_Client3, ok} = thrift_client:close(Client2),
+ io:format("Client closed~n"),
- ok.
+ lists:foreach(fun(File) -> file:delete(File) end, [
+ "./test_log.1",
+ "./test_log.idx",
+ "./test_log.siz"
+ ]),
+ io:format("Cleaning up test files~n"),
+
+ ok.
disklog_base64_test() ->
- {ok, TransportFactory} =
- thrift_disk_log_transport:new_transport_factory(
- test_disklog,
- [{file, "./test_b64_log"},
- {size, {1024*1024, 10}}]),
- {ok, B64Factory} =
- thrift_base64_transport:new_transport_factory(TransportFactory),
- {ok, BufFactory} =
- thrift_buffered_transport:new_transport_factory(B64Factory),
- {ok, ProtocolFactory} =
- thrift_binary_protocol:new_protocol_factory(BufFactory, []),
- {ok, Proto} = ProtocolFactory(),
- {ok, Client0} = thrift_client:new(Proto, thrift_test_thrift),
+ {ok, TransportFactory} =
+ thrift_disk_log_transport:new_transport_factory(
+ test_disklog,
+ [
+ {file, "./test_b64_log"},
+ {size, {1024 * 1024, 10}}
+ ]
+ ),
+ {ok, B64Factory} =
+ thrift_base64_transport:new_transport_factory(TransportFactory),
+ {ok, BufFactory} =
+ thrift_buffered_transport:new_transport_factory(B64Factory),
+ {ok, ProtocolFactory} =
+ thrift_binary_protocol:new_protocol_factory(BufFactory, []),
+ {ok, Proto} = ProtocolFactory(),
+ {ok, Client0} = thrift_client:new(Proto, thrift_test_thrift),
- io:format("Client started~n"),
+ io:format("Client started~n"),
- % We have to make oneway calls into this client only since otherwise
- % it will try to read from the disklog and go boom.
- {Client1, {ok, ok}} = thrift_client:call(Client0, testOneway, [16#deadbeef]),
- io:format("Call written~n"),
+ % We have to make oneway calls into this client only since otherwise
+ % it will try to read from the disklog and go boom.
+ {Client1, {ok, ok}} = thrift_client:call(Client0, testOneway, [16#deadbeef]),
+ io:format("Call written~n"),
- % Use the send_call method to write a non-oneway call into the log
- {Client2, ok} =
- thrift_client:send_call(Client1, testString, [<<"hello world">>]),
- io:format("Non-oneway call sent~n"),
+ % Use the send_call method to write a non-oneway call into the log
+ {Client2, ok} =
+ thrift_client:send_call(Client1, testString, [<<"hello world">>]),
+ io:format("Non-oneway call sent~n"),
- {_Client3, ok} = thrift_client:close(Client2),
- io:format("Client closed~n"),
+ {_Client3, ok} = thrift_client:close(Client2),
+ io:format("Client closed~n"),
- lists:foreach(fun(File) -> file:delete(File) end, [
- "./test_b64_log.1",
- "./test_b64_log.idx",
- "./test_b64_log.siz"
- ]),
- io:format("Cleaning up test files~n"),
+ lists:foreach(fun(File) -> file:delete(File) end, [
+ "./test_b64_log.1",
+ "./test_b64_log.idx",
+ "./test_b64_log.siz"
+ ]),
+ io:format("Cleaning up test files~n"),
- ok.
+ ok.
-endif.