anchor.diff:  end_per_group(overflow, _Config) ->
       ok.
   
  +init_per_testcase(full_stack, Config) ->
  +    %% Same as any other overflow test case but with drain buffers
  +    %% unmocked
  +    %% Drain data
  +    ChannelId = 1337,
  +    DrainId = 2198712,
  +    DrainTok = "d.12930-321-312213-12321",
  +    {ok,URI,_} = ex_uri:decode("http://example.org"),
  +    %% --- Mocks ---
  +    %% HTTP Client
  +    meck:new(logplex_http_client, [passthrough]),
  +    meck:expect(logplex_http_client, start_link,
  +        fun(_Drain, _Channel, _Uri, _Scheme, _Host, _Port, _Timeout) ->
  +            {ok, self()}
  +        end),
  +    meck:expect(logplex_http_client, close, fun(_Pid) -> ok end),
  +    %% We make failure controleable by helper functions.
  +    %% Rube goldberg-esque, but makes writing the actual test
  +    %% a bit simpler. Succeeds by default
  +    Tab = client_call_init(),
  +    meck:expect(logplex_http_client, raw_request,
  +        fun(_Pid, _Req, _Timeout) ->
  +                Status = client_call_status(Tab),
  +                {ok, Status, []}
  +        end),
  +    %% Starting the drain
  +    {ok, Pid} = logplex_http_drain:start_link(ChannelId, DrainId, DrainTok, URI),
  +    unlink(Pid),
  +    [{channel, ChannelId}, {drain_id, DrainId}, {drain_tok, DrainTok},
  +     {uri, URI}, {drain,Pid}, {client, Tab} | Config];
   init_per_testcase(_, Config) ->
       %% Drain data
       ChannelId = 1337,
  
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: all() -> [{group, overflow}].
  
  groups() -> [{overflow, [], [full_buffer_success, full_buffer_fail,
                               full_buffer_temp_fail, full_stack]}].
  
  init_per_suite(Config) ->
      set_os_vars(),
  