@webex/plugin-meetings 3.0.0-beta.270 → 3.0.0-beta.271
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +39 -8
- package/dist/meeting/index.js.map +1 -1
- package/dist/metrics/constants.js +3 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/types/metrics/constants.d.ts +2 -0
- package/package.json +19 -19
- package/src/meeting/index.ts +37 -1
- package/src/metrics/constants.ts +2 -0
- package/test/unit/spec/meeting/index.js +172 -28
|
@@ -66,7 +66,9 @@ var BEHAVIORAL_METRICS = {
|
|
|
66
66
|
LOCUS_DELTA_SYNC_FAILED: 'js_sdk_locus_delta_sync_failed',
|
|
67
67
|
LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo',
|
|
68
68
|
PERMISSION_TOKEN_REFRESH: 'js_sdk_permission_token_refresh',
|
|
69
|
-
PERMISSION_TOKEN_REFRESH_ERROR: 'js_sdk_permission_token_refresh_error'
|
|
69
|
+
PERMISSION_TOKEN_REFRESH_ERROR: 'js_sdk_permission_token_refresh_error',
|
|
70
|
+
TURN_DISCOVERY_LATENCY: 'js_sdk_turn_discovery_latency',
|
|
71
|
+
ROAP_OFFER_TO_ANSWER_LATENCY: 'js_sdk_roap_offer_to_answer_latency'
|
|
70
72
|
};
|
|
71
73
|
exports.default = BEHAVIORAL_METRICS;
|
|
72
74
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","ROAP_MERCURY_EVENT_RECEIVED","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","LLM_CONNECTION_AFTER_JOIN_FAILURE","RECEIVE_TRANSCRIPTION_AFTER_JOIN_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","UPLOAD_LOGS_SUCCESS","RECEIVE_TRANSCRIPTION_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR","MOVE_TO_SUCCESS","MOVE_TO_FAILURE","MOVE_FROM_SUCCESS","MOVE_FROM_FAILURE","TURN_DISCOVERY_FAILURE","MEETING_INFO_POLICY_ERROR","LOCUS_DELTA_SYNC_FAILED","LOCUS_DELTA_OUT_OF_ORDER","PERMISSION_TOKEN_REFRESH","PERMISSION_TOKEN_REFRESH_ERROR"],"sources":["constants.ts"],"sourcesContent":["// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n ROAP_MERCURY_EVENT_RECEIVED: 'js_sdk_roap_mercury_received',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n LLM_CONNECTION_AFTER_JOIN_FAILURE: 'js_sdk_llm_connection_after_join_failure',\n RECEIVE_TRANSCRIPTION_AFTER_JOIN_FAILURE: 'js_sdk_receive_transcription_after_join_failure',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n UPLOAD_LOGS_SUCCESS: 'js_sdk_upload_logs_success',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',\n MOVE_TO_SUCCESS: 'js_sdk_move_to_success',\n MOVE_TO_FAILURE: 'js_sdk_move_to_failure',\n MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',\n MOVE_FROM_FAILURE: 'js_sdk_move_from_failure',\n TURN_DISCOVERY_FAILURE: 'js_sdk_turn_discovery_failure',\n MEETING_INFO_POLICY_ERROR: 'js_sdk_meeting_info_policy_error',\n LOCUS_DELTA_SYNC_FAILED: 'js_sdk_locus_delta_sync_failed',\n LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo',\n PERMISSION_TOKEN_REFRESH: 'js_sdk_permission_token_refresh',\n PERMISSION_TOKEN_REFRESH_ERROR: 'js_sdk_permission_token_refresh_error',\n};\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCAAqC;EACnEC,6BAA6B,EAAE,sCAAsC;EACrEC,0BAA0B,EAAE,mCAAmC;EAC/DC,2BAA2B,EAAE,oCAAoC;EACjEC,YAAY,EAAE,qBAAqB;EACnCC,YAAY,EAAE,sBAAsB;EACpCC,iBAAiB,EAAE,0BAA0B;EAC7CC,iBAAiB,EAAE,2BAA2B;EAC9CC,2BAA2B,EAAE,8BAA8B;EAC3DC,kBAAkB,EAAE,2BAA2B;EAC/CC,kBAAkB,EAAE,4BAA4B;EAChDC,qBAAqB,EAAE,8BAA8B;EACrDC,uBAAuB,EAAE,oCAAoC;EAC7DC,yBAAyB,EAAE,sCAAsC;EACjEC,sBAAsB,EAAE,gCAAgC;EACxDC,yBAAyB,EAAE,mCAAmC;EAC9DC,uBAAuB,EAAE,iCAAiC;EAC1DC,iCAAiC,EAAE,0CAA0C;EAC7EC,wCAAwC,EAAE,iDAAiD;EAE3FC,4BAA4B,EAAE,qCAAqC;EACnEC,sBAAsB,EAAE,+BAA+B;EACvDC,yBAAyB,EAAE,mCAAmC;EAC9DC,0BAA0B,EAAE,mCAAmC;EAC/DC,qBAAqB,EAAE,+BAA+B;EACtDC,sCAAsC,EAAE,gDAAgD;EACxFC,qCAAqC,EAAE,+CAA+C;EACtFC,kBAAkB,EAAE,4BAA4B;EAChDC,kBAAkB,EAAE,4BAA4B;EAChDC,2BAA2B,EAAE,qCAAqC;EAClEC,0BAA0B,EAAE,oCAAoC;EAChEC,mBAAmB,EAAE,4BAA4B;EACjDC,oBAAoB,EAAE,6BAA6B;EACnDC,oBAAoB,EAAE,8BAA8B;EACpDC,oBAAoB,EAAE,8BAA8B;EACpDC,oBAAoB,EAAE,8BAA8B;EACpDC,mBAAmB,EAAE,6BAA6B;EAClDC,oBAAoB,EAAE,4BAA4B;EAClDC,sBAAsB,EAAE,gCAAgC;EACxDC,qBAAqB,EAAE,8BAA8B;EACrDC,mBAAmB,EAAE,4BAA4B;EACjDC,mBAAmB,EAAE,4BAA4B;EACjDC,6BAA6B,EAAE,sCAAsC;EACrEC,6BAA6B,EAAE,sCAAsC;EACrEC,6BAA6B,EAAE,sCAAsC;EACrEC,qBAAqB,EAAE,8BAA8B;EACrDC,qBAAqB,EAAE,8BAA8B;EACrDC,uBAAuB,EAAE,gCAAgC;EACzDC,qBAAqB,EAAE,8BAA8B;EACrDC,oBAAoB,EAAE,6BAA6B;EACnDC,eAAe,EAAE,wBAAwB;EACzCC,eAAe,EAAE,wBAAwB;EACzCC,iBAAiB,EAAE,0BAA0B;EAC7CC,iBAAiB,EAAE,0BAA0B;EAC7CC,sBAAsB,EAAE,+BAA+B;EACvDC,yBAAyB,EAAE,kCAAkC;EAC7DC,uBAAuB,EAAE,gCAAgC;EACzDC,wBAAwB,EAAE,wBAAwB;EAClDC,wBAAwB,EAAE,iCAAiC;EAC3DC,8BAA8B,EAAE;
|
|
1
|
+
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","ROAP_MERCURY_EVENT_RECEIVED","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","LLM_CONNECTION_AFTER_JOIN_FAILURE","RECEIVE_TRANSCRIPTION_AFTER_JOIN_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","UPLOAD_LOGS_SUCCESS","RECEIVE_TRANSCRIPTION_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR","MOVE_TO_SUCCESS","MOVE_TO_FAILURE","MOVE_FROM_SUCCESS","MOVE_FROM_FAILURE","TURN_DISCOVERY_FAILURE","MEETING_INFO_POLICY_ERROR","LOCUS_DELTA_SYNC_FAILED","LOCUS_DELTA_OUT_OF_ORDER","PERMISSION_TOKEN_REFRESH","PERMISSION_TOKEN_REFRESH_ERROR","TURN_DISCOVERY_LATENCY","ROAP_OFFER_TO_ANSWER_LATENCY"],"sources":["constants.ts"],"sourcesContent":["// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n ROAP_MERCURY_EVENT_RECEIVED: 'js_sdk_roap_mercury_received',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n LLM_CONNECTION_AFTER_JOIN_FAILURE: 'js_sdk_llm_connection_after_join_failure',\n RECEIVE_TRANSCRIPTION_AFTER_JOIN_FAILURE: 'js_sdk_receive_transcription_after_join_failure',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n UPLOAD_LOGS_SUCCESS: 'js_sdk_upload_logs_success',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',\n MOVE_TO_SUCCESS: 'js_sdk_move_to_success',\n MOVE_TO_FAILURE: 'js_sdk_move_to_failure',\n MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',\n MOVE_FROM_FAILURE: 'js_sdk_move_from_failure',\n TURN_DISCOVERY_FAILURE: 'js_sdk_turn_discovery_failure',\n MEETING_INFO_POLICY_ERROR: 'js_sdk_meeting_info_policy_error',\n LOCUS_DELTA_SYNC_FAILED: 'js_sdk_locus_delta_sync_failed',\n LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo',\n PERMISSION_TOKEN_REFRESH: 'js_sdk_permission_token_refresh',\n PERMISSION_TOKEN_REFRESH_ERROR: 'js_sdk_permission_token_refresh_error',\n TURN_DISCOVERY_LATENCY: 'js_sdk_turn_discovery_latency',\n ROAP_OFFER_TO_ANSWER_LATENCY: 'js_sdk_roap_offer_to_answer_latency',\n};\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCAAqC;EACnEC,6BAA6B,EAAE,sCAAsC;EACrEC,0BAA0B,EAAE,mCAAmC;EAC/DC,2BAA2B,EAAE,oCAAoC;EACjEC,YAAY,EAAE,qBAAqB;EACnCC,YAAY,EAAE,sBAAsB;EACpCC,iBAAiB,EAAE,0BAA0B;EAC7CC,iBAAiB,EAAE,2BAA2B;EAC9CC,2BAA2B,EAAE,8BAA8B;EAC3DC,kBAAkB,EAAE,2BAA2B;EAC/CC,kBAAkB,EAAE,4BAA4B;EAChDC,qBAAqB,EAAE,8BAA8B;EACrDC,uBAAuB,EAAE,oCAAoC;EAC7DC,yBAAyB,EAAE,sCAAsC;EACjEC,sBAAsB,EAAE,gCAAgC;EACxDC,yBAAyB,EAAE,mCAAmC;EAC9DC,uBAAuB,EAAE,iCAAiC;EAC1DC,iCAAiC,EAAE,0CAA0C;EAC7EC,wCAAwC,EAAE,iDAAiD;EAE3FC,4BAA4B,EAAE,qCAAqC;EACnEC,sBAAsB,EAAE,+BAA+B;EACvDC,yBAAyB,EAAE,mCAAmC;EAC9DC,0BAA0B,EAAE,mCAAmC;EAC/DC,qBAAqB,EAAE,+BAA+B;EACtDC,sCAAsC,EAAE,gDAAgD;EACxFC,qCAAqC,EAAE,+CAA+C;EACtFC,kBAAkB,EAAE,4BAA4B;EAChDC,kBAAkB,EAAE,4BAA4B;EAChDC,2BAA2B,EAAE,qCAAqC;EAClEC,0BAA0B,EAAE,oCAAoC;EAChEC,mBAAmB,EAAE,4BAA4B;EACjDC,oBAAoB,EAAE,6BAA6B;EACnDC,oBAAoB,EAAE,8BAA8B;EACpDC,oBAAoB,EAAE,8BAA8B;EACpDC,oBAAoB,EAAE,8BAA8B;EACpDC,mBAAmB,EAAE,6BAA6B;EAClDC,oBAAoB,EAAE,4BAA4B;EAClDC,sBAAsB,EAAE,gCAAgC;EACxDC,qBAAqB,EAAE,8BAA8B;EACrDC,mBAAmB,EAAE,4BAA4B;EACjDC,mBAAmB,EAAE,4BAA4B;EACjDC,6BAA6B,EAAE,sCAAsC;EACrEC,6BAA6B,EAAE,sCAAsC;EACrEC,6BAA6B,EAAE,sCAAsC;EACrEC,qBAAqB,EAAE,8BAA8B;EACrDC,qBAAqB,EAAE,8BAA8B;EACrDC,uBAAuB,EAAE,gCAAgC;EACzDC,qBAAqB,EAAE,8BAA8B;EACrDC,oBAAoB,EAAE,6BAA6B;EACnDC,eAAe,EAAE,wBAAwB;EACzCC,eAAe,EAAE,wBAAwB;EACzCC,iBAAiB,EAAE,0BAA0B;EAC7CC,iBAAiB,EAAE,0BAA0B;EAC7CC,sBAAsB,EAAE,+BAA+B;EACvDC,yBAAyB,EAAE,kCAAkC;EAC7DC,uBAAuB,EAAE,gCAAgC;EACzDC,wBAAwB,EAAE,wBAAwB;EAClDC,wBAAwB,EAAE,iCAAiC;EAC3DC,8BAA8B,EAAE,uCAAuC;EACvEC,sBAAsB,EAAE,+BAA+B;EACvDC,4BAA4B,EAAE;AAChC,CAAC;AAAC"}
|
|
@@ -58,5 +58,7 @@ declare const BEHAVIORAL_METRICS: {
|
|
|
58
58
|
LOCUS_DELTA_OUT_OF_ORDER: string;
|
|
59
59
|
PERMISSION_TOKEN_REFRESH: string;
|
|
60
60
|
PERMISSION_TOKEN_REFRESH_ERROR: string;
|
|
61
|
+
TURN_DISCOVERY_LATENCY: string;
|
|
62
|
+
ROAP_OFFER_TO_ANSWER_LATENCY: string;
|
|
61
63
|
};
|
|
62
64
|
export { BEHAVIORAL_METRICS as default };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.271",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
36
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
38
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
39
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
40
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
35
|
+
"@webex/plugin-meetings": "3.0.0-beta.271",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.271",
|
|
37
|
+
"@webex/test-helper-mocha": "3.0.0-beta.271",
|
|
38
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.271",
|
|
39
|
+
"@webex/test-helper-retry": "3.0.0-beta.271",
|
|
40
|
+
"@webex/test-helper-test-users": "3.0.0-beta.271",
|
|
41
41
|
"chai": "^4.3.4",
|
|
42
42
|
"chai-as-promised": "^7.1.1",
|
|
43
43
|
"jsdom-global": "3.0.2",
|
|
@@ -46,19 +46,19 @@
|
|
|
46
46
|
"typescript": "^4.7.4"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@webex/common": "3.0.0-beta.
|
|
49
|
+
"@webex/common": "3.0.0-beta.271",
|
|
50
50
|
"@webex/internal-media-core": "2.0.4",
|
|
51
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
52
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
53
|
-
"@webex/internal-plugin-llm": "3.0.0-beta.
|
|
54
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
55
|
-
"@webex/internal-plugin-metrics": "3.0.0-beta.
|
|
56
|
-
"@webex/internal-plugin-support": "3.0.0-beta.
|
|
57
|
-
"@webex/internal-plugin-user": "3.0.0-beta.
|
|
58
|
-
"@webex/media-helpers": "3.0.0-beta.
|
|
59
|
-
"@webex/plugin-people": "3.0.0-beta.
|
|
60
|
-
"@webex/plugin-rooms": "3.0.0-beta.
|
|
61
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
51
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.271",
|
|
52
|
+
"@webex/internal-plugin-device": "3.0.0-beta.271",
|
|
53
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.271",
|
|
54
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.271",
|
|
55
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.271",
|
|
56
|
+
"@webex/internal-plugin-support": "3.0.0-beta.271",
|
|
57
|
+
"@webex/internal-plugin-user": "3.0.0-beta.271",
|
|
58
|
+
"@webex/media-helpers": "3.0.0-beta.271",
|
|
59
|
+
"@webex/plugin-people": "3.0.0-beta.271",
|
|
60
|
+
"@webex/plugin-rooms": "3.0.0-beta.271",
|
|
61
|
+
"@webex/webex-core": "3.0.0-beta.271",
|
|
62
62
|
"ampersand-collection": "^2.0.2",
|
|
63
63
|
"bowser": "^2.11.0",
|
|
64
64
|
"btoa": "^1.2.1",
|
package/src/meeting/index.ts
CHANGED
|
@@ -5093,6 +5093,9 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5093
5093
|
this.mediaProperties.webrtcMediaConnection.on(Event.ROAP_MESSAGE_TO_SEND, (event) => {
|
|
5094
5094
|
const LOG_HEADER = `Meeting:index#setupMediaConnectionListeners.ROAP_MESSAGE_TO_SEND --> correlationId=${this.correlationId}`;
|
|
5095
5095
|
|
|
5096
|
+
// @ts-ignore
|
|
5097
|
+
const cdl = this.webex.internal.newMetrics.callDiagnosticLatencies;
|
|
5098
|
+
|
|
5096
5099
|
switch (event.roapMessage.messageType) {
|
|
5097
5100
|
case 'OK':
|
|
5098
5101
|
// @ts-ignore
|
|
@@ -5100,6 +5103,11 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5100
5103
|
name: 'client.media-engine.remote-sdp-received',
|
|
5101
5104
|
options: {meetingId: this.id},
|
|
5102
5105
|
});
|
|
5106
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_OFFER_TO_ANSWER_LATENCY, {
|
|
5107
|
+
correlation_id: this.correlationId,
|
|
5108
|
+
latency: cdl.getLocalSDPGenRemoteSDPRecv(),
|
|
5109
|
+
meetingId: this.id,
|
|
5110
|
+
});
|
|
5103
5111
|
|
|
5104
5112
|
logRequest(
|
|
5105
5113
|
this.roap.sendRoapOK({
|
|
@@ -5292,6 +5300,10 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5292
5300
|
LoggerProxy.logger.info(
|
|
5293
5301
|
`Meeting:index#setupMediaConnectionListeners --> correlationId=${this.correlationId} connection state changed to ${event.state}`
|
|
5294
5302
|
);
|
|
5303
|
+
|
|
5304
|
+
// @ts-ignore
|
|
5305
|
+
const cdl = this.webex.internal.newMetrics.callDiagnosticLatencies;
|
|
5306
|
+
|
|
5295
5307
|
switch (event.state) {
|
|
5296
5308
|
case ConnectionState.Connecting:
|
|
5297
5309
|
// @ts-ignore
|
|
@@ -5313,6 +5325,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5313
5325
|
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.CONNECTION_SUCCESS, {
|
|
5314
5326
|
correlation_id: this.correlationId,
|
|
5315
5327
|
locus_id: this.locusId,
|
|
5328
|
+
latency: cdl.getICESetupTime(),
|
|
5316
5329
|
});
|
|
5317
5330
|
this.setNetworkStatus(NETWORK_STATUS.CONNECTED);
|
|
5318
5331
|
this.reconnectionManager.iceReconnected();
|
|
@@ -5692,12 +5705,35 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5692
5705
|
promises.push(this.setLocalShareAudioStream(localStreams.screenShare.audio));
|
|
5693
5706
|
}
|
|
5694
5707
|
|
|
5708
|
+
// @ts-ignore
|
|
5709
|
+
const cdl = this.webex.internal.newMetrics.callDiagnosticLatencies;
|
|
5710
|
+
|
|
5695
5711
|
return Promise.all(promises)
|
|
5696
|
-
.then(() =>
|
|
5712
|
+
.then(() => {
|
|
5713
|
+
// @ts-ignore
|
|
5714
|
+
this.webex.internal.newMetrics.submitInternalEvent({
|
|
5715
|
+
name: 'internal.client.add-media.turn-discovery.start',
|
|
5716
|
+
});
|
|
5717
|
+
|
|
5718
|
+
return this.roap.doTurnDiscovery(this, false);
|
|
5719
|
+
})
|
|
5697
5720
|
.then(async (turnDiscoveryObject) => {
|
|
5698
5721
|
({turnDiscoverySkippedReason} = turnDiscoveryObject);
|
|
5699
5722
|
turnServerUsed = !turnDiscoverySkippedReason;
|
|
5700
5723
|
|
|
5724
|
+
// @ts-ignore
|
|
5725
|
+
this.webex.internal.newMetrics.submitInternalEvent({
|
|
5726
|
+
name: 'internal.client.add-media.turn-discovery.end',
|
|
5727
|
+
});
|
|
5728
|
+
|
|
5729
|
+
if (turnServerUsed) {
|
|
5730
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.TURN_DISCOVERY_LATENCY, {
|
|
5731
|
+
correlation_id: this.correlationId,
|
|
5732
|
+
latency: cdl.getTurnDiscoveryTime(),
|
|
5733
|
+
turnServerUsed,
|
|
5734
|
+
});
|
|
5735
|
+
}
|
|
5736
|
+
|
|
5701
5737
|
const {turnServerInfo} = turnDiscoveryObject;
|
|
5702
5738
|
|
|
5703
5739
|
const mc = await this.createMediaConnection(turnServerInfo, bundlePolicy);
|
package/src/metrics/constants.ts
CHANGED
|
@@ -61,6 +61,8 @@ const BEHAVIORAL_METRICS = {
|
|
|
61
61
|
LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo',
|
|
62
62
|
PERMISSION_TOKEN_REFRESH: 'js_sdk_permission_token_refresh',
|
|
63
63
|
PERMISSION_TOKEN_REFRESH_ERROR: 'js_sdk_permission_token_refresh_error',
|
|
64
|
+
TURN_DISCOVERY_LATENCY: 'js_sdk_turn_discovery_latency',
|
|
65
|
+
ROAP_OFFER_TO_ANSWER_LATENCY: 'js_sdk_roap_offer_to_answer_latency',
|
|
64
66
|
};
|
|
65
67
|
|
|
66
68
|
export {BEHAVIORAL_METRICS as default};
|
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
SELF_POLICY,
|
|
31
31
|
IP_VERSION,
|
|
32
32
|
ERROR_DICTIONARY,
|
|
33
|
+
NETWORK_STATUS,
|
|
33
34
|
} from '@webex/plugin-meetings/src/constants';
|
|
34
35
|
import * as InternalMediaCoreModule from '@webex/internal-media-core';
|
|
35
36
|
import {
|
|
@@ -69,6 +70,7 @@ import {MediaRequestManager} from '@webex/plugin-meetings/src/multistream/mediaR
|
|
|
69
70
|
import * as ReceiveSlotManagerModule from '@webex/plugin-meetings/src/multistream/receiveSlotManager';
|
|
70
71
|
import * as SendSlotManagerModule from '@webex/plugin-meetings/src/multistream/sendSlotManager';
|
|
71
72
|
|
|
73
|
+
import CallDiagnosticLatencies from '@webex/internal-plugin-metrics/src/call-diagnostic/call-diagnostic-metrics-latencies';
|
|
72
74
|
import LLM from '@webex/internal-plugin-llm';
|
|
73
75
|
import Mercury from '@webex/internal-plugin-mercury';
|
|
74
76
|
import Breakouts from '@webex/plugin-meetings/src/breakouts';
|
|
@@ -226,6 +228,10 @@ describe('plugin-meetings', () => {
|
|
|
226
228
|
getReachabilityMetrics: sinon.stub().resolves({}),
|
|
227
229
|
};
|
|
228
230
|
webex.internal.llm.on = sinon.stub();
|
|
231
|
+
webex.internal.newMetrics.callDiagnosticLatencies = new CallDiagnosticLatencies(
|
|
232
|
+
{},
|
|
233
|
+
{parent: webex}
|
|
234
|
+
);
|
|
229
235
|
membersSpy = sinon.spy(MembersImport, 'default');
|
|
230
236
|
meetingRequestSpy = sinon.spy(MeetingRequestImport, 'default');
|
|
231
237
|
|
|
@@ -1186,22 +1192,42 @@ describe('plugin-meetings', () => {
|
|
|
1186
1192
|
const error = await assert.isRejected(meeting.addMedia());
|
|
1187
1193
|
|
|
1188
1194
|
assert.isNull(meeting.statsAnalyzer);
|
|
1189
|
-
assert(
|
|
1190
|
-
assert.calledWith(
|
|
1191
|
-
|
|
1192
|
-
locus_id: meeting.locusUrl.split('/').pop(),
|
|
1193
|
-
reason: error.message,
|
|
1194
|
-
stack: error.stack,
|
|
1195
|
-
code: error.code,
|
|
1196
|
-
turnDiscoverySkippedReason: undefined,
|
|
1197
|
-
turnServerUsed: true,
|
|
1198
|
-
isMultistream: false,
|
|
1199
|
-
signalingState: 'unknown',
|
|
1200
|
-
connectionState: 'unknown',
|
|
1201
|
-
iceConnectionState: 'unknown',
|
|
1202
|
-
someReachabilityMetric1: 'some value1',
|
|
1203
|
-
someReachabilityMetric2: 'some value2',
|
|
1195
|
+
assert(webex.internal.newMetrics.submitInternalEvent.calledTwice);
|
|
1196
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.firstCall, {
|
|
1197
|
+
name: 'internal.client.add-media.turn-discovery.start',
|
|
1204
1198
|
});
|
|
1199
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.secondCall, {
|
|
1200
|
+
name: 'internal.client.add-media.turn-discovery.end',
|
|
1201
|
+
});
|
|
1202
|
+
assert(Metrics.sendBehavioralMetric.calledTwice);
|
|
1203
|
+
assert.calledWith(
|
|
1204
|
+
Metrics.sendBehavioralMetric.firstCall,
|
|
1205
|
+
BEHAVIORAL_METRICS.TURN_DISCOVERY_LATENCY,
|
|
1206
|
+
{
|
|
1207
|
+
correlation_id: meeting.correlationId,
|
|
1208
|
+
turnServerUsed: true,
|
|
1209
|
+
latency: undefined,
|
|
1210
|
+
}
|
|
1211
|
+
);
|
|
1212
|
+
assert.calledWith(
|
|
1213
|
+
Metrics.sendBehavioralMetric.secondCall,
|
|
1214
|
+
BEHAVIORAL_METRICS.ADD_MEDIA_FAILURE,
|
|
1215
|
+
{
|
|
1216
|
+
correlation_id: meeting.correlationId,
|
|
1217
|
+
locus_id: meeting.locusUrl.split('/').pop(),
|
|
1218
|
+
reason: error.message,
|
|
1219
|
+
stack: error.stack,
|
|
1220
|
+
code: error.code,
|
|
1221
|
+
turnDiscoverySkippedReason: undefined,
|
|
1222
|
+
turnServerUsed: true,
|
|
1223
|
+
isMultistream: false,
|
|
1224
|
+
signalingState: 'unknown',
|
|
1225
|
+
connectionState: 'unknown',
|
|
1226
|
+
iceConnectionState: 'unknown',
|
|
1227
|
+
someReachabilityMetric1: 'some value1',
|
|
1228
|
+
someReachabilityMetric2: 'some value2',
|
|
1229
|
+
}
|
|
1230
|
+
);
|
|
1205
1231
|
});
|
|
1206
1232
|
|
|
1207
1233
|
it('checks metrics called with skipped reason config', async () => {
|
|
@@ -1211,6 +1237,13 @@ describe('plugin-meetings', () => {
|
|
|
1211
1237
|
meeting.meetingState = 'ACTIVE';
|
|
1212
1238
|
await meeting.addMedia().catch((err) => {
|
|
1213
1239
|
assert.exists(err);
|
|
1240
|
+
assert(webex.internal.newMetrics.submitInternalEvent.calledTwice);
|
|
1241
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.firstCall, {
|
|
1242
|
+
name: 'internal.client.add-media.turn-discovery.start',
|
|
1243
|
+
});
|
|
1244
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.secondCall, {
|
|
1245
|
+
name: 'internal.client.add-media.turn-discovery.end',
|
|
1246
|
+
});
|
|
1214
1247
|
assert(Metrics.sendBehavioralMetric.calledOnce);
|
|
1215
1248
|
assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.ADD_MEDIA_FAILURE, {
|
|
1216
1249
|
correlation_id: meeting.correlationId,
|
|
@@ -1237,9 +1270,25 @@ describe('plugin-meetings', () => {
|
|
|
1237
1270
|
});
|
|
1238
1271
|
const result = await assert.isRejected(meeting.addMedia());
|
|
1239
1272
|
|
|
1240
|
-
assert(
|
|
1273
|
+
assert(webex.internal.newMetrics.submitInternalEvent.calledTwice);
|
|
1274
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.firstCall, {
|
|
1275
|
+
name: 'internal.client.add-media.turn-discovery.start',
|
|
1276
|
+
});
|
|
1277
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.secondCall, {
|
|
1278
|
+
name: 'internal.client.add-media.turn-discovery.end',
|
|
1279
|
+
});
|
|
1280
|
+
assert(Metrics.sendBehavioralMetric.calledTwice);
|
|
1241
1281
|
assert.calledWith(
|
|
1242
|
-
Metrics.sendBehavioralMetric,
|
|
1282
|
+
Metrics.sendBehavioralMetric.firstCall,
|
|
1283
|
+
BEHAVIORAL_METRICS.TURN_DISCOVERY_LATENCY,
|
|
1284
|
+
{
|
|
1285
|
+
correlation_id: meeting.correlationId,
|
|
1286
|
+
turnServerUsed: true,
|
|
1287
|
+
latency: undefined,
|
|
1288
|
+
}
|
|
1289
|
+
);
|
|
1290
|
+
assert.calledWith(
|
|
1291
|
+
Metrics.sendBehavioralMetric.secondCall,
|
|
1243
1292
|
BEHAVIORAL_METRICS.ADD_MEDIA_FAILURE,
|
|
1244
1293
|
sinon.match({
|
|
1245
1294
|
correlation_id: meeting.correlationId,
|
|
@@ -1278,6 +1327,23 @@ describe('plugin-meetings', () => {
|
|
|
1278
1327
|
meeting.statsAnalyzer = {stopAnalyzer: sinon.stub().resolves()};
|
|
1279
1328
|
const error = await assert.isRejected(meeting.addMedia());
|
|
1280
1329
|
|
|
1330
|
+
assert(webex.internal.newMetrics.submitInternalEvent.calledTwice);
|
|
1331
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.firstCall, {
|
|
1332
|
+
name: 'internal.client.add-media.turn-discovery.start',
|
|
1333
|
+
});
|
|
1334
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.secondCall, {
|
|
1335
|
+
name: 'internal.client.add-media.turn-discovery.end',
|
|
1336
|
+
});
|
|
1337
|
+
assert(Metrics.sendBehavioralMetric.calledTwice);
|
|
1338
|
+
assert.calledWith(
|
|
1339
|
+
Metrics.sendBehavioralMetric.firstCall,
|
|
1340
|
+
BEHAVIORAL_METRICS.TURN_DISCOVERY_LATENCY,
|
|
1341
|
+
{
|
|
1342
|
+
correlation_id: meeting.correlationId,
|
|
1343
|
+
turnServerUsed: true,
|
|
1344
|
+
latency: undefined,
|
|
1345
|
+
}
|
|
1346
|
+
);
|
|
1281
1347
|
assert.calledWith(
|
|
1282
1348
|
Metrics.sendBehavioralMetric,
|
|
1283
1349
|
BEHAVIORAL_METRICS.ADD_MEDIA_FAILURE,
|
|
@@ -1297,7 +1363,6 @@ describe('plugin-meetings', () => {
|
|
|
1297
1363
|
);
|
|
1298
1364
|
|
|
1299
1365
|
assert.isNull(meeting.statsAnalyzer);
|
|
1300
|
-
assert(Metrics.sendBehavioralMetric.calledOnce);
|
|
1301
1366
|
});
|
|
1302
1367
|
|
|
1303
1368
|
it('should include the peer connection properties correctly for transcoded', async () => {
|
|
@@ -1318,6 +1383,23 @@ describe('plugin-meetings', () => {
|
|
|
1318
1383
|
meeting.statsAnalyzer = {stopAnalyzer: sinon.stub().resolves()};
|
|
1319
1384
|
const error = await assert.isRejected(meeting.addMedia());
|
|
1320
1385
|
|
|
1386
|
+
assert(webex.internal.newMetrics.submitInternalEvent.calledTwice);
|
|
1387
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.firstCall, {
|
|
1388
|
+
name: 'internal.client.add-media.turn-discovery.start',
|
|
1389
|
+
});
|
|
1390
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.secondCall, {
|
|
1391
|
+
name: 'internal.client.add-media.turn-discovery.end',
|
|
1392
|
+
});
|
|
1393
|
+
assert(Metrics.sendBehavioralMetric.calledTwice);
|
|
1394
|
+
assert.calledWith(
|
|
1395
|
+
Metrics.sendBehavioralMetric.firstCall,
|
|
1396
|
+
BEHAVIORAL_METRICS.TURN_DISCOVERY_LATENCY,
|
|
1397
|
+
{
|
|
1398
|
+
correlation_id: meeting.correlationId,
|
|
1399
|
+
turnServerUsed: true,
|
|
1400
|
+
latency: undefined,
|
|
1401
|
+
}
|
|
1402
|
+
);
|
|
1321
1403
|
assert.calledWith(
|
|
1322
1404
|
Metrics.sendBehavioralMetric,
|
|
1323
1405
|
BEHAVIORAL_METRICS.ADD_MEDIA_FAILURE,
|
|
@@ -1337,7 +1419,6 @@ describe('plugin-meetings', () => {
|
|
|
1337
1419
|
);
|
|
1338
1420
|
|
|
1339
1421
|
assert.isNull(meeting.statsAnalyzer);
|
|
1340
|
-
assert(Metrics.sendBehavioralMetric.calledOnce);
|
|
1341
1422
|
});
|
|
1342
1423
|
|
|
1343
1424
|
it('should work the second time addMedia is called in case the first time fails', async () => {
|
|
@@ -1400,6 +1481,13 @@ describe('plugin-meetings', () => {
|
|
|
1400
1481
|
const checkWorking = ({allowMediaInLobby} = {}) => {
|
|
1401
1482
|
assert.calledOnce(meeting.roap.doTurnDiscovery);
|
|
1402
1483
|
assert.calledWith(meeting.roap.doTurnDiscovery, meeting, false);
|
|
1484
|
+
assert(webex.internal.newMetrics.submitInternalEvent.calledTwice);
|
|
1485
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.firstCall, {
|
|
1486
|
+
name: 'internal.client.add-media.turn-discovery.start',
|
|
1487
|
+
});
|
|
1488
|
+
assert.calledWith(webex.internal.newMetrics.submitInternalEvent.secondCall, {
|
|
1489
|
+
name: 'internal.client.add-media.turn-discovery.end',
|
|
1490
|
+
});
|
|
1403
1491
|
assert.calledOnce(meeting.mediaProperties.setMediaDirection);
|
|
1404
1492
|
assert.calledOnce(Media.createMediaConnection);
|
|
1405
1493
|
assert.calledWith(
|
|
@@ -1562,15 +1650,19 @@ describe('plugin-meetings', () => {
|
|
|
1562
1650
|
mediaSettings: {},
|
|
1563
1651
|
});
|
|
1564
1652
|
|
|
1565
|
-
assert.
|
|
1566
|
-
assert.calledWith(
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1653
|
+
assert.calledTwice(Metrics.sendBehavioralMetric);
|
|
1654
|
+
assert.calledWith(
|
|
1655
|
+
Metrics.sendBehavioralMetric.secondCall,
|
|
1656
|
+
BEHAVIORAL_METRICS.ADD_MEDIA_SUCCESS,
|
|
1657
|
+
{
|
|
1658
|
+
correlation_id: meeting.correlationId,
|
|
1659
|
+
locus_id: meeting.locusUrl.split('/').pop(),
|
|
1660
|
+
connectionType: 'udp',
|
|
1661
|
+
isMultistream: false,
|
|
1662
|
+
someReachabilityMetric1: 'some value1',
|
|
1663
|
+
someReachabilityMetric2: 'some value2',
|
|
1664
|
+
}
|
|
1665
|
+
);
|
|
1574
1666
|
|
|
1575
1667
|
assert.called(webex.internal.newMetrics.submitClientEvent);
|
|
1576
1668
|
assert.calledWithMatch(webex.internal.newMetrics.submitClientEvent, {
|
|
@@ -4846,6 +4938,47 @@ describe('plugin-meetings', () => {
|
|
|
4846
4938
|
});
|
|
4847
4939
|
});
|
|
4848
4940
|
|
|
4941
|
+
describe('submitClientEvent on connectionSuccess', () => {
|
|
4942
|
+
it('sends client.ice.end when connectionSuccess on CONNECTION_STATE_CHANGED event', () => {
|
|
4943
|
+
meeting.reconnectionManager = new ReconnectionManager(meeting);
|
|
4944
|
+
meeting.reconnectionManager.iceReconnected = sinon.stub().returns(undefined);
|
|
4945
|
+
meeting.setNetworkStatus = sinon.stub().returns(undefined);
|
|
4946
|
+
meeting.statsAnalyzer = {startAnalyzer: sinon.stub()};
|
|
4947
|
+
meeting.mediaProperties.webrtcMediaConnection = {
|
|
4948
|
+
// mock the on() method and store all the listeners
|
|
4949
|
+
on: sinon.stub().callsFake((event, listener) => {
|
|
4950
|
+
eventListeners[event] = listener;
|
|
4951
|
+
}),
|
|
4952
|
+
};
|
|
4953
|
+
|
|
4954
|
+
meeting.setupMediaConnectionListeners();
|
|
4955
|
+
eventListeners[Event.CONNECTION_STATE_CHANGED]({
|
|
4956
|
+
state: 'Connected',
|
|
4957
|
+
});
|
|
4958
|
+
assert.calledOnce(webex.internal.newMetrics.submitClientEvent);
|
|
4959
|
+
assert.calledWithMatch(webex.internal.newMetrics.submitClientEvent, {
|
|
4960
|
+
name: 'client.ice.end',
|
|
4961
|
+
options: {
|
|
4962
|
+
meetingId: meeting.id,
|
|
4963
|
+
},
|
|
4964
|
+
});
|
|
4965
|
+
assert.calledOnce(Metrics.sendBehavioralMetric);
|
|
4966
|
+
assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.CONNECTION_SUCCESS, {
|
|
4967
|
+
correlation_id: meeting.correlationId,
|
|
4968
|
+
locus_id: meeting.locusId,
|
|
4969
|
+
latency: undefined,
|
|
4970
|
+
});
|
|
4971
|
+
assert.calledOnce(meeting.setNetworkStatus);
|
|
4972
|
+
assert.calledWith(meeting.setNetworkStatus, NETWORK_STATUS.CONNECTED);
|
|
4973
|
+
assert.calledOnce(meeting.reconnectionManager.iceReconnected);
|
|
4974
|
+
assert.calledOnce(meeting.statsAnalyzer.startAnalyzer);
|
|
4975
|
+
assert.calledWith(
|
|
4976
|
+
meeting.statsAnalyzer.startAnalyzer,
|
|
4977
|
+
meeting.mediaProperties.webrtcMediaConnection
|
|
4978
|
+
);
|
|
4979
|
+
});
|
|
4980
|
+
});
|
|
4981
|
+
|
|
4849
4982
|
describe('should send correct metrics for ROAP_FAILURE event', () => {
|
|
4850
4983
|
const fakeErrorMessage = 'test error';
|
|
4851
4984
|
const fakeRootCauseName = 'root cause name';
|
|
@@ -5008,6 +5141,17 @@ describe('plugin-meetings', () => {
|
|
|
5008
5141
|
mediaId: meeting.mediaId,
|
|
5009
5142
|
correlationId: meeting.correlationId,
|
|
5010
5143
|
});
|
|
5144
|
+
|
|
5145
|
+
assert.calledOnce(Metrics.sendBehavioralMetric);
|
|
5146
|
+
assert.calledWith(
|
|
5147
|
+
Metrics.sendBehavioralMetric,
|
|
5148
|
+
BEHAVIORAL_METRICS.ROAP_OFFER_TO_ANSWER_LATENCY,
|
|
5149
|
+
{
|
|
5150
|
+
correlation_id: meeting.correlationId,
|
|
5151
|
+
meetingId: meeting.id,
|
|
5152
|
+
latency: undefined,
|
|
5153
|
+
}
|
|
5154
|
+
);
|
|
5011
5155
|
});
|
|
5012
5156
|
|
|
5013
5157
|
it('handles OFFER message correctly', () => {
|