Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce config defaults for the 'general' section #3409

Merged
merged 5 commits into from
Nov 23, 2021

Conversation

chrzaszcz
Copy link
Member

@chrzaszcz chrzaszcz commented Nov 19, 2021

This is the starting point for introducing defaults to the config spec.

As the converted section contains the most important options, they needed to be set explicitly in small tests. It seems the right way to go - now it is clear which ones are required by each test suite.

Most of the added lines contain the expected default values for converted config files - these might grow further when more defaults are introduced, but other sections are not mandatory, so it should only be a minor increase or verbosity.

See commit messages for more details.

@chrzaszcz chrzaszcz changed the title Introduce config defaults for the 'general' sections Introduce config defaults for the 'general' section Nov 19, 2021
@mongoose-im
Copy link
Collaborator

mongoose-im commented Nov 19, 2021

small_tests_24 / small_tests / fdb2122
Reports root / small


internal_mnesia_24 / internal_mnesia / fdb2122
Reports root/ big
OK: 1587 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


small_tests_23 / small_tests / fdb2122
Reports root / small


dynamic_domains_pgsql_mnesia_24 / pgsql_mnesia / fdb2122
Reports root/ big
OK: 2722 / Failed: 0 / User-skipped: 186 / Auto-skipped: 0


dynamic_domains_mysql_redis_24 / mysql_redis / fdb2122
Reports root/ big
OK: 2704 / Failed: 1 / User-skipped: 203 / Auto-skipped: 0

service_domain_db_SUITE:db:db_keeps_syncing_after_cluster_join
{error,{test_case_failed,{[<<"example1.com">>,<<"example2.com">>,
               <<"example3.com">>],
              [<<"example1.com">>,<<"example2.com">>,
               <<"example3.com">>,<<"example4.com">>]}}}

Report log


dynamic_domains_pgsql_mnesia_23 / pgsql_mnesia / fdb2122
Reports root/ big
OK: 2722 / Failed: 0 / User-skipped: 186 / Auto-skipped: 0


dynamic_domains_mssql_mnesia_24 / odbc_mssql_mnesia / fdb2122
Reports root/ big
OK: 2722 / Failed: 0 / User-skipped: 186 / Auto-skipped: 0


ldap_mnesia_24 / ldap_mnesia / fdb2122
Reports root/ big
OK: 1514 / Failed: 1 / User-skipped: 370 / Auto-skipped: 0

