Skip to content

MIM-2711 Sync GitHub Actions big test presets with CircleCI#4751

Open
mdbrnowski wants to merge 5 commits into
masterfrom
gh-actions-sync-presets
Open

MIM-2711 Sync GitHub Actions big test presets with CircleCI#4751
mdbrnowski wants to merge 5 commits into
masterfrom
gh-actions-sync-presets

Conversation

@mdbrnowski

@mdbrnowski mdbrnowski commented Jul 21, 2026

Copy link
Copy Markdown
Member

This PR makes .circleci/presets.config the single source of truth for big-test presets on both CIs, so editing that one file updates CircleCI and GitHub Actions together (see: #4692).

@mongoose-im

mongoose-im commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

CircleCI results for 4717ee6


small_tests_latest / small_tests / 2ae73db
Reports root / small


small_tests_latest_arm64 / small_tests / 2ae73db
Reports root / small


small_tests_legacy / small_tests / 2ae73db
Reports root / small


ldap_mnesia_latest / ldap_mnesia / 2ae73db
Status: 🟢 Passed
Reports root/ big
OK: 2312 / Failed: 0 / User-skipped: 1567 / Auto-skipped: 0


internal_mnesia_latest / internal_mnesia / 2ae73db
Status: 🟢 Passed
Reports root/ big
OK: 46 / Failed: 0 / User-skipped: 0 / Auto-skipped: 0


dynamic_domains_pgsql_cets_latest / pgsql_cets / 2ae73db
Status: 🟢 Passed
Reports root/ big
OK: 5173 / Failed: 0 / User-skipped: 237 / Auto-skipped: 0


elasticsearch_and_cassandra_mnesia_latest / elasticsearch_and_cassandra_mnesia / 2ae73db
Status: 🟢 Passed
Reports root/ big
OK: 786 / Failed: 0 / User-skipped: 112 / Auto-skipped: 0

mongoose_elasticsearch_SUITE:end_per_suite
{error,
  {{badrpc,
     {'EXIT',
       {#{what => event_already_registered,
        event_name => wpool_global_queue_lengths,
        labels => #{pool_tag => default,pool_type => elastic}},
        [{mongoose_instrument,set_up,3,
           [{file,
            "/home/circleci/project/src/instrument/mongoose_instrument.erl"},
          {line,114}]},
         {lists,foreach_1,2,[{file,"lists.erl"},{line,2641}]},
         {mongoose_wpool,start,5,
           [{file,
            "/home/circleci/project/src/wpool/mongoose_wpool.erl"},
          {line,162}]},
         {mongoose_wpool,'-start_configured_pools/3-lc$^1/1-1-',1,
           [{file,
            "/home/circleci/project/src/wpool/mongoose_wpool.erl"},
          {line,129}]},
         {mongoose_wpool,start_configured_pools,1,[]}]}}},
   [{distributed_helper,rpc,
      [#{node => mongooseim@localhost},
       mongoose_wpool,start_configured_pools,
       [[#{scope => global,tag => default,type => elastic,
         opts =>
           #{strategy => best_worker,workers => 10,
           call_timeout => 5000},
         conn_opts => #{port => 9200,host => <<"localhost">>}}]]],
      [{file,
         "/home/circleci/project/big_tests/../test/common/distributed_helper.erl"},
       {line,143}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1799}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1396}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1240}]}]}...

Report log


mysql_cets_latest / mysql_cets / 2ae73db
Status: 🟢 Passed
Reports root/ big
OK: 46 / Failed: 0 / User-skipped: 0 / Auto-skipped: 0


dynamic_domains_pgsql_cets_legacy / pgsql_cets / 2ae73db
Status: 🟢 Passed
Reports root/ big
OK: 5173 / Failed: 0 / User-skipped: 237 / Auto-skipped: 0


pgsql_cets_latest / pgsql_cets / 2ae73db
Status: 🟢 Passed
Reports root/ big
OK: 5494 / Failed: 0 / User-skipped: 213 / Auto-skipped: 0


pgsql_mnesia_latest / pgsql_mnesia / 2ae73db
Status: 🟢 Passed
Reports root/ big
OK: 5608 / Failed: 0 / User-skipped: 344 / Auto-skipped: 0


pgsql_redis_latest / pgsql_redis / 2ae73db
Status: 🟢 Passed
Reports root/ big
OK: 5574 / Failed: 0 / User-skipped: 378 / Auto-skipped: 0


cockroachdb_cets_latest / cockroachdb_cets / 2ae73db
Status: 🟢 Passed
Reports root/ big
OK: 5494 / Failed: 0 / User-skipped: 213 / Auto-skipped: 0


pgsql_cets_legacy / pgsql_cets / 2ae73db
Status: 🟢 Passed
Reports root/ big
OK: 5494 / Failed: 0 / User-skipped: 213 / Auto-skipped: 0

@codecov

codecov Bot commented Jul 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.94%. Comparing base (e24bfee) to head (2ae73db).
⚠️ Report is 2 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4751      +/-   ##
==========================================
+ Coverage   86.91%   86.94%   +0.02%     
==========================================
  Files         554      554              
  Lines       33497    33497              
==========================================
+ Hits        29115    29123       +8     
+ Misses       4382     4374       -8     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mdbrnowski mdbrnowski changed the title Sync GitHub Actions big test presets with CircleCI MIM-2711 Sync GitHub Actions big test presets with CircleCI Jul 21, 2026
@mdbrnowski
mdbrnowski marked this pull request as ready for review July 21, 2026 11:09
Comment thread .github/workflows/ci.yml Outdated
Comment thread tools/generate-presets Outdated
print_circleci(Presets) ->
maps:foreach(
fun(Name, Opts) ->
print_circleci_preset(Name, resolve_include(Opts, Presets))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to move resolve_include into parse_presets/1? This way, the data passed to print_* functions is already fully resolved.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, why not

Comment thread tools/generate-presets Outdated
Comment on lines +61 to +75
print_github(Presets, Otp) ->
Objs = [github_object(Name, resolve_include(maps:get(Name, Presets), Presets), Otp)
|| Name <- lists:sort(maps:keys(Presets))],
io:format("~s", [["{\"include\":[", lists:join(",", Objs), "]}"]]).

github_object(Name, #{executor := Executor, preset := Preset} = Opts, Otp) ->
Fields = [kv("name", Name), kv("preset", Preset),
kv("otp", otp_version(Executor, Otp)),
kv("test-spec", maps:get(spec, Opts, "default.spec"))],
["{", lists:join(",", Fields), "}"].

kv(Key, Value) -> ["\"", Key, "\":\"", to_str(Value), "\""].

to_str(A) when is_atom(A) -> atom_to_list(A);
to_str(L) -> L.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since OTP 27.0, the built-in json module is available, so this code could be simplified by using it:

Suggested change
print_github(Presets, Otp) ->
Objs = [github_object(Name, resolve_include(maps:get(Name, Presets), Presets), Otp)
|| Name <- lists:sort(maps:keys(Presets))],
io:format("~s", [["{\"include\":[", lists:join(",", Objs), "]}"]]).
github_object(Name, #{executor := Executor, preset := Preset} = Opts, Otp) ->
Fields = [kv("name", Name), kv("preset", Preset),
kv("otp", otp_version(Executor, Otp)),
kv("test-spec", maps:get(spec, Opts, "default.spec"))],
["{", lists:join(",", Fields), "}"].
kv(Key, Value) -> ["\"", Key, "\":\"", to_str(Value), "\""].
to_str(A) when is_atom(A) -> atom_to_list(A);
to_str(L) -> L.
print_github(Presets, OTPs) ->
Include = [
#{
<<"name">> => Name,
<<"preset">> => list_to_binary(Preset),
<<"otp">> => otp_version(Executor, OTPs),
<<"test-spec">> => list_to_binary(maps:get(spec, Opts, "default.spec"))
}
|| {Name, #{executor := Executor, preset := Preset} = Opts} <- maps:to_list(Presets)
],
io:format("~s~n", [json:encode(#{include => Include})]).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Though your snippet drops the dynamic_domains_* presets: the generator pattern #{executor := _, preset := _} doesn't match them until their include is resolved.

Comment thread .github/workflows/ci.yml Outdated
@mdbrnowski
mdbrnowski requested a review from kamilwaz July 23, 2026 15:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants