|
92 | 92 |
|
93 | 93 | otp_6278/1, otp_10131/1, otp_16768/1, otp_16809/1, |
94 | 94 |
|
95 | | - decrease_size_with_chunk_step/1]). |
| 95 | + decrease_size_with_chunk_step/1, decrease_size_twice/1]). |
96 | 96 |
|
97 | 97 | -export([head_fun/1, hf/0, hf_bin/0, lserv/1, |
98 | 98 | measure/0, init_m/1, xx/0]). |
@@ -169,7 +169,8 @@ groups() -> |
169 | 169 | {change_size, [], |
170 | 170 | [change_size_before, change_size_during, |
171 | 171 | change_size_after, default_size, change_size2, |
172 | | - change_size_truncate, decrease_size_with_chunk_step]}]. |
| 172 | + change_size_truncate, decrease_size_with_chunk_step, |
| 173 | + decrease_size_twice]}]. |
173 | 174 |
|
174 | 175 | init_per_suite(Config) -> |
175 | 176 | Config. |
@@ -4447,6 +4448,73 @@ decrease_size_with_chunk_step(Conf) when is_list(Conf) -> |
4447 | 4448 | ok = disk_log:close(Log), |
4448 | 4449 | del(File, 2). |
4449 | 4450 |
|
| 4451 | +decrease_size_twice(Conf) when is_list(Conf) -> |
| 4452 | + Dir = ?privdir(Conf), |
| 4453 | + Log = decrease_size_twice, |
| 4454 | + File = filename:join(Dir, lists:concat([Log, ".LOG"])), |
| 4455 | + |
| 4456 | + Data_1 = [1, 2, 3], |
| 4457 | + Data_2 = [4, 5, 6], |
| 4458 | + Data_3 = [7, 8, 9], |
| 4459 | + Data_2_3 = Data_2 ++ Data_3, |
| 4460 | + Data = Data_1 ++ Data_2_3, |
| 4461 | + |
| 4462 | + {ok, Log} = disk_log:open([{size, {50, 3}}, {name, Log}, {type, wrap}, |
| 4463 | + {file, File}, {notify, true}]), |
| 4464 | + |
| 4465 | + ok = disk_log:log_terms(Log, Data), |
| 4466 | + |
| 4467 | + %% Changing size to the same size should make no changes |
| 4468 | + ok = disk_log:change_size(Log, {50, 3}), |
| 4469 | + Data = get_all_terms(Log), |
| 4470 | + |
| 4471 | + %% Changing size to smaller and then again to the same smaller size, |
| 4472 | + %% should leave OldMaxF as it was before |
| 4473 | + ok = disk_log:change_size(Log, {50, 2}), |
| 4474 | + ok = disk_log:change_size(Log, {50, 2}), |
| 4475 | + Data = get_all_terms(Log), |
| 4476 | + |
| 4477 | + %% After writing data with new (smaller) log size, some terms should be truncated |
| 4478 | + ok = disk_log:log_terms(Log, Data), |
| 4479 | + Data_2_3 = get_all_terms(Log), |
| 4480 | + |
| 4481 | + %% Changing size to bigger should remove OldMaxF |
| 4482 | + ok = disk_log:change_size(Log, {50, 3}), |
| 4483 | + ok = disk_log:log_terms(Log, Data), |
| 4484 | + Data = get_all_terms(Log), |
| 4485 | + |
| 4486 | + %% Changing size to smaller, and then to even smaller should keep bigger OldMaxF |
| 4487 | + ok = disk_log:change_size(Log, {50, 2}), |
| 4488 | + ok = disk_log:change_size(Log, {50, 1}), |
| 4489 | + Data = get_all_terms(Log), |
| 4490 | + |
| 4491 | + %% After writing data with new (even smaller) log size, some terms should be truncated |
| 4492 | + ok = disk_log:log_terms(Log, Data), |
| 4493 | + Data_3 = get_all_terms(Log), |
| 4494 | + |
| 4495 | + %% Changing size to bigger should remove OldMaxF |
| 4496 | + ok = disk_log:change_size(Log, {50, 3}), |
| 4497 | + ok = disk_log:log_terms(Log, Data), |
| 4498 | + Data = get_all_terms(Log), |
| 4499 | + |
| 4500 | + %% Changing size to smaller, writing some data (but less than required to cause logs to wrap), |
| 4501 | + %% and then to even smaller should keep bigger OldMaxF |
| 4502 | + ok = disk_log:log_terms(Log, lists:seq(1, 7)), |
| 4503 | + ok = disk_log:change_size(Log, {50, 2}), |
| 4504 | + ok = disk_log:log_terms(Log, [8, 9]), |
| 4505 | + ok = disk_log:change_size(Log, {50, 1}), |
| 4506 | + Data = get_all_terms(Log), |
| 4507 | + |
| 4508 | + %% Changing size to bigger and than to bigger again, should allow to read all data |
| 4509 | + ok = disk_log:change_size(Log, {50, 2}), |
| 4510 | + Data = get_all_terms(Log), |
| 4511 | + ok = disk_log:change_size(Log, {50, 3}), |
| 4512 | + Data = get_all_terms(Log), |
| 4513 | + |
| 4514 | + ok = disk_log:close(Log), |
| 4515 | + |
| 4516 | + del(File, 3). |
| 4517 | + |
4450 | 4518 | mark(FileName, What) -> |
4451 | 4519 | {ok,Fd} = file:open(FileName, [raw, binary, read, write]), |
4452 | 4520 | {ok,_} = file:position(Fd, 4), |
|
0 commit comments