Skip to content

Commit 8965b8d

Browse files
committed
Test changing wrap disk_log size multiple times
1 parent 7f71b1b commit 8965b8d

File tree

1 file changed

+71
-2
lines changed

1 file changed

+71
-2
lines changed

lib/kernel/test/disk_log_SUITE.erl

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@
9090

9191
change_attribute/1,
9292

93-
otp_6278/1, otp_10131/1, otp_16768/1, otp_16809/1]).
93+
otp_6278/1, otp_10131/1, otp_16768/1, otp_16809/1,
94+
95+
decrease_size_twice/1]).
9496

9597
-export([head_fun/1, hf/0, lserv/1,
9698
measure/0, init_m/1, xx/0]).
@@ -167,7 +169,7 @@ groups() ->
167169
{change_size, [],
168170
[change_size_before, change_size_during,
169171
change_size_after, default_size, change_size2,
170-
change_size_truncate]}].
172+
change_size_truncate, decrease_size_twice]}].
171173

172174
init_per_suite(Config) ->
173175
Config.
@@ -4409,6 +4411,73 @@ otp_16809(Conf) when is_list(Conf) ->
44094411
HeadFunc2 = info(Log, head, undef),
44104412
ok = disk_log:close(Log).
44114413

4414+
decrease_size_twice(Conf) when is_list(Conf) ->
4415+
Dir = ?privdir(Conf),
4416+
Log = decrease_size_twice,
4417+
File = filename:join(Dir, lists:concat([Log, ".LOG"])),
4418+
4419+
Data_1 = [1, 2, 3],
4420+
Data_2 = [4, 5, 6],
4421+
Data_3 = [7, 8, 9],
4422+
Data_2_3 = Data_2 ++ Data_3,
4423+
Data = Data_1 ++ Data_2_3,
4424+
4425+
{ok, Log} = disk_log:open([{size, {50, 3}}, {name, Log}, {type, wrap},
4426+
{file, File}, {notify, true}]),
4427+
4428+
ok = disk_log:log_terms(Log, Data),
4429+
4430+
%% Changing size to the same size should make no changes
4431+
ok = disk_log:change_size(Log, {50, 3}),
4432+
Data = get_all_terms(Log),
4433+
4434+
%% Changing size to smaller and then again to the same smaller size,
4435+
%% should leave OldMaxF as it was before
4436+
ok = disk_log:change_size(Log, {50, 2}),
4437+
ok = disk_log:change_size(Log, {50, 2}),
4438+
Data = get_all_terms(Log),
4439+
4440+
%% After writing data with new (smaller) log size, some terms should be truncated
4441+
ok = disk_log:log_terms(Log, Data),
4442+
Data_2_3 = get_all_terms(Log),
4443+
4444+
%% Changing size to bigger should remove OldMaxF
4445+
ok = disk_log:change_size(Log, {50, 3}),
4446+
ok = disk_log:log_terms(Log, Data),
4447+
Data = get_all_terms(Log),
4448+
4449+
%% Changing size to smaller, and then to even smaller should keep bigger OldMaxF
4450+
ok = disk_log:change_size(Log, {50, 2}),
4451+
ok = disk_log:change_size(Log, {50, 1}),
4452+
Data = get_all_terms(Log),
4453+
4454+
%% After writing data with new (even smaller) log size, some terms should be truncated
4455+
ok = disk_log:log_terms(Log, Data),
4456+
Data_3 = get_all_terms(Log),
4457+
4458+
%% Changing size to bigger should remove OldMaxF
4459+
ok = disk_log:change_size(Log, {50, 3}),
4460+
ok = disk_log:log_terms(Log, Data),
4461+
Data = get_all_terms(Log),
4462+
4463+
%% Changing size to smaller, writing some data (but less than required to cause logs to wrap),
4464+
%% and then to even smaller should keep bigger OldMaxF
4465+
ok = disk_log:log_terms(Log, lists:seq(1, 7)),
4466+
ok = disk_log:change_size(Log, {50, 2}),
4467+
ok = disk_log:log_terms(Log, [8, 9]),
4468+
ok = disk_log:change_size(Log, {50, 1}),
4469+
Data = get_all_terms(Log),
4470+
4471+
%% Changing size to bigger and than to bigger again, should allow to read all data
4472+
ok = disk_log:change_size(Log, {50, 2}),
4473+
Data = get_all_terms(Log),
4474+
ok = disk_log:change_size(Log, {50, 3}),
4475+
Data = get_all_terms(Log),
4476+
4477+
ok = disk_log:close(Log),
4478+
4479+
del(File, 3).
4480+
44124481
mark(FileName, What) ->
44134482
{ok,Fd} = file:open(FileName, [raw, binary, read, write]),
44144483
{ok,_} = file:position(Fd, 4),

0 commit comments

Comments
 (0)