anchor.diff:                                    ,{"send_list", fun send_list/1}
                                     ,{"sync_send_list", fun sync_send_list/1}
                                     ,{"sync_send_list_no_reply", fun sync_send_list_no_reply/1}
  -%                                 ,{"close_connection", fun close_connection/1}
                                     ]]]} end
       }.
   
  
positive.code:     {ok, [Reply0, Reply1, Reply2]} = wait_future(Future),
      ?assertMatch({ok, #ofp_message{type = features_reply, xid = RXID0}}, Reply0),
      ?assertMatch({ok, #ofp_message{type = features_reply, xid = RXID1}}, Reply1),
      ?assertMatch({ok, #ofp_message{type = features_reply, xid = RXID2}}, Reply2).
      % no message callback
  
  sync_send_list_no_reply({Socket, ConnTable}) ->
      Connection = get_connection(ConnTable),
      Msg = of_msg_lib:get_features(4),
      Future = future(of_driver, sync_send_list, [Connection, [Msg, Msg, Msg]]),
  
negative.code:     gen_tcp:close(Socket),
      ?assert(meck:validate(of_driver_handler_mock)).
  
  close_connection() ->
      ExpectedDatapathId = 1,
      Me = self(),
      meck:expect(of_driver_handler_mock, init,
          fun(_IpAddr, _DatapathId, _Features, _Version, Connection, _Opt) ->
              Me ! {connection, Connection},
              {ok, callback_state} end),
      meck:expect(of_driver_handler_mock, terminate, fun(_Reason, callback_state) -> ok end),
      Socket = connect(ExpectedDatapathId),
      Conn = receive
          {connection, C} ->
              C
      end,
      of_driver:close_connection(Conn),
      ?assert(meck:validate(of_driver_handler_mock)).
  
  aux_connect({Socket, _ConnTable}) ->
      ExpectedAuxId = 1,
      meck:expect(of_driver_handler_mock, handle_connect,
  