anchor.diff:  -export([all/0, init_per_suite/1, end_per_suite/1, init_per_testcase/2,
       end_per_testcase/2]).
   -export([cert_connection_test/1, token_connection_test/1, protobuf_msg_test/1,
  -    multi_message_test/1, client_send_test/1]).
  +    multi_message_test/1, client_send_test/1, client_communicate_test/1]).
   
   all() ->
       [token_connection_test, cert_connection_test, protobuf_msg_test,
  -        multi_message_test, client_send_test].
  +        multi_message_test, client_send_test, client_communicate_test].
   
   -define(CLEANUP, true).
   
  
positive.code:     lists:foreach(
          fun(N) ->
              ?assertMatch({ok, N}, test_utils:receive_msg(N, timer:seconds(5)))
          end, MsgNumbers).
  
  client_send_test(Config) ->
      % given
      [Worker1, _] = ?config(op_worker_nodes, Config),
      {ok, {_, SessionId}} = connect_via_token(Worker1),
      Code = 'VOK',
      Description = <<"desc">>,
      Msg = #server_message{message_body = #status{
          code = Code,
          description = Description}
      },
  
      % when
      rpc:call(Worker1, client_communicator, send, [Msg, SessionId]),
  
      % then
      ReceivedData =
          receive
              {ssl, _, Data} -> Data
          after timer:seconds(5) ->
              {error, timeout}
          end,
      ?assertNotEqual({error, timeout}, ReceivedData),
      ReceivedMessage = server_messages:decode_msg(ReceivedData, 'ServerMessage'),
      ?assertEqual(#'ServerMessage'{
          message_id = undefined,
          message_body = {status, #'Status'{code = Code, description = Description}}
      }, ReceivedMessage).
  
  %%%===================================================================
  %%% SetUp and TearDown functions
  
negative.code:     ok = ssl:send(Sock, RawMsg),
  
      % then
      ?assertMatch({ok, _}, ssl:connection_info(Sock)),
      ok = ssl:close(Sock).
  
  multi_message_test(Config) ->
      % given
  