s2s_SUITE:both_tls_optional:simple_message
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,<<"alice_simple_message_28.462677@fed1/res1">>,
          escalus_tcp,<0.13876.1>,
          [{event_manager,<0.13872.1>},
           {server,<<"fed1">>},
           {username,<<"alice_simple_message_28.462677">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.13872.1>},
            {server,<<"fed1">>},
            {username,<<"alice_simple_message_28.462677">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,<<"alice_simple_message_28.462677">>},
           {server,<<"fed1">>},
           {host,<<"localhost">>},
           {port,5242},
           {auth,{escalus_auth,auth_plain}},
           {wspath,undefined},
           {username,<<"alice_simple_message_28.462677">>},
           {server,<<"fed1">>},
           {host,<<"localhost">>},
           {port,5242},
           {password,<<"makota2">>},
           {stream_id,<<"734b564cf75fce1c">>}]},
        10000],
       [{file,
          "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {s2s_SUITE,'-simple_message/1-fun-0-',2,
       [{file,"/home/circleci/app/big_tests/tests/s2s_SUITE.erl"},
        {line,124}]},
     {escalus_story,story,4,
       [{file,
          "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
        {line,72}]},
     {test_serve...

Report log


ldap_mnesia_23 / ldap_mnesia / fdb2122
Reports root/ big
OK: 1521 / Failed: 1 / User-skipped: 370 / Auto-skipped: 0

sm_SUITE:parallel_manual_ack_freq_1:resume_session_state_send_message
{error,
  {{assertion_failed,assert_many,true,
     [#Fun<sm_SUITE.22.80356403>,#Fun<sm_SUITE.22.80356403>,
      #Fun<sm_SUITE.22.80356403>],
     [{xmlel,<<"presence">>,
        [{<<"from">>,
        <<"alicE_resume_session_state_send_message_81.541376@localhost/escalus-default-resource">>},
         {<<"to">>,
        <<"alice_resume_session_state_send_message_81.541376@localhost/escalus-default-resource">>},
         {<<"xml:lang">>,<<"en">>}],
        []},
      {xmlel,<<"message">>,
        [{<<"from">>,
        <<"bOb_resume_session_state_send_message_81.480282@localhost/escalus-default-resource">>},
         {<<"to">>,
        <<"alicE_resume_session_state_send_message_81.541376@localhost">>},
         {<<"xml:lang">>,<<"en">>},
         {<<"type">>,<<"chat">>}],
        [{xmlel,<<"body">>,[],[{xmlcdata,<<"msg-1">>}]},
         {xmlel,<<"delay">>,
           [{<<"xmlns">>,<<"urn:xmpp:delay">>},
          {<<"stamp">>,<<"2021-11-19T15:44:41.610683Z">>},
          {<<"from">>,<<"localhost">>}],
           [{xmlcdata,<<"SM Storage">>}]}]},
      {xmlel,<<"message">>,
        [{<<"from">>,
        <<"bOb_resume_session_state_send_message_81.480282@localhost/escalus-default-resource">>},
         {<<"to">>,
        <<"alicE_resume_session_state_send_message_81.541376@localhost">>},
         {<<"xml:lang">>,<<"en">>},
         {<<"type">>,<<"chat">>}],
        [{xmlel,<<"body">>,[],[{xmlcdata,<<"msg-2">>}]},
         {xmlel,<<"delay">>,
           [{<<"xmlns">>,<<"urn:xmpp:...

Report log


elasticsearch_and_cassandra_24 / elasticsearch_and_cassandra_mnesia / fdb2122
Reports root/ big
OK: 1892 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


pgsql_mnesia_24 / pgsql_mnesia / fdb2122
Reports root/ big
OK: 3121 / Failed: 0 / User-skipped: 183 / Auto-skipped: 0


mysql_redis_24 / mysql_redis / fdb2122
Reports root/ big
OK: 3104 / Failed: 0 / User-skipped: 200 / Auto-skipped: 0


mssql_mnesia_24 / odbc_mssql_mnesia / fdb2122
Reports root/ big
OK: 3139 / Failed: 1 / User-skipped: 183 / Auto-skipped: 0

jingle_SUITE:all:resp_4xx_from_sip_proxy_results_in_session_terminate
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       [{<<"from">>,<<"error.480@localhost">>},
        {<<"to">>,
         <<"alice_resp_4xx_from_sip_proxy_results_in_session_terminate_70.666147@localhost/res1">>},
        {<<"id">>,<<"88484c16-3d77-4eb4-8705-3c28b0be607b">>},
        {<<"type">>,<<"set">>}],
       [{xmlel,<<"jingle">>,
          [{<<"xmlns">>,<<"urn:xmpp:jingle:1">>},
           {<<"action">>,<<"session-terminate">>},
           {<<"sid">>,<<"5087f52d-0c66-4b66-8782-97ad087b1b41">>}],
          [{xmlel,<<"reason">>,[],
             [{xmlel,<<"general-error">>,[],[]},
            {xmlel,<<"sip-error">>,
              [{<<"code">>,<<"480">>}],
              [{xmlcdata,<<"Temporarily Unavailable">>}]}]}]}]},
     "<iq from='error.480@localhost' to='alice_resp_4xx_from_sip_proxy_results_in_session_terminate_70.666147@localhost/res1' id='88484c16-3d77-4eb4-8705-3c28b0be607b' type='set'><jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='5087f52d-0c66-4b66-8782-97ad087b1b41'><reason><general-error/><sip-error code='480'>Temporarily Unavailable</sip-error></reason></jingle></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,84}]},
    {jingle_SUITE,send_initiate_and_wait_for_first_iq_set,2,
      [{file,"/home/circleci/app/big_tests/tests/jingle_SUITE.erl"},
       {line,395}]},
    {jingle_SUITE,
      '-res...

Report log


pgsql_mnesia_23 / pgsql_mnesia / fdb2122
Reports root/ big
OK: 3121 / Failed: 0 / User-skipped: 183 / Auto-skipped: 0


riak_mnesia_24 / riak_mnesia / fdb2122
Reports root/ big
OK: 1780 / Failed: 3 / User-skipped: 298 / Auto-skipped: 0

sm_SUITE:parallel:messages_are_properly_flushed_during_resumption
{error,
  {{badmatch,
     {error,
       {connection_step_failed,
         {#Fun<sm_SUITE.11.149602>,
          {client,
            <<"alicE_messages_are_properly_flushed_during_resumption_11.554043@localhost">>,
            escalus_tcp,<0.23016.1>,undefined,
            [{username,
               <<"alicE_messages_are_properly_flushed_during_resumption_11.554043">>},
             {server,<<"localhost">>},
             {password,<<"matygrysa">>},
             {stream_management,true},
             {host,<<"localhost">>},
             {stream_id,<<"72a80d0ee91c238e">>}]},
          [{compression,[<<"zlib">>]},
           {starttls,true},
           {stream_management,true},
           {advanced_message_processing,true},
           {client_state_indication,false},
           {sasl_mechanisms,[<<"SCRAM-SHA-256">>,<<"PLAIN">>]},
           {caps,undefined}]},
         {timeout,get_resumed}}}},
   [{sm_SUITE,'-messages_are_properly_flushed_during_resumption/1-fun-1-',
      3,
      [{file,"/home/circleci/app/big_tests/tests/sm_SUITE.erl"},
       {line,1226}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,72}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1224}]}]}}

Report log

sm_SUITE:parallel_manual_ack_freq_1:resume_session_state_stop_c2s
{error,{thrown,{timeout,msg}}}

Report log

sm_SUITE:parallel_manual_ack_freq_1:resume_session_state_stop_c2s
{error,{thrown,{timeout,msg}}}

Report log

@codecov
Copy link

codecov bot commented Nov 19, 2021

Codecov Report

Merging #3409 (14f7b32) into master (f25ca1a) will increase coverage by 0.06%.
The diff coverage is 100.00%.

❗ Current head 14f7b32 differs from pull request most recent head c75b417. Consider uploading reports for the commit c75b417 to get more accurate results
Impacted file tree graph

@@            Coverage Diff             @@
##           master    #3409      +/-   ##
==========================================
+ Coverage   80.83%   80.90%   +0.06%     
==========================================
  Files         414      414              
  Lines       32301    32305       +4     
==========================================
+ Hits        26110    26135      +25     
+ Misses       6191     6170      -21     
Impacted Files Coverage Δ
src/config/mongoose_config_parser_toml.erl 98.52% <100.00%> (+0.04%) ⬆️
src/config/mongoose_config_spec.erl 98.55% <100.00%> (+<0.01%) ⬆️
src/domain/mongoose_domain_api.erl 100.00% <100.00%> (ø)
src/ejabberd_app.erl 95.34% <100.00%> (ø)
src/ejabberd_c2s.erl 89.48% <100.00%> (-0.01%) ⬇️
src/ejabberd_ctl.erl 16.72% <100.00%> (ø)
src/ejabberd_router.erl 71.51% <100.00%> (ø)
src/ejabberd_service.erl 67.27% <100.00%> (ø)
src/ejabberd_sm.erl 84.91% <100.00%> (ø)
src/metrics/mongoose_metrics.erl 95.45% <100.00%> (+6.49%) ⬆️
... and 21 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f25ca1a...c75b417. Read the comment docs.

Base automatically changed from config-defaults to master November 22, 2021 08:15
Default values should be valid and in the already processed form, so
only the 'format' step is performed for them.

This allows specifying defaults for subsections without having to put
them in the raw TOML format.
rdbms_server_type had conflicting defaults, now it is 'generic';
this option needs to be removed anyway.
@mongoose-im
Copy link
Collaborator

mongoose-im commented Nov 22, 2021

small_tests_24 / small_tests / 14f7b32
Reports root / small


internal_mnesia_24 / internal_mnesia / 14f7b32
Reports root/ big
OK: 1587 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


small_tests_23 / small_tests / 14f7b32
Reports root / small


dynamic_domains_mysql_redis_24 / mysql_redis / 14f7b32
Reports root/ big
OK: 2711 / Failed: 1 / User-skipped: 203 / Auto-skipped: 0

mam_SUITE:rdbms_prefs_cases:prefs_set_cdata_request
{error,{test_case_failed,"ASSERT EQUAL\n\tExpected {prefs_result_iq,<<\"roster\">>,\n                  [<<\"[email protected]\">>,\n                   <<\"[email protected]\">>],\n                  []}\n\tValue {prefs_result_iq,<<\"always\">>,\n                 [<<\"[email protected]\">>,\n                <<\"[email protected]\">>],\n                 []}\n"}}

Report log


dynamic_domains_pgsql_mnesia_24 / pgsql_mnesia / 14f7b32
Reports root/ big
OK: 2721 / Failed: 1 / User-skipped: 186 / Auto-skipped: 0

service_domain_db_SUITE:db:db_reinserted_from_one_node_while_service_disabled_on_another
{error,
  {{badmatch,{ok,<<"dbgroup2">>}},
   [{service_domain_db_SUITE,
      db_reinserted_from_one_node_while_service_disabled_on_another,1,
      [{file,
         "/home/circleci/app/big_tests/tests/service_domain_db_SUITE.erl"},
       {line,547}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1224}]}]}}

Report log


ldap_mnesia_24 / ldap_mnesia / 14f7b32
Reports root/ big
OK: 1514 / Failed: 0 / User-skipped: 370 / Auto-skipped: 0


dynamic_domains_mssql_mnesia_24 / odbc_mssql_mnesia / 14f7b32
Reports root/ big
OK: 2722 / Failed: 0 / User-skipped: 186 / Auto-skipped: 0


dynamic_domains_pgsql_mnesia_23 / pgsql_mnesia / 14f7b32
Reports root/ big
OK: 2722 / Failed: 0 / User-skipped: 186 / Auto-skipped: 0


ldap_mnesia_23 / ldap_mnesia / 14f7b32
Reports root/ big
OK: 1514 / Failed: 0 / User-skipped: 370 / Auto-skipped: 0


elasticsearch_and_cassandra_24 / elasticsearch_and_cassandra_mnesia / 14f7b32
Reports root/ big
OK: 1892 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


pgsql_mnesia_24 / pgsql_mnesia / 14f7b32
Reports root/ big
OK: 3121 / Failed: 0 / User-skipped: 183 / Auto-skipped: 0


mysql_redis_24 / mysql_redis / 14f7b32
Reports root/ big
OK: 3115 / Failed: 3 / User-skipped: 200 / Auto-skipped: 0

mam_SUITE:rdbms_prefs_cases:messages_filtered_when_prefs_default_policy_is_roster
{error,{test_case_failed,"ASSERT EQUAL\n\tExpected []\n\tValue [ok]\n"}}

Report log

mam_SUITE:rdbms_prefs_cases:messages_filtered_when_prefs_default_policy_is_never
{error,{test_case_failed,"ASSERT EQUAL\n\tExpected []\n\tValue [ok,ok]\n"}}

Report log

service_domain_db_SUITE:db:db_domains_with_unknown_host_type_are_ignored_by_core
{error,
  {{badmatch,{error,not_found}},
   [{service_domain_db_SUITE,
      db_domains_with_unknown_host_type_are_ignored_by_core,1,
      [{file,
         "/home/circleci/app/big_tests/tests/service_domain_db_SUITE.erl"},
       {line,445}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1224}]}]}}

Report log


mssql_mnesia_24 / odbc_mssql_mnesia / 14f7b32
Reports root/ big
OK: 3118 / Failed: 3 / User-skipped: 183 / Auto-skipped: 0

service_domain_db_SUITE:db:db_keeps_syncing_after_cluster_join
{error,{test_case_failed,{[<<"example1.com">>],
              [<<"example1.com">>,<<"example2.com">>]}}}

Report log

service_domain_db_SUITE:db:rest_with_auth:rest_delete_domain_cleans_data_from_mam
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,
          <<"bob_rest_delete_domain_cleans_data_from_mam_39.769804@example.org/res1">>,
          escalus_tcp,<0.18894.2>,
          [{event_manager,<0.18888.2>},
           {server,<<"example.org">>},
           {username,
             <<"bob_rest_delete_domain_cleans_data_from_mam_39.769804">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.18888.2>},
            {server,<<"example.org">>},
            {username,
              <<"bob_rest_delete_domain_cleans_data_from_mam_39.769804">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,
             <<"bob_rest_delete_domain_cleans_data_from_mam_39.769804">>},
           {server,<<"example.org">>},
           {host,<<"localhost">>},
           {port,5232},
           {auth,{escalus_auth,auth_plain}},
           {wspath,undefined},
           {username,
             <<"bob_rest_delete_domain_cleans_data_from_mam_39.769804">>},
           {server,<<"example.org">>},
           {host,<<"localhost">>},
           {password,<<"makota3">>},
           {port,5232},
           {stream_id,<<"e2d055fd7db14f2b">>}]},
        5000],
       [{file,
          "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {service_domain_db_SUITE,
       '-rest_delete_domain_cleans_data_from_mam/1-fun-0-',5...

Report log

service_domain_db_SUITE:db:rest_without_auth:rest_delete_domain_cleans_data_from_mam
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,
          <<"bob_rest_delete_domain_cleans_data_from_mam_48.280793@example.org/res1">>,
          escalus_tcp,<0.19520.2>,
          [{event_manager,<0.19514.2>},
           {server,<<"example.org">>},
           {username,
             <<"bob_rest_delete_domain_cleans_data_from_mam_48.280793">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.19514.2>},
            {server,<<"example.org">>},
            {username,
              <<"bob_rest_delete_domain_cleans_data_from_mam_48.280793">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,
             <<"bob_rest_delete_domain_cleans_data_from_mam_48.280793">>},
           {server,<<"example.org">>},
           {host,<<"localhost">>},
           {port,5232},
           {auth,{escalus_auth,auth_plain}},
           {wspath,undefined},
           {username,
             <<"bob_rest_delete_domain_cleans_data_from_mam_48.280793">>},
           {server,<<"example.org">>},
           {host,<<"localhost">>},
           {password,<<"makota3">>},
           {port,5232},
           {stream_id,<<"b87afad8856d9460">>}]},
        5000],
       [{file,
          "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {service_domain_db_SUITE,
       '-rest_delete_domain_cleans_data_from_mam/1-fun-0-',5...

Report log


pgsql_mnesia_23 / pgsql_mnesia / 14f7b32
Reports root/ big
OK: 3121 / Failed: 0 / User-skipped: 183 / Auto-skipped: 0


riak_mnesia_24 / riak_mnesia / 14f7b32
Reports root/ big
OK: 1749 / Failed: 1 / User-skipped: 298 / Auto-skipped: 0

push_SUITE:toggling:disable_all_nodes_removes_it_from_all_user_session_infos
{error,{{badmatch,{{jid,<<"pub-sub">>,
            <<"disable_all_nodes_removes_it_from_all_user_session_infos_10.656937">>,
            <<>>,<<"pub-sub">>,
            <<"disable_all_nodes_removes_it_from_all_user_session_infos_10.656937">>,
            <<>>},
           <<"princely_musings_dwOckzvKaU0=">>,[]}},
    [{push_SUITE,'-disable_all_nodes_removes_it_from_all_user_session_infos/1-fun-0-',
           3,
           [{file,"/home/circleci/app/big_tests/tests/push_SUITE.erl"},
            {line,417}]},
     {escalus_story,story,4,
            [{file,"/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
             {line,72}]},
     {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
     {test_server,run_test_case_eval1,6,
            [{file,"test_server.erl"},{line,1292}]},
     {test_server,run_test_case_eval,9,
            [{file,"test_server.erl"},{line,1224}]}]}}

Report log

@mongoose-im
Copy link
Collaborator

mongoose-im commented Nov 22, 2021

small_tests_24 / small_tests / 6436d18
Reports root / small


internal_mnesia_24 / internal_mnesia / 6436d18
Reports root/ big
OK: 1587 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


small_tests_24 / small_tests / 6436d18
Reports root / small


internal_mnesia_24 / internal_mnesia / 6436d18
Reports root/ big
OK: 1587 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0

@mongoose-im
Copy link
Collaborator

mongoose-im commented Nov 22, 2021

small_tests_24 / small_tests / 35c0657
Reports root / small


internal_mnesia_24 / internal_mnesia / 35c0657
Reports root/ big
OK: 1587 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


small_tests_23 / small_tests / 35c0657
Reports root / small


dynamic_domains_mysql_redis_24 / mysql_redis / 35c0657
Reports root/ big
OK: 2705 / Failed: 0 / User-skipped: 203 / Auto-skipped: 0


dynamic_domains_pgsql_mnesia_24 / pgsql_mnesia / 35c0657
Reports root/ big
OK: 2722 / Failed: 0 / User-skipped: 186 / Auto-skipped: 0


ldap_mnesia_24 / ldap_mnesia / 35c0657
Reports root/ big
OK: 1514 / Failed: 0 / User-skipped: 370 / Auto-skipped: 0


dynamic_domains_mssql_mnesia_24 / odbc_mssql_mnesia / 35c0657
Reports root/ big
OK: 2722 / Failed: 0 / User-skipped: 186 / Auto-skipped: 0


dynamic_domains_pgsql_mnesia_23 / pgsql_mnesia / 35c0657
Reports root/ big
OK: 2724 / Failed: 1 / User-skipped: 186 / Auto-skipped: 0

sm_SUITE:unacknowledged_message_hook:unacknowledged_message_hook_bounce
{error,
  {{assertion_failed,assert,is_chat_message,
     [<<"msg-1">>],
     {xmlel,<<"message">>,
       [{<<"from">>,
         <<"bOb_unacknowledged_message_hook_bounce_49.140186@domain.example.com/escalus-default-resource">>},
        {<<"to">>,
         <<"alicE_unacknowledged_message_hook_bounce_49.172643@domain.example.com">>},
        {<<"xml:lang">>,<<"en">>},
        {<<"type">>,<<"chat">>}],
       [{xmlel,<<"body">>,[],[{xmlcdata,<<"msg-2">>}]},
        {xmlel,<<"delay">>,
          [{<<"xmlns">>,<<"urn:xmpp:delay">>},
           {<<"stamp">>,<<"2021-11-22T10:40:49.204933Z">>},
           {<<"from">>,<<"domain.example.com">>}],
          [{xmlcdata,<<"SM Storage">>}]}]},
     "<message from='bOb_unacknowledged_message_hook_bounce_49.140186@domain.example.com/escalus-default-resource' to='alicE_unacknowledged_message_hook_bounce_49.172643@domain.example.com' xml:lang='en' type='chat'><body>msg-2</body><delay xmlns='urn:xmpp:delay' stamp='2021-11-22T10:40:49.204933Z' from='domain.example.com'>SM Storage</delay></message>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,84}]},
    {sm_SUITE,unacknowledged_message_hook_common,2,
      [{file,"/home/circleci/app/big_tests/tests/sm_SUITE.erl"},
       {line,891}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1784}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line...

Report log


ldap_mnesia_23 / ldap_mnesia / 35c0657
Reports root/ big
OK: 1514 / Failed: 0 / User-skipped: 370 / Auto-skipped: 0


elasticsearch_and_cassandra_24 / elasticsearch_and_cassandra_mnesia / 35c0657
Reports root/ big
OK: 1892 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


pgsql_mnesia_24 / pgsql_mnesia / 35c0657
Reports root/ big
OK: 3139 / Failed: 1 / User-skipped: 183 / Auto-skipped: 0

jingle_SUITE:all:resp_4xx_from_sip_proxy_results_in_session_terminate
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       [{<<"from">>,<<"error.480@localhost">>},
        {<<"to">>,
         <<"alice_resp_4xx_from_sip_proxy_results_in_session_terminate_52.844074@localhost/res1">>},
        {<<"id">>,<<"9cacb823-39ad-47c7-9949-5adc6a354765">>},
        {<<"type">>,<<"set">>}],
       [{xmlel,<<"jingle">>,
          [{<<"xmlns">>,<<"urn:xmpp:jingle:1">>},
           {<<"action">>,<<"session-terminate">>},
           {<<"sid">>,<<"44f5a29e-2edb-4016-ac02-7b2e71e8494d">>}],
          [{xmlel,<<"reason">>,[],
             [{xmlel,<<"general-error">>,[],[]},
            {xmlel,<<"sip-error">>,
              [{<<"code">>,<<"480">>}],
              [{xmlcdata,<<"Temporarily Unavailable">>}]}]}]}]},
     "<iq from='error.480@localhost' to='alice_resp_4xx_from_sip_proxy_results_in_session_terminate_52.844074@localhost/res1' id='9cacb823-39ad-47c7-9949-5adc6a354765' type='set'><jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='44f5a29e-2edb-4016-ac02-7b2e71e8494d'><reason><general-error/><sip-error code='480'>Temporarily Unavailable</sip-error></reason></jingle></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,84}]},
    {jingle_SUITE,send_initiate_and_wait_for_first_iq_set,2,
      [{file,"/home/circleci/app/big_tests/tests/jingle_SUITE.erl"},
       {line,395}]},
    {jingle_SUITE,
      '-res...

Report log


pgsql_mnesia_23 / pgsql_mnesia / 35c0657
Reports root/ big
OK: 3121 / Failed: 0 / User-skipped: 183 / Auto-skipped: 0


mysql_redis_24 / mysql_redis / 35c0657
Reports root/ big
OK: 3104 / Failed: 0 / User-skipped: 200 / Auto-skipped: 0


riak_mnesia_24 / riak_mnesia / 35c0657
Reports root/ big
OK: 1741 / Failed: 1 / User-skipped: 298 / Auto-skipped: 0

mod_event_pusher_rabbit_SUITE:group_chat_message_publish:group_chat_message_received_event_properly_formatted
{error,
  {{assertMatch,
     [{module,mod_event_pusher_rabbit_SUITE},
      {line,435},
      {expression,
        "get_decoded_message_from_rabbit ( AliceGroupChatMsgRecvRK )"},
      {pattern,
        "# { << \"from_user_id\" >> := BobRoomJID , << \"to_user_id\" >> := AliceFullJID , << \"message\" >> := Message }"},
      {value,
        #{<<"from_user_id">> => <<"[email protected]">>,
        <<"message">> => <<>>,
        <<"to_user_id">> =>
          <<"alice_unnamed_99.108539@localhost/res1">>}}]},
   [{mod_event_pusher_rabbit_SUITE,
      '-group_chat_message_received_event_properly_formatted/1-fun-1-',3,
      [{file,
         "/home/circleci/app/big_tests/tests/mod_event_pusher_rabbit_SUITE.erl"},
       {line,435}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,72}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1224}]}]}}

Report log


mssql_mnesia_24 / odbc_mssql_mnesia / 35c0657
Reports root/ big
OK: 3121 / Failed: 0 / User-skipped: 183 / Auto-skipped: 0

@chrzaszcz chrzaszcz marked this pull request as ready for review November 22, 2021 10:23
Copy link
Contributor

@Premwoik Premwoik left a comment

Choose a reason for hiding this comment

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

Looks good as far as I understand :) I like that now the default values are gathered together and it is much easier read them all.

test/ejabberd_sm_SUITE.erl Outdated Show resolved Hide resolved
Setting them explicitly makes it clear which ones are required,
even though it is a bit more verbose.
To make it easier, the 'parse' function was extended with the
'without' option, that prevents 'hosts' and 'default_server_domain'
from being inserted automatically.
@mongoose-im
Copy link
Collaborator

mongoose-im commented Nov 22, 2021

small_tests_24 / small_tests / c75b417
Reports root / small


internal_mnesia_24 / internal_mnesia / c75b417
Reports root/ big
OK: 1587 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


small_tests_23 / small_tests / c75b417
Reports root / small


dynamic_domains_pgsql_mnesia_24 / pgsql_mnesia / c75b417
Reports root/ big
OK: 2722 / Failed: 0 / User-skipped: 186 / Auto-skipped: 0


dynamic_domains_mysql_redis_24 / mysql_redis / c75b417
Reports root/ big
OK: 2705 / Failed: 0 / User-skipped: 203 / Auto-skipped: 0


dynamic_domains_mssql_mnesia_24 / odbc_mssql_mnesia / c75b417
Reports root/ big
OK: 2722 / Failed: 0 / User-skipped: 186 / Auto-skipped: 0


ldap_mnesia_24 / ldap_mnesia / c75b417
Reports root/ big
OK: 1514 / Failed: 0 / User-skipped: 370 / Auto-skipped: 0


dynamic_domains_pgsql_mnesia_23 / pgsql_mnesia / c75b417
Reports root/ big
OK: 2729 / Failed: 1 / User-skipped: 186 / Auto-skipped: 0

sm_SUITE:parallel_manual_ack_freq_1:resume_session_state_send_message
{error,
  {{assertion_failed,assert_many,true,
     [#Fun<sm_SUITE.22.80356403>,#Fun<sm_SUITE.22.80356403>,
      #Fun<sm_SUITE.22.80356403>],
     [{xmlel,<<"presence">>,
        [{<<"from">>,
        <<"alicE_resume_session_state_send_message_26.288236@domain.example.com/escalus-default-resource">>},
         {<<"to">>,
        <<"alice_resume_session_state_send_message_26.288236@domain.example.com/escalus-default-resource">>},
         {<<"xml:lang">>,<<"en">>}],
        []},
      {xmlel,<<"message">>,
        [{<<"from">>,
        <<"bOb_resume_session_state_send_message_26.185089@domain.example.com/escalus-default-resource">>},
         {<<"to">>,
        <<"alicE_resume_session_state_send_message_26.288236@domain.example.com">>},
         {<<"xml:lang">>,<<"en">>},
         {<<"type">>,<<"chat">>}],
        [{xmlel,<<"body">>,[],[{xmlcdata,<<"msg-1">>}]},
         {xmlel,<<"delay">>,
           [{<<"xmlns">>,<<"urn:xmpp:delay">>},
          {<<"stamp">>,<<"2021-11-22T14:12:06.359703Z">>},
          {<<"from">>,<<"domain.example.com">>}],
           [{xmlcdata,<<"SM Storage">>}]}]},
      {xmlel,<<"message">>,
        [{<<"from">>,
        <<"bOb_resume_session_state_send_message_26.185089@domain.example.com/escalus-default-resource">>},
         {<<"to">>,
        <<"alicE_resume_session_state_send_message_26.288236@domain.example.com">>},
         {<<"xml:lang">>,<<"en">>},
         {<<"type">>,<<"chat">>}],
        [{xmlel,<<"body">>,[],[{xmlcdata,<<"msg-2">>}]},
   ...

Report log


ldap_mnesia_23 / ldap_mnesia / c75b417
Reports root/ big
OK: 1514 / Failed: 0 / User-skipped: 370 / Auto-skipped: 0


elasticsearch_and_cassandra_24 / elasticsearch_and_cassandra_mnesia / c75b417
Reports root/ big
OK: 1892 / Failed: 0 / User-skipped: 297 / Auto-skipped: 0


pgsql_mnesia_24 / pgsql_mnesia / c75b417
Reports root/ big
OK: 3121 / Failed: 0 / User-skipped: 183 / Auto-skipped: 0


pgsql_mnesia_23 / pgsql_mnesia / c75b417
Reports root/ big
OK: 3139 / Failed: 1 / User-skipped: 183 / Auto-skipped: 0

jingle_SUITE:all:resp_4xx_from_sip_proxy_results_in_session_terminate
{error,
  {{assertion_failed,assert,is_iq_result,
     {xmlel,<<"iq">>,
       [{<<"from">>,<<"error.480@localhost">>},
        {<<"to">>,
         <<"alice_resp_4xx_from_sip_proxy_results_in_session_terminate_20.844683@localhost/res1">>},
        {<<"id">>,<<"2ad6679d-c529-463a-98d5-08b66ad1b785">>},
        {<<"type">>,<<"set">>}],
       [{xmlel,<<"jingle">>,
          [{<<"xmlns">>,<<"urn:xmpp:jingle:1">>},
           {<<"action">>,<<"session-terminate">>},
           {<<"sid">>,<<"18517709-778c-4c20-b110-a0e2b3267465">>}],
          [{xmlel,<<"reason">>,[],
             [{xmlel,<<"general-error">>,[],[]},
            {xmlel,<<"sip-error">>,
              [{<<"code">>,<<"480">>}],
              [{xmlcdata,<<"Temporarily Unavailable">>}]}]}]}]},
     "<iq from='error.480@localhost' to='alice_resp_4xx_from_sip_proxy_results_in_session_terminate_20.844683@localhost/res1' id='2ad6679d-c529-463a-98d5-08b66ad1b785' type='set'><jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='18517709-778c-4c20-b110-a0e2b3267465'><reason><general-error/><sip-error code='480'>Temporarily Unavailable</sip-error></reason></jingle></iq>"},
   [{escalus_new_assert,assert_true,2,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_new_assert.erl"},
       {line,84}]},
    {jingle_SUITE,send_initiate_and_wait_for_first_iq_set,2,
      [{file,"/home/circleci/app/big_tests/tests/jingle_SUITE.erl"},
       {line,395}]},
    {jingle_SUITE,
      '-res...

Report log


mysql_redis_24 / mysql_redis / c75b417
Reports root/ big
OK: 3104 / Failed: 0 / User-skipped: 200 / Auto-skipped: 0


mssql_mnesia_24 / odbc_mssql_mnesia / c75b417
Reports root/ big
OK: 3121 / Failed: 0 / User-skipped: 183 / Auto-skipped: 0


riak_mnesia_24 / riak_mnesia / c75b417
Reports root/ big
OK: 1793 / Failed: 4 / User-skipped: 298 / Auto-skipped: 0

s2s_SUITE:node1_tls_required_node2_tls_optional:simple_message
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,<<"alicE_simple_message_20.525618@localhost/res1">>,
          escalus_tcp,<0.18453.1>,
          [{event_manager,<0.18448.1>},
           {server,<<"localhost">>},
           {username,<<"alicE_simple_message_20.525618">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.18448.1>},
            {server,<<"localhost">>},
            {username,<<"alicE_simple_message_20.525618">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,<<"alicE_simple_message_20.525618">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5222},
           {auth,{escalus_auth,auth_plain}},
           {wspath,undefined},
           {username,<<"alicE_simple_message_20.525618">>},
           {server,<<"localhost">>},
           {password,<<"matygrysa">>},
           {stream_id,<<"ad3bd537ba44a18a">>}]},
        10000],
       [{file,
          "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {s2s_SUITE,'-simple_message/1-fun-0-',2,
       [{file,"/home/circleci/app/big_tests/tests/s2s_SUITE.erl"},
        {line,131}]},
     {escalus_story,story,4,
       [{file,
          "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
        {line,72}]},
     {test_server,ts_tc,3,[{file,"test_server.er...

Report log

sm_SUITE:parallel:messages_are_properly_flushed_during_resumption_p1_fsm_old
{error,
  {{badmatch,
     {error,
       {connection_step_failed,
         {#Fun<sm_SUITE.11.149602>,
          {client,
            <<"alicE_messages_are_properly_flushed_during_resumption_p1_fsm_old_54.196250@localhost">>,
            escalus_tcp,<0.23086.1>,undefined,
            [{username,
               <<"alicE_messages_are_properly_flushed_during_resumption_p1_fsm_old_54.196250">>},
             {server,<<"localhost">>},
             {password,<<"matygrysa">>},
             {stream_management,true},
             {host,<<"localhost">>},
             {stream_id,<<"90ea71ae2333b79c">>}]},
          [{compression,[<<"zlib">>]},
           {starttls,true},
           {stream_management,true},
           {advanced_message_processing,true},
           {client_state_indication,false},
           {sasl_mechanisms,[<<"SCRAM-SHA-256">>,<<"PLAIN">>]},
           {caps,undefined}]},
         {timeout,get_resumed}}}},
   [{sm_SUITE,
      '-messages_are_properly_flushed_during_resumption_p1_fsm_old/1-fun-1-',
      3,
      [{file,"/home/circleci/app/big_tests/tests/sm_SUITE.erl"},
       {line,1270}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,72}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1...

Report log

sm_SUITE:parallel:messages_are_properly_flushed_during_resumption
{error,
  {{badmatch,
     {error,
       {connection_step_failed,
         {#Fun<sm_SUITE.11.149602>,
          {client,
            <<"alicE_messages_are_properly_flushed_during_resumption_61.722844@localhost">>,
            escalus_tcp,<0.23700.1>,undefined,
            [{username,
               <<"alicE_messages_are_properly_flushed_during_resumption_61.722844">>},
             {server,<<"localhost">>},
             {password,<<"matygrysa">>},
             {stream_management,true},
             {host,<<"localhost">>},
             {stream_id,<<"b50d49f21cf0a32e">>}]},
          [{compression,[<<"zlib">>]},
           {starttls,true},
           {stream_management,true},
           {advanced_message_processing,true},
           {client_state_indication,false},
           {sasl_mechanisms,[<<"SCRAM-SHA-256">>,<<"PLAIN">>]},
           {caps,undefined}]},
         {timeout,get_resumed}}}},
   [{sm_SUITE,'-messages_are_properly_flushed_during_resumption/1-fun-1-',
      3,
      [{file,"/home/circleci/app/big_tests/tests/sm_SUITE.erl"},
       {line,1226}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,72}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1224}]}]}}

Report log

sm_SUITE:parallel:messages_are_properly_flushed_during_resumption_p1_fsm_old
{error,
  {{badmatch,
     {error,
       {connection_step_failed,
         {#Fun<sm_SUITE.11.149602>,
          {client,
            <<"alicE_messages_are_properly_flushed_during_resumption_p1_fsm_old_68.631735@localhost">>,
            escalus_tcp,<0.24225.1>,undefined,
            [{username,
               <<"alicE_messages_are_properly_flushed_during_resumption_p1_fsm_old_68.631735">>},
             {server,<<"localhost">>},
             {password,<<"matygrysa">>},
             {stream_management,true},
             {host,<<"localhost">>},
             {stream_id,<<"8c054260cb5be1ee">>}]},
          [{compression,[<<"zlib">>]},
           {starttls,true},
           {stream_management,true},
           {advanced_message_processing,true},
           {client_state_indication,false},
           {sasl_mechanisms,[<<"SCRAM-SHA-256">>,<<"PLAIN">>]},
           {caps,undefined}]},
         {timeout,get_resumed}}}},
   [{sm_SUITE,
      '-messages_are_properly_flushed_during_resumption_p1_fsm_old/1-fun-1-',
      3,
      [{file,"/home/circleci/app/big_tests/tests/sm_SUITE.erl"},
       {line,1270}]},
    {escalus_story,story,4,
      [{file,
         "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
       {line,72}]},
    {test_server,ts_tc,3,[{file,"test_server.erl"},{line,1783}]},
    {test_server,run_test_case_eval1,6,
      [{file,"test_server.erl"},{line,1292}]},
    {test_server,run_test_case_eval,9,
      [{file,"test_server.erl"},{line,1...

Report log


riak_mnesia_24 / riak_mnesia / c75b417
Reports root/ big
OK: 1738 / Failed: 1 / User-skipped: 298 / Auto-skipped: 0

s2s_SUITE:node1_tls_required_node2_tls_optional:simple_message
{error,
  {timeout_when_waiting_for_stanza,
    [{escalus_client,wait_for_stanza,
       [{client,<<"alicE_simple_message_66.476529@localhost/res1">>,
          escalus_tcp,<0.18517.1>,
          [{event_manager,<0.18512.1>},
           {server,<<"localhost">>},
           {username,<<"alicE_simple_message_66.476529">>},
           {resource,<<"res1">>}],
          [{event_client,
             [{event_manager,<0.18512.1>},
            {server,<<"localhost">>},
            {username,<<"alicE_simple_message_66.476529">>},
            {resource,<<"res1">>}]},
           {resource,<<"res1">>},
           {username,<<"alicE_simple_message_66.476529">>},
           {server,<<"localhost">>},
           {host,<<"localhost">>},
           {port,5222},
           {auth,{escalus_auth,auth_plain}},
           {wspath,undefined},
           {username,<<"alicE_simple_message_66.476529">>},
           {server,<<"localhost">>},
           {password,<<"matygrysa">>},
           {stream_id,<<"b0ac0daacbf49dbf">>}]},
        10000],
       [{file,
          "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_client.erl"},
        {line,136}]},
     {s2s_SUITE,'-simple_message/1-fun-0-',2,
       [{file,"/home/circleci/app/big_tests/tests/s2s_SUITE.erl"},
        {line,131}]},
     {escalus_story,story,4,
       [{file,
          "/home/circleci/app/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
        {line,72}]},
     {test_server,ts_tc,3,[{file,"test_server.er...

Report log

Copy link
Collaborator

@NelsonVides NelsonVides left a comment

Choose a reason for hiding this comment

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

All seems excellent, but I only have one question about the steps, if defaults only run the last one, what if when defining defaults I made typos or don't get the TOML internal format right, where is intended that error be caught? In tests, dialyzer?

@chrzaszcz
Copy link
Member Author

chrzaszcz commented Nov 22, 2021

All seems excellent, but I only have one question about the steps, if defaults only run the last one, what if when defining defaults I made typos or don't get the TOML internal format right, where is intended that error be caught? In tests, dialyzer?

This is a good question! I tried with the 'validate', 'process' and 'format' steps enabled but there was an issue:

  • It was impossible to set a value that is not accepted from the TOML config file - and currently there are such cases, we can eliminate them in the future.
  • It was impossible to set a value that was a result of parsing a subsection or a list, e.g. the list of routing modules, because the recursive step is 'process' and we don't want to provide raw TOML data for nested structures.

About your question, I added one test line to config_parser_SUITE for each default and I think we could do it like this for all future defaults.

@NelsonVides
Copy link
Collaborator

Those two points, the first looks like a small tech-debt, looking forward to get rid of it in the future. The second point, hmm... that sounds tricky 🤔 Maybe some weird recurse-and-backtract-and-recurse magic would do that, maybe it's an overkill and I don't know what I'm saying, in any case sounds very much out of the scope of this one, so let's get this PR forwards then 👍🏽

Copy link
Collaborator

@NelsonVides NelsonVides left a comment

Choose a reason for hiding this comment

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

LGTM!

@Premwoik Premwoik merged commit e270ef1 into master Nov 23, 2021
@Premwoik Premwoik deleted the config-defaults-general branch November 23, 2021 07:19
@Premwoik Premwoik modified the milestone: 5.1.0 May 25, 2022
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.

4 participants