anchor.diff:  -export([sender/3, receiver2/2, dummy_waiter/0, dead_process/0,
            roundtrip/1, bounce/1, do_dist_auto_connect/1, inet_rpc_server/1,
            dist_parallel_sender/3, dist_parallel_receiver/0,
  -         dist_evil_parallel_receiver/0,
  -         sendersender/4, sendersender2/4]).
  +         dist_evil_parallel_receiver/0]).
   
   %% epmd_module exports
   -export([start_link/0, register_node/2, register_node/3, port_please/2]).
  
positive.code: bulk_sendsend2(Terms, BinSize, BusyBufSize) ->
      ct:timetrap({seconds, 30}),
  
      io:format("Sending ~w binaries, each of size ~w K",
                [Terms, BinSize]),
      {ok, NodeRecv} = start_node(bulk_receiver),
      Recv = spawn(NodeRecv, erlang, apply, [fun receiver/2, [0, 0]]),
      Bin = list_to_binary(lists:duplicate(BinSize*1024, 253)),
      %%Size = Terms*size(Bin),
  
      %% SLF LEFT OFF HERE.
      %% When the caller uses small hunks, like 4k via
  
negative.code: bulk_send_big(Config) when is_list(Config) ->
      bulk_send(32, 64).
  
  bulk_send(Terms, BinSize) ->
      ct:timetrap({seconds, 30}),
  
      io:format("Sending ~w binaries, each of size ~w K", [Terms, BinSize]),
      {ok, Node} = start_node(bulk_receiver),
      Recv = spawn(Node, erlang, apply, [fun receiver/2, [0, 0]]),
      Bin = binary:copy(<<253>>, BinSize*1024),
      Size = Terms*size(Bin),
      {Elapsed, {Terms, Size}} = test_server:timecall(?MODULE, sender,
                                                      [Recv, Bin, Terms]),
      stop_node(Node),
      {comment, integer_to_list(round(Size/1024/max(1,Elapsed))) ++ " K/s"}.
  
  sender(To, _Bin, 0) ->
      To ! {done, self()},
      receive
          Any ->
              Any
      end;
  sender(To, Bin, Left) ->
      To ! {term, Bin},
      sender(To, Bin, Left-1).
  
  bulk_send_bigbig(Config) when is_list(Config) ->
      Terms = 32*5,
      BinSize = 4,
      {Rate1, MonitorCount1} = bulk_sendsend2(Terms, BinSize,   5),
      {Rate2, MonitorCount2} = bulk_sendsend2(Terms, BinSize, 995),
      Ratio = if MonitorCount2 == 0 -> MonitorCount1 / 1.0;
                 true               -> MonitorCount1 / MonitorCount2
              end,
      Comment0 = io_lib:format("~p K/s, ~p K/s, "
                               "~p monitor msgs, ~p monitor msgs, "
                               "~.1f monitor ratio",
                               [Rate1,Rate2,MonitorCount1,
                                MonitorCount2,Ratio]),
      Comment = lists:flatten(Comment0),
      if
          %% A somewhat arbitrary ratio, but hopefully one that will
          %% accommodate a wide range of CPU speeds.
  