Browse Source

Rework the req_SUITE:read_body_period test

To avoid intermittent test failures. We only want to make
sure the function eventually returns so we don't need to
use timeouts in the test itself, or check exactly what was
read.
Loïc Hoguin 5 years ago
parent
commit
789768e8d3
1 changed files with 6 additions and 4 deletions
  1. 6 4
      test/req_SUITE.erl

+ 6 - 4
test/req_SUITE.erl

@@ -496,12 +496,14 @@ read_body_period(Config) ->
 	Ref = gun:headers(ConnPid, "POST", "/opts/read_body/period", [
 	Ref = gun:headers(ConnPid, "POST", "/opts/read_body/period", [
 		{<<"content-length">>, integer_to_binary(byte_size(Body) * 2)}
 		{<<"content-length">>, integer_to_binary(byte_size(Body) * 2)}
 	]),
 	]),
-	%% The body is sent twice, first with nofin, then wait 3 seconds, then again with fin.
+	%% The body is sent without fin. The server will read what it can
+	%% for 2 seconds. The test succeeds if we get some of the data back
+	%% (meaning the function will have returned after the period ends).
 	gun:data(ConnPid, Ref, nofin, Body),
 	gun:data(ConnPid, Ref, nofin, Body),
-	timer:sleep(3000),
-	gun:data(ConnPid, Ref, fin, Body),
 	{response, nofin, 200, _} = gun:await(ConnPid, Ref),
 	{response, nofin, 200, _} = gun:await(ConnPid, Ref),
-	{ok, Body} = gun:await_body(ConnPid, Ref),
+	{data, _, Data} = gun:await(ConnPid, Ref),
+	%% We expect to read at least some data.
+	true = Data =/= <<>>,
 	gun:close(ConnPid).
 	gun:close(ConnPid).
 
 
 %% We expect a crash.
 %% We expect a crash.