-
Notifications
You must be signed in to change notification settings - Fork 421
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
Feature/instrument #4226
base: master
Are you sure you want to change the base?
Feature/instrument #4226
Conversation
Key requirements: - Each event is identified by its name (atom) and a map of labels. Possible labels (keys) are strictly limited to eliminate mistakes. - Config passed to 'set_up' should contain generic specs of the instrumentation, e.g. #{metrics => {time => histogram}} indicates the need for a histogram metric based on the 'time' measurement, but there is no reliance on particular metric backends. The config should be extensible as well, and allow specifying the need for instruments other than metrics. Particular handlers return a boolean indicating if they are interested in handling this event or not. - A duplicated call to 'set_up' should fail. - The call to 'execute' should call all the attached handlers. - The call to 'span' should execute the measured function F. A measure callback MeasureF is then used to determine the resulting measurements. Execution time is passed to MeasureF alongside the result from F. - A call to 'execute' or 'span' should fail if there was no 'setup' for the provided event name and labels.
The goal is to have a PoC for a single module. Functionality will be extended as needed. - Only spiral and histogram metrics are supported. - All metrics are mapped to 3-element lists: [EventName, HostTypeLabel, MetricName] This means that only host-type metrics are supported. - There is no support for 'all_metrics_are_global' - The dependency on mongoose_metrics will be removed in the future.
- 'spiral' metrics are implemented as counters, because Prometheus allows rate calculation for counters. - 'histogram' metrics are implemented as histograms with exponential buckets: 2^0, 2^1, ... 2^30. The last boundary is more than 10^9, which is e.g. ~18 minutes expressed in microseconds. Buckets could be made configurable later to save space and computation resources for small metrics, and to allow negative values.
Any mongoose_instrument_* modules are allowed for now, which technically allows mongoose_instrument_registry, but it shoudn't be a real issue. We can rename if needed. Intrumentation is configured globally (i.e. not per host type).
It returns a list of instrument specs, just like hooks/1 returns hooks. Instrumentation is set up before hooks, and torn down after them.
- Enable exometer and prometheus for now. It would be needed to pass tests. - In the future we would most likely only enable prometheus by default. - Prometheus HTTP endpoint is exposed by default.
Instrument PoC
elasticsearch_and_cassandra_26 / elasticsearch_and_cassandra_mnesia / eb17e73 small_tests_25 / small_tests / eb17e73 small_tests_26 / small_tests / eb17e73 small_tests_26_arm64 / small_tests / eb17e73 ldap_mnesia_25 / ldap_mnesia / eb17e73 ldap_mnesia_26 / ldap_mnesia / eb17e73 dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / eb17e73 dynamic_domains_mysql_redis_26 / mysql_redis / eb17e73 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / eb17e73 dynamic_domains_mssql_mnesia_26 / odbc_mssql_mnesia / eb17e73 internal_mnesia_26 / internal_mnesia / eb17e73 pgsql_mnesia_25 / pgsql_mnesia / eb17e73 pgsql_cets_26 / pgsql_cets / eb17e73 pgsql_mnesia_26 / pgsql_mnesia / eb17e73 mysql_redis_26 / mysql_redis / eb17e73 mssql_mnesia_26 / odbc_mssql_mnesia / eb17e73 graphql_muc_light_SUITE:admin_cli:admin_muc_light:end_per_group{error,
{{unregistering_failed,
{amount,1},
{unregistered_items,
[{{<<"_admin_get_room_config_1076">>,
[{escalus_event_mgr,<0.24610.0>},
{tc_name,admin_get_room_config},
{escalus_cleaner,<0.24609.0>},
{watchdog,<0.24608.0>},
{muc_light_host,<<"muclight.localhost">>},
{secondary_muc_light_host,<<"muclight.localhost.bis">>},
{protocol,cli},
{schema_endpoint,admin},
{{ejabberd_cwd,mongooseim@localhost},
"/home/circleci/project/_build/mim1/rel/mongooseim"},
{preset,"odbc_mssql_mnesia"},
{mim_data_dir,
"/home/circleci/project/big_tests/tests/graphql_muc_light_SUITE_data"},
{tc_logfile,
"https://circleci-mim-results.s3.eu-central-1.amazonaws.com/PR/4226/207919/odbc_mssql_mnesia.26.1.2-amd64/big/ct_run.test%40eec8e10201a9.2024-02-20_09.37.52/big_tests.tests.graphql_muc_light_SUITE.logs/run.2024-02-20_09.42.06/graphql_muc_light_suite.admin_get_room_config.57858.html"},
{tc_group_properties,[{name,admin_muc_light}]},
{tc_group_path,[[{name,admin_cli}]]},
{data_dir,
"/home/circleci/project/big_tests/_build/default/lib/mongoose_tests/ebin/graphql_muc_light_SUITE_data/"},
{priv_dir,
"https://circleci-mim-results.s3.eu-central-1.amazonaws.com/PR/4226/207919/odbc_mssql_mnesia.26.1.2-amd64/big/ct_run.test%40eec8e10201a9.2024-02-20_09.37.52/big_tests.tests.graphql_muc_light_SUITE.logs/run.2024-02-20_09.42.06/log_private/"},
{{saved_modules,mongooseim@localhost,<<"localhost">>},
#{mod_vcard =>
#{matches => 30,
host => {prefix,<<"vjud.">>},
search => true,iqdisc => parallel,backend => rdbms},
... |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #4226 +/- ##
==========================================
+ Coverage 84.53% 84.75% +0.22%
==========================================
Files 553 556 +3
Lines 33718 33888 +170
==========================================
+ Hits 28503 28723 +220
+ Misses 5215 5165 -50 ☔ View full report in Codecov by Sentry. |
- Make sure double attach causes an error - Make errors more meaningful
Use mocked handlers, because specific ones will be tested separately.
Instrument/unit test
elasticsearch_and_cassandra_26 / elasticsearch_and_cassandra_mnesia / 257a371 small_tests_25 / small_tests / 257a371 small_tests_26 / small_tests / 257a371 small_tests_26_arm64 / small_tests / 257a371 ldap_mnesia_26 / ldap_mnesia / 257a371 ldap_mnesia_25 / ldap_mnesia / 257a371 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_1123@localhost/res1">>},
{<<"id">>,<<"c63abacf-99e4-4965-ac22-b20591b1a293">>},
{<<"type">>,<<"set">>}],
[{xmlel,<<"jingle">>,
[{<<"xmlns">>,<<"urn:xmpp:jingle:1">>},
{<<"action">>,<<"session-terminate">>},
{<<"sid">>,<<"5387ce8c-e286-4e92-a6cf-03ae430c8d06">>}],
[{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_1123@localhost/res1' id='c63abacf-99e4-4965-ac22-b20591b1a293' type='set'><jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='5387ce8c-e286-4e92-a6cf-03ae430c8d06'><reason><general-error/><sip-error code='480'>Temporarily Unavailable</sip-error></reason></jingle></iq>"},
[{escalus_new_assert,assert_true,2,
[{file,
"/home/circleci/project/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/project/big_tests/tests/jingle_SUITE.erl"},
{line,390}]},
{jingle_SUITE,
'-resp_... dynamic_domains_mysql_redis_26 / mysql_redis / 257a371 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 257a371 dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / 257a371 internal_mnesia_26 / internal_mnesia / 257a371 pgsql_cets_26 / pgsql_cets / 257a371 pgsql_mnesia_25 / pgsql_mnesia / 257a371 dynamic_domains_mssql_mnesia_26 / odbc_mssql_mnesia / 257a371 mysql_redis_26 / mysql_redis / 257a371 pgsql_mnesia_26 / pgsql_mnesia / 257a371 mssql_mnesia_26 / odbc_mssql_mnesia / 257a371 |
The state is kept in a gen_server, and after calling persist/0 it becomes mirrored in a persistent term, allowing efficient lookup. Main benefits: - Consistency of setup/teardown - previously these operations might intialize metrics, but fail to register handlers (e.g. for duplicates) - Ability to prevent label key inconsistency for an event, which would make prometheus fail. - Similarity to gen_hook - Maybe a slight advantage in terms of efficiency (persistent term vs ETS) - Less possibility of race conditions, because all modifications are sequential. Potential bottlenecks: - Before calling persist(), all operations are handled by the gen_server, but no load should arrive yet (hooks are inactive). - After calling persist(), modifications are more costly, because the persistent term will be updated for each of them. This shouldn't be a problem, because at that point all instrumentation is already set up.
- Test functionality with and without the persistent term. - Check label consistency, which is now enforced. - Change the way call history is gathered - now the functions are executed in a different process, so filter by event name.
Instrument/label consistency
elasticsearch_and_cassandra_26 / elasticsearch_and_cassandra_mnesia / c6ec239 small_tests_25 / small_tests / c6ec239 small_tests_26_arm64 / small_tests / c6ec239 small_tests_26 / small_tests / c6ec239 ldap_mnesia_25 / ldap_mnesia / c6ec239 dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / c6ec239 ldap_mnesia_26 / ldap_mnesia / c6ec239 dynamic_domains_mysql_redis_26 / mysql_redis / c6ec239 internal_mnesia_26 / internal_mnesia / c6ec239 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / c6ec239 pgsql_cets_26 / pgsql_cets / c6ec239 pgsql_mnesia_25 / pgsql_mnesia / c6ec239 dynamic_domains_mssql_mnesia_26 / odbc_mssql_mnesia / c6ec239 pgsql_mnesia_26 / pgsql_mnesia / c6ec239 mysql_redis_26 / mysql_redis / c6ec239 carboncopy_SUITE:one2one:dropped_client_doesnt_create_duplicate_carbons{error,
{{badmatch,
[{xmlel,<<"message">>,
[{<<"from">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_573@localhost">>},
{<<"to">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_573@localhost/res2">>},
{<<"xmlns">>,<<"jabber:client">>},
{<<"type">>,<<"chat">>}],
[{xmlel,<<"sent">>,
[{<<"xmlns">>,<<"urn:xmpp:carbons:2">>}],
[{xmlel,<<"forwarded">>,
[{<<"xmlns">>,<<"urn:xmpp:forward:0">>}],
[{xmlel,<<"message">>,
[{<<"from">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_573@localhost/res1">>},
{<<"type">>,<<"chat">>},
{<<"to">>,
<<"bob_dropped_client_doesnt_create_duplicate_carbons_573@localhost/res1">>},
{<<"xmlns">>,<<"jabber:client">>}],
[{xmlel,<<"body">>,[],
[{xmlcdata,
<<"And pious action">>}]}]}]}]}]}]},
[{carboncopy_SUITE,
'-dropped_client_doesnt_create_duplicate_carbons/1-fun-0-',4,
[{file,
"/home/circleci/project/big_tests/tests/carboncopy_SUITE.erl"},
{line,189}]},
{escalus_story,story,4,
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
{line,72}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1793}]},
{test_server,run_test_case_eval1,6,
[{file,"test_serv... mssql_mnesia_26 / odbc_mssql_mnesia / c6ec239 |
elasticsearch_and_cassandra_26 / elasticsearch_and_cassandra_mnesia / 93d4a50 small_tests_25 / small_tests / 93d4a50 small_tests_26 / small_tests / 93d4a50 small_tests_26_arm64 / small_tests / 93d4a50 ldap_mnesia_25 / ldap_mnesia / 93d4a50 dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / 93d4a50 ldap_mnesia_26 / ldap_mnesia / 93d4a50 dynamic_domains_mysql_redis_26 / mysql_redis / 93d4a50 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 93d4a50 internal_mnesia_26 / internal_mnesia / 93d4a50 pgsql_cets_26 / pgsql_cets / 93d4a50 dynamic_domains_mssql_mnesia_26 / odbc_mssql_mnesia / 93d4a50 pgsql_mnesia_25 / pgsql_mnesia / 93d4a50 pgsql_mnesia_26 / pgsql_mnesia / 93d4a50 mysql_redis_26 / mysql_redis / 93d4a50 mssql_mnesia_26 / odbc_mssql_mnesia / 93d4a50 |
elasticsearch_and_cassandra_26 / elasticsearch_and_cassandra_mnesia / 8291697 small_tests_25 / small_tests / 8291697 small_tests_26 / small_tests / 8291697 small_tests_26_arm64 / small_tests / 8291697 ldap_mnesia_25 / ldap_mnesia / 8291697 dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / 8291697 ldap_mnesia_26 / ldap_mnesia / 8291697 dynamic_domains_mysql_redis_26 / mysql_redis / 8291697 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 8291697 internal_mnesia_26 / internal_mnesia / 8291697 pgsql_cets_26 / pgsql_cets / 8291697 pgsql_mnesia_25 / pgsql_mnesia / 8291697 dynamic_domains_mssql_mnesia_26 / odbc_mssql_mnesia / 8291697 graphql_muc_light_SUITE:user:user_muc_light:end_per_group{error,
{{unregistering_failed,
{amount,3},
{unregistered_items,
[{{<<"_user_get_room_config_1000">>,
[{escalus_event_mgr,<0.23010.0>},
{tc_name,user_get_room_config},
{escalus_cleaner,<0.23009.0>},
{watchdog,<0.23008.0>},
{muc_light_host,<<"muclight.domain.example.com">>},
{secondary_muc_light_host,<<"muclight.domain.example.org">>},
{schema_endpoint,user},
{{ejabberd_cwd,mongooseim@localhost},
"/home/circleci/project/_build/mim1/rel/mongooseim"},
{preset,"odbc_mssql_mnesia"},
{mim_data_dir,
"/home/circleci/project/big_tests/tests/graphql_muc_light_SUITE_data"},
{tc_logfile,
"https://circleci-mim-results.s3.eu-central-1.amazonaws.com/PR/4226/211691/odbc_mssql_mnesia.26.1.2-amd64/big/ct_run.test%40e9577169e29b.2024-03-12_09.15.39/big_tests.tests.graphql_muc_light_SUITE.logs/run.2024-03-12_09.20.01/graphql_muc_light_suite.user_get_room_config.53378.html"},
{tc_group_properties,[{name,user_muc_light},parallel]},
{tc_group_path,[[{name,user}]]},
{data_dir,
"/home/circleci/project/big_tests/_build/default/lib/mongoose_tests/ebin/graphql_muc_light_SUITE_data/"},
{priv_dir,
"https://circleci-mim-results.s3.eu-central-1.amazonaws.com/PR/4226/211691/odbc_mssql_mnesia.26.1.2-amd64/big/ct_run.test%40e9577169e29b.2024-03-12_09.15.39/big_tests.tests.graphql_muc_light_SUITE.logs/run.2024-03-12_09.20.01/log_private/"},
{{saved_modules,mongooseim@localhost,<<"test type">>},
#{mod_vcard =>
#{matches => 30,
host => {prefix,<<"vjud.">>},
search => true,iqdisc => parallel,backend => rdbms},
mod_ro... pgsql_mnesia_26 / pgsql_mnesia / 8291697 mysql_redis_26 / mysql_redis / 8291697 mssql_mnesia_26 / odbc_mssql_mnesia / 8291697 |
It logs all instrumentation events. Log level is 'debug', but it cen be overridden: 1. In the config (on set_up) 2. In the measurement (on execute/span)
By default it is still debug. Config spec is now delegated to mongoose_instrument and the handlers - This allows adding options, such as 'level' for 'log'.
Remove whitespaces Co-authored-by: Paweł Chrząszcz <pawel.chrzaszcz@erlang-solutions.com>
Instrument mod_bosh
elasticsearch_and_cassandra_26 / elasticsearch_and_cassandra_mnesia / a744408 small_tests_25 / small_tests / a744408 small_tests_26 / small_tests / a744408 small_tests_26_arm64 / small_tests / a744408 ldap_mnesia_25 / ldap_mnesia / a744408 ldap_mnesia_26 / ldap_mnesia / a744408 internal_mnesia_26 / internal_mnesia / a744408 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / a744408 dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / a744408 dynamic_domains_mysql_redis_26 / mysql_redis / a744408 dynamic_domains_mssql_mnesia_26 / odbc_mssql_mnesia / a744408 pgsql_mnesia_25 / pgsql_mnesia / a744408 mysql_redis_26 / mysql_redis / a744408 carboncopy_SUITE:one2one:dropped_client_doesnt_create_duplicate_carbons{error,
{{badmatch,
[{xmlel,<<"message">>,
[{<<"from">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_600@localhost">>},
{<<"to">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_600@localhost/res2">>},
{<<"xmlns">>,<<"jabber:client">>},
{<<"type">>,<<"chat">>}],
[{xmlel,<<"sent">>,
[{<<"xmlns">>,<<"urn:xmpp:carbons:2">>}],
[{xmlel,<<"forwarded">>,
[{<<"xmlns">>,<<"urn:xmpp:forward:0">>}],
[{xmlel,<<"message">>,
[{<<"from">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_600@localhost/res1">>},
{<<"type">>,<<"chat">>},
{<<"to">>,
<<"bob_dropped_client_doesnt_create_duplicate_carbons_600@localhost/res1">>},
{<<"xmlns">>,<<"jabber:client">>}],
[{xmlel,<<"body">>,[],
[{xmlcdata,
<<"And pious action">>}]}]}]}]}]}]},
[{carboncopy_SUITE,
'-dropped_client_doesnt_create_duplicate_carbons/1-fun-0-',4,
[{file,
"/home/circleci/project/big_tests/tests/carboncopy_SUITE.erl"},
{line,189}]},
{escalus_story,story,4,
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
{line,72}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1793}]},
{test_server,run_test_case_eval1,6,
[{file,"test_serv... pgsql_mnesia_26 / pgsql_mnesia / a744408 mssql_mnesia_26 / odbc_mssql_mnesia / a744408 pgsql_cets_26 / pgsql_cets / a744408 component_SUITE:xep0114:intercomponent_communication{error,{{badmatch,[{[global,data,xmpp,sent,component],
expected_change,
{before_story,1602},
{after_story,1602}}]},
[{escalus_mongooseim,post_story_check_metrics,1,
[{file,"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_mongooseim.erl"},
{line,74}]},
{escalus_mongooseim,maybe_check_metrics_post_story,1,
[{file,"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_mongooseim.erl"},
{line,51}]},
{component_SUITE,intercomponent_communication,1,
[{file,"/home/circleci/project/big_tests/tests/component_SUITE.erl"},
{line,185}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1793}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1302}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,1234}]}]}} |
Instrument mod_csi
elasticsearch_and_cassandra_26 / elasticsearch_and_cassandra_mnesia / cd92518 small_tests_25 / small_tests / cd92518 small_tests_26 / small_tests / cd92518 small_tests_26_arm64 / small_tests / cd92518 ldap_mnesia_25 / ldap_mnesia / cd92518 ldap_mnesia_26 / ldap_mnesia / cd92518 internal_mnesia_26 / internal_mnesia / cd92518 dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / cd92518 dynamic_domains_mysql_redis_26 / mysql_redis / cd92518 pgsql_cets_26 / pgsql_cets / cd92518 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / cd92518 dynamic_domains_mssql_mnesia_26 / odbc_mssql_mnesia / cd92518 pgsql_mnesia_25 / pgsql_mnesia / cd92518 mysql_redis_26 / mysql_redis / cd92518 pgsql_mnesia_26 / pgsql_mnesia / cd92518 mssql_mnesia_26 / odbc_mssql_mnesia / cd92518 |
This has a huge impact on the testing times for these cases. Since the room is reused across `muc_run_prefs_case` calls, there is no need to resend presence every time - the users are room participants all the time. The issue is that when (re)entering, Alice would wait for 4 stanzas - 3 presences and 1 room subject message. However, only in the beginning, as a new user would she receive the room subject - subsequent waits for 4 stanzas failed silently after only 3 presences, but only after waiting the 5s timeout. This has happend 6 times per testcase, and there were 3 tescases using this mechanism, so there is 3*6*5=90s less pointless waiting now.
Fix slow MAM muc_prefs_cases tests
elasticsearch_and_cassandra_26 / elasticsearch_and_cassandra_mnesia / 02359b1 small_tests_25 / small_tests / 02359b1 small_tests_26 / small_tests / 02359b1 small_tests_26_arm64 / small_tests / 02359b1 dynamic_domains_mysql_redis_26 / mysql_redis / 02359b1 dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / 02359b1 ldap_mnesia_26 / ldap_mnesia / 02359b1 ldap_mnesia_25 / ldap_mnesia / 02359b1 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 02359b1 dynamic_domains_mssql_mnesia_26 / odbc_mssql_mnesia / 02359b1 pgsql_cets_26 / pgsql_cets / 02359b1 internal_mnesia_26 / internal_mnesia / 02359b1 pgsql_mnesia_25 / pgsql_mnesia / 02359b1 mysql_redis_26 / mysql_redis / 02359b1 pgsql_mnesia_26 / pgsql_mnesia / 02359b1 mssql_mnesia_26 / odbc_mssql_mnesia / 02359b1 |
Make sure the instrumentation is set up only once. Unfortunately there is no 'stop', and adding it would be a substantial task. Moreover, some modules intentionally call it multiple times for the 'global' scope.
It can be reused e.g. in small tests. This way tracked funs are always the same.
- Start instrumentation in tests - Use the new mongoose_rdbms_backend:init/1
Applying code review.
Instrument/backend
elasticsearch_and_cassandra_26 / elasticsearch_and_cassandra_mnesia / 54d4a51 small_tests_25 / small_tests / 54d4a51 small_tests_26 / small_tests / 54d4a51 small_tests_26_arm64 / small_tests / 54d4a51 ldap_mnesia_25 / ldap_mnesia / 54d4a51 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_1037@localhost/res1">>},
{<<"id">>,<<"31797ac7-1bc8-4586-afbc-737f4d02a5d0">>},
{<<"type">>,<<"set">>}],
[{xmlel,<<"jingle">>,
[{<<"xmlns">>,<<"urn:xmpp:jingle:1">>},
{<<"action">>,<<"session-terminate">>},
{<<"sid">>,<<"82814d58-f865-4f47-9082-95575a29926b">>}],
[{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_1037@localhost/res1' id='31797ac7-1bc8-4586-afbc-737f4d02a5d0' type='set'><jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='82814d58-f865-4f47-9082-95575a29926b'><reason><general-error/><sip-error code='480'>Temporarily Unavailable</sip-error></reason></jingle></iq>"},
[{escalus_new_assert,assert_true,2,
[{file,
"/home/circleci/project/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/project/big_tests/tests/jingle_SUITE.erl"},
{line,390}]},
{jingle_SUITE,
'-resp_... dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / 54d4a51 dynamic_domains_mysql_redis_26 / mysql_redis / 54d4a51 carboncopy_SUITE:one2one:dropped_client_doesnt_create_duplicate_carbons{error,
{{badmatch,
[{xmlel,<<"message">>,
[{<<"from">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_600@domain.example.com">>},
{<<"to">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_600@domain.example.com/res2">>},
{<<"xmlns">>,<<"jabber:client">>},
{<<"type">>,<<"chat">>}],
[{xmlel,<<"sent">>,
[{<<"xmlns">>,<<"urn:xmpp:carbons:2">>}],
[{xmlel,<<"forwarded">>,
[{<<"xmlns">>,<<"urn:xmpp:forward:0">>}],
[{xmlel,<<"message">>,
[{<<"from">>,
<<"alice_dropped_client_doesnt_create_duplicate_carbons_600@domain.example.com/res1">>},
{<<"type">>,<<"chat">>},
{<<"to">>,
<<"bob_dropped_client_doesnt_create_duplicate_carbons_600@domain.example.com/res1">>},
{<<"xmlns">>,<<"jabber:client">>}],
[{xmlel,<<"body">>,[],
[{xmlcdata,
<<"And pious action">>}]}]}]}]}]}]},
[{carboncopy_SUITE,
'-dropped_client_doesnt_create_duplicate_carbons/1-fun-0-',4,
[{file,
"/home/circleci/project/big_tests/tests/carboncopy_SUITE.erl"},
{line,189}]},
{escalus_story,story,4,
[{file,
"/home/circleci/project/big_tests/_build/default/lib/escalus/src/escalus_story.erl"},
{line,72}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1793}]},
{test_server,run_test_c... ldap_mnesia_26 / ldap_mnesia / 54d4a51 dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 54d4a51 internal_mnesia_26 / internal_mnesia / 54d4a51 pgsql_cets_26 / pgsql_cets / 54d4a51 dynamic_domains_mssql_mnesia_26 / odbc_mssql_mnesia / 54d4a51 pgsql_mnesia_25 / pgsql_mnesia / 54d4a51 mysql_redis_26 / mysql_redis / 54d4a51 pgsql_mnesia_26 / pgsql_mnesia / 54d4a51 mssql_mnesia_26 / odbc_mssql_mnesia / 54d4a51 |
Instrument mod_event_pusher
elasticsearch_and_cassandra_26 / elasticsearch_and_cassandra_mnesia / 22fb94f small_tests_25 / small_tests / 22fb94f small_tests_26_arm64 / small_tests / 22fb94f ldap_mnesia_26 / ldap_mnesia / 22fb94f small_tests_26 / small_tests / 22fb94f dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 22fb94f pgsql_cets_26 / pgsql_cets / 22fb94f dynamic_domains_mssql_mnesia_26 / odbc_mssql_mnesia / 22fb94f mysql_redis_26 / mysql_redis / 22fb94f ldap_mnesia_25 / ldap_mnesia / 22fb94f pgsql_mnesia_25 / pgsql_mnesia / 22fb94f mssql_mnesia_26 / odbc_mssql_mnesia / 22fb94f dynamic_domains_mysql_redis_26 / mysql_redis / 22fb94f internal_mnesia_26 / internal_mnesia / 22fb94f dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / 22fb94f pgsql_mnesia_26 / pgsql_mnesia / 22fb94f |
elasticsearch_and_cassandra_26 / elasticsearch_and_cassandra_mnesia / 6b83ced small_tests_25 / small_tests / 6b83ced small_tests_26 / small_tests / 6b83ced small_tests_26_arm64 / small_tests / 6b83ced ldap_mnesia_25 / ldap_mnesia / 6b83ced dynamic_domains_mysql_redis_26 / mysql_redis / 6b83ced ldap_mnesia_26 / ldap_mnesia / 6b83ced dynamic_domains_mssql_mnesia_26 / odbc_mssql_mnesia / 6b83ced dynamic_domains_pgsql_mnesia_26 / pgsql_mnesia / 6b83ced pgsql_cets_26 / pgsql_cets / 6b83ced pgsql_mnesia_25 / pgsql_mnesia / 6b83ced 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_1660@localhost/res1">>},
{<<"id">>,<<"56c8b71a-89fe-4903-b537-760c3c8af9c2">>},
{<<"type">>,<<"set">>}],
[{xmlel,<<"jingle">>,
[{<<"xmlns">>,<<"urn:xmpp:jingle:1">>},
{<<"action">>,<<"session-terminate">>},
{<<"sid">>,<<"ccae5a88-bda5-400f-9ae5-c52df8b8f1bd">>}],
[{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_1660@localhost/res1' id='56c8b71a-89fe-4903-b537-760c3c8af9c2' type='set'><jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='ccae5a88-bda5-400f-9ae5-c52df8b8f1bd'><reason><general-error/><sip-error code='480'>Temporarily Unavailable</sip-error></reason></jingle></iq>"},
[{escalus_new_assert,assert_true,2,
[{file,
"/home/circleci/project/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/project/big_tests/tests/jingle_SUITE.erl"},
{line,390}]},
{jingle_SUITE,
'-resp_... mysql_redis_26 / mysql_redis / 6b83ced pgsql_mnesia_26 / pgsql_mnesia / 6b83ced mssql_mnesia_26 / odbc_mssql_mnesia / 6b83ced dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / 6b83ced internal_mnesia_26 / internal_mnesia / 6b83ced dynamic_domains_pgsql_mnesia_25 / pgsql_mnesia / 6b83ced internal_mnesia_26 / internal_mnesia / 6b83ced 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_1100@localhost/res1">>},
{<<"id">>,<<"c122c080-c097-473a-a436-dde5c6ba64d4">>},
{<<"type">>,<<"set">>}],
[{xmlel,<<"jingle">>,
[{<<"xmlns">>,<<"urn:xmpp:jingle:1">>},
{<<"action">>,<<"session-terminate">>},
{<<"sid">>,<<"3ed44d6d-0d61-4b3a-8150-bdb6703518f2">>}],
[{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_1100@localhost/res1' id='c122c080-c097-473a-a436-dde5c6ba64d4' type='set'><jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='3ed44d6d-0d61-4b3a-8150-bdb6703518f2'><reason><general-error/><sip-error code='480'>Temporarily Unavailable</sip-error></reason></jingle></iq>"},
[{escalus_new_assert,assert_true,2,
[{file,
"/home/circleci/project/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/project/big_tests/tests/jingle_SUITE.erl"},
{line,390}]},
{jingle_SUITE,
'-resp_... mssql_mnesia_26 / odbc_mssql_mnesia / 6b83ced |
The purpose of this PR is to see if the feature branch works correctly. Do not merge.