|
25 | 25 |
|
26 | 26 | -define(TIMEOUT_LIST_OPS_PASS, 5000).
|
27 | 27 | -define(TIMEOUT, 30000).
|
| 28 | +-define(TIMEOUT_CHANNEL_EXCEPTION, 5000). |
28 | 29 |
|
29 | 30 | -define(CLEANUP_QUEUE_NAME, <<"cleanup-queue">>).
|
30 | 31 |
|
@@ -58,13 +59,18 @@ groups() ->
|
58 | 59 | set_disk_free_limit_command,
|
59 | 60 | set_vm_memory_high_watermark_command,
|
60 | 61 | topic_matching,
|
61 |
| - max_message_size, |
62 | 62 | {queue_max_length, [], [
|
63 | 63 | {max_length_simple, [], MaxLengthTests},
|
64 |
| - {max_length_mirrored, [], MaxLengthTests}]} |
| 64 | + {max_length_mirrored, [], MaxLengthTests}]}, |
| 65 | + max_message_size |
65 | 66 | ]}
|
66 | 67 | ].
|
67 | 68 |
|
| 69 | +suite() -> |
| 70 | + [ |
| 71 | + {timetrap, {seconds, 30}} |
| 72 | + ]. |
| 73 | + |
68 | 74 | %% -------------------------------------------------------------------
|
69 | 75 | %% Testsuite setup/teardown.
|
70 | 76 | %% -------------------------------------------------------------------
|
@@ -1308,80 +1314,65 @@ assert_channel_alive(Ch) ->
|
1308 | 1314 | amqp_channel:call(Ch, #'basic.publish'{routing_key = <<"nope">>},
|
1309 | 1315 | #amqp_msg{payload = <<"HI">>}).
|
1310 | 1316 |
|
1311 |
| -assert_channel_fail_max_size(Ch, Monitor, ExpectedException) -> |
| 1317 | +assert_channel_fail_max_size(Ch, Monitor) -> |
1312 | 1318 | receive
|
1313 | 1319 | {'DOWN', Monitor, process, Ch,
|
1314 | 1320 | {shutdown,
|
1315 |
| - {server_initiated_close, 406, Exception}}} -> |
1316 |
| - ?assertMatch(Exception, ExpectedException) |
1317 |
| - after 100000 -> |
| 1321 | + {server_initiated_close, 406, _Error}}} -> |
| 1322 | + ok |
| 1323 | + after ?TIMEOUT_CHANNEL_EXCEPTION -> |
1318 | 1324 | error({channel_exception_expected, max_message_size})
|
1319 | 1325 | end.
|
1320 | 1326 |
|
1321 | 1327 | max_message_size(Config) ->
|
1322 |
| - Binary128M = gen_binary_mb(128), |
| 1328 | + Binary2M = gen_binary_mb(2), |
| 1329 | + Binary4M = gen_binary_mb(4), |
| 1330 | + Binary6M = gen_binary_mb(6), |
| 1331 | + Binary10M = gen_binary_mb(10), |
| 1332 | + |
| 1333 | + Size2Mb = 1024 * 1024 * 2, |
| 1334 | + Size2Mb = byte_size(Binary2M), |
1323 | 1335 |
|
1324 |
| - %% Default message size is 128MB |
1325 |
| - Size128Mb = 1024 * 1024 * 128, |
1326 |
| - Size128Mb = byte_size(Binary128M), |
| 1336 | + rabbit_ct_broker_helpers:rpc(Config, 0, |
| 1337 | + application, set_env, [rabbit, max_message_size, 1024 * 1024 * 3]), |
1327 | 1338 |
|
1328 |
| - Size128Mb = rabbit_ct_broker_helpers:rpc(Config, 0, |
1329 |
| - application, get_env, [rabbit, max_message_size, undefined]), |
1330 | 1339 | {_, Ch} = rabbit_ct_client_helpers:open_connection_and_channel(Config, 0),
|
1331 | 1340 |
|
1332 | 1341 | %% Binary is whithin the max size limit
|
1333 |
| - amqp_channel:call(Ch, #'basic.publish'{routing_key = <<"nope">>}, #amqp_msg{payload = Binary128M}), |
| 1342 | + amqp_channel:call(Ch, #'basic.publish'{routing_key = <<"none">>}, #amqp_msg{payload = Binary2M}), |
1334 | 1343 | %% The channel process is alive
|
1335 | 1344 | assert_channel_alive(Ch),
|
1336 | 1345 |
|
1337 | 1346 | Monitor = monitor(process, Ch),
|
1338 |
| - %% This publish should cause a channel exception |
1339 |
| - BinaryBiggerThan128M = <<"_", Binary128M/binary>>, |
1340 |
| - amqp_channel:call(Ch, #'basic.publish'{routing_key = <<"nope">>}, #amqp_msg{payload = BinaryBiggerThan128M}), |
1341 |
| - ct:pal("Assert channel error 128"), |
1342 |
| - ExpectedException = <<"PRECONDITION_FAILED - message size ", |
1343 |
| - (integer_to_binary(byte_size(BinaryBiggerThan128M)))/binary, |
1344 |
| - " larger than configured max size ", |
1345 |
| - (integer_to_binary(Size128Mb))/binary>>, |
1346 |
| - assert_channel_fail_max_size(Ch, Monitor, ExpectedException), |
1347 |
| - |
1348 |
| - %% Set a bigger message size |
| 1347 | + amqp_channel:call(Ch, #'basic.publish'{routing_key = <<"none">>}, #amqp_msg{payload = Binary4M}), |
| 1348 | + assert_channel_fail_max_size(Ch, Monitor), |
| 1349 | + |
| 1350 | + %% increase the limit |
1349 | 1351 | rabbit_ct_broker_helpers:rpc(Config, 0,
|
1350 |
| - application, set_env, [rabbit, max_message_size, 1024 * 1024 * 256]), |
| 1352 | + application, set_env, [rabbit, max_message_size, 1024 * 1024 * 8]), |
1351 | 1353 |
|
1352 | 1354 | {_, Ch1} = rabbit_ct_client_helpers:open_connection_and_channel(Config, 0),
|
1353 | 1355 |
|
1354 |
| - amqp_channel:call(Ch1, #'basic.publish'{routing_key = <<"nope">>}, #amqp_msg{payload = Binary128M}), |
| 1356 | + amqp_channel:call(Ch1, #'basic.publish'{routing_key = <<"nope">>}, #amqp_msg{payload = Binary2M}), |
1355 | 1357 | assert_channel_alive(Ch1),
|
1356 | 1358 |
|
1357 |
| - amqp_channel:call(Ch1, #'basic.publish'{routing_key = <<"nope">>}, #amqp_msg{payload = BinaryBiggerThan128M}), |
| 1359 | + amqp_channel:call(Ch1, #'basic.publish'{routing_key = <<"nope">>}, #amqp_msg{payload = Binary4M}), |
1358 | 1360 | assert_channel_alive(Ch1),
|
1359 | 1361 |
|
1360 |
| - %% Set message size above 512MB. |
1361 |
| - %% The actual limit will be 512MB |
1362 |
| - rabbit_ct_broker_helpers:rpc(Config, 0, |
1363 |
| - application, set_env, [rabbit, max_message_size, 1024 * 1024 * 515]), |
1364 |
| - |
1365 |
| - %% Need a new channel for changes to take effect |
1366 |
| - rabbit_ct_client_helpers:close_channel(Ch1), |
1367 |
| - Ch2 = rabbit_ct_client_helpers:open_channel(Config), |
1368 |
| - |
1369 |
| - Binary512M = << Binary128M/binary, Binary128M/binary, |
1370 |
| - Binary128M/binary, Binary128M/binary>>, |
| 1362 | + amqp_channel:call(Ch1, #'basic.publish'{routing_key = <<"nope">>}, #amqp_msg{payload = Binary6M}), |
| 1363 | + assert_channel_alive(Ch1), |
1371 | 1364 |
|
1372 |
| - BinaryBiggerThan512M = <<"_", Binary512M/binary>>, |
| 1365 | + Monitor1 = monitor(process, Ch1), |
| 1366 | + amqp_channel:call(Ch1, #'basic.publish'{routing_key = <<"none">>}, #amqp_msg{payload = Binary10M}), |
| 1367 | + assert_channel_fail_max_size(Ch1, Monitor1), |
1373 | 1368 |
|
1374 |
| - amqp_channel:call(Ch2, #'basic.publish'{routing_key = <<"nope">>}, #amqp_msg{payload = Binary512M}), |
1375 |
| - assert_channel_alive(Ch2), |
| 1369 | + %% increase beyond the hard limit |
| 1370 | + rabbit_ct_broker_helpers:rpc(Config, 0, |
| 1371 | + application, set_env, [rabbit, max_message_size, 1024 * 1024 * 600]), |
| 1372 | + Val = rabbit_ct_broker_helpers:rpc(Config, 0, |
| 1373 | + rabbit_channel, get_max_message_size, []), |
1376 | 1374 |
|
1377 |
| - Monitor2 = monitor(process, Ch2), |
1378 |
| - amqp_channel:call(Ch2, #'basic.publish'{routing_key = <<"nope">>}, #amqp_msg{payload = BinaryBiggerThan512M}), |
1379 |
| - ct:pal("Assert channel error 512"), |
1380 |
| - ExpectedException1 = <<"PRECONDITION_FAILED - message size ", |
1381 |
| - (integer_to_binary(byte_size(BinaryBiggerThan512M)))/binary, |
1382 |
| - " larger than max size ", |
1383 |
| - (integer_to_binary(byte_size(Binary512M)))/binary>>, |
1384 |
| - assert_channel_fail_max_size(Ch2, Monitor2, ExpectedException1). |
| 1375 | + ?assertEqual(?MAX_MSG_SIZE, Val). |
1385 | 1376 |
|
1386 | 1377 | %% ---------------------------------------------------------------------------
|
1387 | 1378 | %% rabbitmqctl helpers.
|
|
0 commit comments