summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@gmail.com>2022-02-15 14:43:53 -0500
committerNick Vatamaniuc <nickva@users.noreply.github.com>2022-02-15 15:29:30 -0500
commit9f3955908f8d17ef209b5c2daebca8417fef1cff (patch)
treec2cdd88ed2560a2bf5bc1d2810a9a6d52f66a0bc
parentc6da1c6dcea55d9a782e4111b2764e114154adb7 (diff)
downloadcouchdb-9f3955908f8d17ef209b5c2daebca8417fef1cff.tar.gz
Fix flaky collator auto-upgrade test
Couldn't reproduce flakiness locally but it failed in CI at least twice. Try to extend the wait timeout and poll frequence, and set `commit_freq = 0` for some tests.
-rw-r--r--src/couch/test/eunit/couchdb_views_tests.erl26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/couch/test/eunit/couchdb_views_tests.erl b/src/couch/test/eunit/couchdb_views_tests.erl
index 183a5e69f..0d32d7fcf 100644
--- a/src/couch/test/eunit/couchdb_views_tests.erl
+++ b/src/couch/test/eunit/couchdb_views_tests.erl
@@ -20,6 +20,7 @@
-define(TIMEOUT, 1000).
-define(WAIT_DELAY_COUNT, 40).
-define(OLD_COLLATOR_VERSION, [1, 1, 1, 1]).
+-define(HEADER_WRITE_WAIT_TIMEOUT, 4500).
setup() ->
DbName = ?tempdb(),
@@ -316,7 +317,7 @@ should_upgrade_legacy_2x_view_files({DbName, Files}) ->
% ensure new header
% have to wait for awhile to upgrade the index
- wait_mrheader_record(NewViewFilePath, 3000),
+ wait_mrheader_record(NewViewFilePath),
NewHeader = read_header(NewViewFilePath),
?assertMatch(#mrheader{}, NewHeader),
@@ -350,7 +351,7 @@ should_upgrade_legacy_3_2_1_view_files({_, {DbName, Files}}) ->
% have to wait for a while to write to the index
% with [view_upgrade] commit_on_header_upgrade should happen after open
- wait_mrheader_record(NewViewFilePath, 3000),
+ wait_mrheader_record(NewViewFilePath),
NewHeader = read_header(NewViewFilePath),
?assertMatch(#mrheader{}, NewHeader),
@@ -411,7 +412,7 @@ can_disable_auto_commit_on_view_upgrade({_, {DbName, Files}}) ->
% ensure new header
% have to wait for awhile to write to the index
- wait_mrheader_record(NewViewFilePath, 3000),
+ wait_mrheader_record(NewViewFilePath),
NewHeader = read_header(NewViewFilePath),
?assertMatch(#mrheader{}, NewHeader),
@@ -465,7 +466,7 @@ can_update_views_with_old_collators({_, {DbName, Files}}) ->
% should have two collator versions
CurVer = tuple_to_list(couch_ejson_compare:get_collator_version()),
ExpVersions = [?OLD_COLLATOR_VERSION, CurVer],
- ok = wait_collator_versions(ExpVersions, ViewFilePath, 3000),
+ ok = wait_collator_versions(ExpVersions, ViewFilePath),
Header2 = read_header(ViewFilePath),
ViewInfo2 = Header2#mrheader.view_info,
?assertMatch(#{ucol_vs := ExpVersions}, ViewInfo2)
@@ -474,6 +475,7 @@ can_update_views_with_old_collators({_, {DbName, Files}}) ->
view_collator_auto_upgrade_on_open({_, {DbName, Files}}) ->
?_test(begin
[_NewDbFilePath, ViewFilePath, ViewFilePath] = Files,
+ ok = config:set("query_server_config", "commit_freq", "0", false),
% quick sanity check the test setup
Header1 = read_header(ViewFilePath),
@@ -488,7 +490,7 @@ view_collator_auto_upgrade_on_open({_, {DbName, Files}}) ->
?assertEqual(2, length(Rows)),
CurVer = tuple_to_list(couch_ejson_compare:get_collator_version()),
- wait_collator_versions([CurVer], ViewFilePath, 3000),
+ wait_collator_versions([CurVer], ViewFilePath),
Header2 = read_header(ViewFilePath),
ViewInfo2 = Header2#mrheader.view_info,
?assertMatch(#{ucol_vs := [CurVer]}, ViewInfo2),
@@ -527,7 +529,7 @@ view_collator_auto_upgrade_on_update({_, {DbName, Files}}) ->
?assertEqual(5, length(Rows1)),
CurVer = tuple_to_list(couch_ejson_compare:get_collator_version()),
- wait_collator_versions([CurVer], ViewFilePath, 3000),
+ wait_collator_versions([CurVer], ViewFilePath),
Header2 = read_header(ViewFilePath),
ViewInfo2 = Header2#mrheader.view_info,
?assertMatch(#{ucol_vs := [CurVer]}, ViewInfo2)
@@ -564,7 +566,7 @@ view_collator_auto_upgrade_can_be_disabled({_, {DbName, Files}}) ->
% View header doesn't change
CurVer = tuple_to_list(couch_ejson_compare:get_collator_version()),
ExpVersions = [?OLD_COLLATOR_VERSION, CurVer],
- wait_collator_versions(ExpVersions, ViewFilePath, 3000),
+ wait_collator_versions(ExpVersions, ViewFilePath),
Header2 = read_header(ViewFilePath),
ViewInfo2 = Header2#mrheader.view_info,
?assertMatch(#{ucol_vs := ExpVersions}, ViewInfo2)
@@ -1091,6 +1093,9 @@ copy_tree([File | Rest], Src, Dst) ->
ok = copy_tree(FullSrc, FullDst),
copy_tree(Rest, Src, Dst).
+wait_mrheader_record(File) ->
+ wait_mrheader_record(File, ?HEADER_WRITE_WAIT_TIMEOUT).
+
wait_mrheader_record(File, TimeoutMSec) ->
WaitFun = fun() ->
try read_header(File) of
@@ -1100,7 +1105,10 @@ wait_mrheader_record(File, TimeoutMSec) ->
_:_ -> wait
end
end,
- test_util:wait(WaitFun, TimeoutMSec).
+ test_util:wait(WaitFun, TimeoutMSec, 200).
+
+wait_collator_versions(Vers, File) ->
+ wait_collator_versions(Vers, File, ?HEADER_WRITE_WAIT_TIMEOUT).
wait_collator_versions(Vers, File, TimeoutMSec) ->
WaitFun = fun() ->
@@ -1114,4 +1122,4 @@ wait_collator_versions(Vers, File, TimeoutMSec) ->
wait
end
end,
- test_util:wait(WaitFun, TimeoutMSec).
+ test_util:wait(WaitFun, TimeoutMSec, 200).