anchor.diff:  all() -> [{group, overflow}].
   
   groups() -> [{overflow, [], [full_buffer_success, full_buffer_fail,
  -                             full_buffer_temp_fail]}].
  +                             full_buffer_temp_fail, full_stack]}].
   
   init_per_suite(Config) ->
       set_os_vars(),
  
positive.code:     Drain = ?config(drain,Config),
      erlang:monitor(process, Drain),
      Drain ! shutdown,
      meck:unload(logplex_http_client),
      meck:unload(logplex_drain_buffer),
      client_call_end(?config(client,Config)),
      receive
          {'DOWN', _, _, Drain, {shutdown,call}} -> ok;
  
negative.code:     {match, _} = re:run(Success2, "This drain dropped 3 messages"),
      {match, _} = re:run(Success3, "This drain dropped 3 messages").
  
  %% Checking that framing funs and overflow functions are alright
  full_stack(Config) ->
      ChannelId = ?config(channel, Config),
      Client = ?config(client, Config),
      client_call_status(Client, 404),
      Msg = fun(M) -> {user, debug, logplex_syslog_utils:datetime(now),
                       "fakehost", "erlang", M}
      end,
      logplex_channel:post_msg({channel, ChannelId}, Msg("mymsg1")),
      logplex_channel:post_msg({channel, ChannelId}, Msg("mymsg2")),
      logplex_channel:post_msg({channel, ChannelId}, Msg("mymsg3")),
      logplex_channel:post_msg({channel, ChannelId}, Msg("mymsg4")),
      logplex_channel:post_msg({channel, ChannelId}, Msg("mymsg5")),
      wait_for_mocked_call(logplex_http_client, raw_request, '_', 1, 5000),
      client_call_status(Client, 200),
      logplex_channel:post_msg({channel, ChannelId}, Msg("mymsg6")),
      wait_for_mocked_call(logplex_http_client, raw_request, '_', 2, 5000),
      Hist = meck:history(logplex_http_client),
      [Failure, Success] =
        [iolist_to_binary(IoData) ||
         {_Pid, {_Mod, raw_request, [_Ref, IoData, _TimeOut]}, _Res} <- Hist],
      %% missed call
      {match, _} = re:run(Failure, "mymsg1"),
      {match, _} = re:run(Failure, "mymsg2"),
      {match, _} = re:run(Failure, "mymsg3"),
      {match, _} = re:run(Failure, "mymsg4"),
      {match, _} = re:run(Failure, "mymsg5"),
      nomatch = re:run(Failure, "mymsg6"),
      nomatch = re:run(Failure, "Error L10"),
      %% successful call
      nomatch = re:run(Success, "mymsg1"),
      nomatch = re:run(Success, "mymsg2"),
      nomatch = re:run(Success, "mymsg3"),
      nomatch = re:run(Success, "mymsg4"),
      nomatch = re:run(Success, "mymsg5"),
      {match, _} = re:run(Success, "mymsg6"),
      {match, _} = re:run(Success, "Error L10"),
      {match, _} = re:run(Success, "This drain dropped 5 messages").
  
  %%% HELPERS
  wait_for_mocked_call(Mod, Fun, Args, NumCalls, Time) ->
      wait_for_mocked_call(Mod,Fun,Args, NumCalls, Time*1000,os:timestamp()).
  
  