Files
cgrates/cdrs/fscdr_test.go
2013-05-19 20:06:08 +03:00

37 lines
14 KiB
Go

/*
Rating system designed to be used in VoIP Carriers World
Copyright (C) 2013 ITsysCOM
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package cdrs
import (
"testing"
)
var body = []byte(`{"core-uuid":"9b8ce609-6413-437b-8cf3-bbb92aaf720a","channel_data":{"state":"CS_REPORTING","direction":"inbound","state_number":"11","flags":"0=1;1=1;3=1;36=1;37=1;39=1;42=1;47=1;49=1;52=1;72=1;74=1","caps":"1=1;2=1;3=1;4=1;5=1;6=1"},"variables":{"direction":"inbound","uuid":"c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e","session_id":"5","sip_from_user":"1001","sip_from_uri":"1001%40192.168.56.10","sip_from_host":"192.168.56.10","channel_name":"sofia/internal/1001%40192.168.56.10","sip_local_network_addr":"192.168.56.10","sip_network_ip":"192.168.56.1","sip_network_port":"5060","sip_received_ip":"192.168.56.1","sip_received_port":"5060","sip_via_protocol":"udp","sip_authorized":"true","sip_number_alias":"1001","sip_auth_username":"1001","sip_auth_realm":"192.168.56.10","number_alias":"1001","user_name":"1001","domain_name":"192.168.56.10","record_stereo":"true","default_gateway":"example.com","default_areacode":"918","transfer_fallback_extension":"operator","toll_allow":"domestic,international,local","accountcode":"1001","user_context":"default","effective_caller_id_name":"Extension%201001","effective_caller_id_number":"1001","outbound_caller_id_name":"FreeSWITCH","outbound_caller_id_number":"0000000000","callgroup":"techsupport","sip_from_user_stripped":"1001","sofia_profile_name":"internal","recovery_profile_name":"internal","sip_req_user":"1002","sip_req_uri":"1002%40192.168.56.10","sip_req_host":"192.168.56.10","sip_to_user":"1002","sip_to_uri":"1002%40192.168.56.10","sip_to_host":"192.168.56.10","sip_contact_params":"transport%3Dudp%3Bregistering_acc%3D192_168_56_10","sip_contact_user":"1001","sip_contact_port":"5060","sip_contact_uri":"1001%40192.168.56.1%3A5060","sip_contact_host":"192.168.56.1","sip_user_agent":"Jitsi2.2.4603.9615Linux","sip_via_host":"192.168.56.1","sip_via_port":"5060","max_forwards":"70","presence_id":"1001%40192.168.56.10","ep_codec_string":"PCMA%408000h%4020i%4064000b,PCMU%408000h%4020i%4064000b","DP_MATCH":"ARRAY%3A%3A1002%7C%3A1002","call_uuid":"c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e","open":"true","RFC2822_DATE":"Thu,%2016%20May%202013%2014%3A33%3A28%20%2B0200","dialed_extension":"1002","export_vars":"RFC2822_DATE,dialed_extension","ringback":"%25(2000,4000,440,480)","transfer_ringback":"local_stream%3A//moh","call_timeout":"30","hangup_after_bridge":"true","continue_on_fail":"true","called_party_callgroup":"techsupport","current_application_data":"user/1002%40192.168.56.10","current_application":"bridge","dialed_user":"1002","dialed_domain":"192.168.56.10","inherit_codec":"true","originated_legs":"ARRAY%3A%3A28262ed6-9d57-4dac-8f0b-9cad38cc5183%3BOutbound%20Call%3B1002%7C%3A28262ed6-9d57-4dac-8f0b-9cad38cc5183%3BOutbound%20Call%3B1002","sip_use_codec_name":"PCMA","sip_use_codec_rate":"8000","sip_use_codec_ptime":"20","write_codec":"PCMA","write_rate":"8000","video_possible":"true","local_media_ip":"192.168.56.10","local_media_port":"23158","advertised_media_ip":"192.168.56.10","sip_use_pt":"8","rtp_use_ssrc":"1387666080","zrtp_secure_media_confirmed_audio":"true","zrtp_sas1_string_audio":"xyhx","switch_m_sdp":"v%3D0%0D%0Ao%3D1002%200%200%20IN%20IP4%20192.168.56.1%0D%0As%3D-%0D%0Ac%3DIN%20IP4%20192.168.56.1%0D%0At%3D0%200%0D%0Am%3Daudio%205022%20RTP/AVP%208%200%0D%0Aa%3Drtpmap%3A8%20PCMA/8000%0D%0Aa%3Drtpmap%3A0%20PCMU/8000%0D%0A","read_codec":"PCMA","read_rate":"8000","endpoint_disposition":"ANSWER","originate_causes":"ARRAY%3A%3A28262ed6-9d57-4dac-8f0b-9cad38cc5183%3BNONE%7C%3A28262ed6-9d57-4dac-8f0b-9cad38cc5183%3BNONE","originate_disposition":"SUCCESS","DIALSTATUS":"SUCCESS","last_bridge_to":"28262ed6-9d57-4dac-8f0b-9cad38cc5183","bridge_channel":"sofia/internal/sip%3A1002%40192.168.56.1%3A5060","bridge_uuid":"28262ed6-9d57-4dac-8f0b-9cad38cc5183","signal_bond":"28262ed6-9d57-4dac-8f0b-9cad38cc5183","last_sent_callee_id_name":"Outbound%20Call","last_sent_callee_id_number":"1002","sip_reinvite_sdp":"v%3D0%0D%0Ao%3D1001%200%201%20IN%20IP4%20192.168.56.1%0D%0As%3D-%0D%0Ac%3DIN%20IP4%20192.168.56.1%0D%0At%3D0%200%0D%0Am%3Daudio%205018%20RTP/AVP%2096%208%200%0D%0Aa%3Dsendonly%0D%0Aa%3Drtpmap%3A96%20opus/48000%0D%0Aa%3Dfmtp%3A96%20usedtx%3D1%0D%0Aa%3Drtpmap%3A8%20PCMA/8000%0D%0Aa%3Drtpmap%3A0%20PCMU/8000%0D%0Aa%3Dextmap%3A1%20urn%3Aietf%3Aparams%3Artp-hdrext%3Acsrc-audio-level%0D%0Aa%3Dzrtp-hash%3A1.10%2038d673831a623b1f80d4fe539ab9e2199ac7d5aa2c9dc2822940f8a016beac94%0D%0Am%3Dvideo%200%20RTP/AVP%2097%2099%0D%0A","switch_r_sdp":"v%3D0%0D%0Ao%3D1001%200%201%20IN%20IP4%20192.168.56.1%0D%0As%3D-%0D%0Ac%3DIN%20IP4%20192.168.56.1%0D%0At%3D0%200%0D%0Am%3Daudio%205018%20RTP/AVP%2096%208%200%0D%0Aa%3Drtpmap%3A96%20opus/48000%0D%0Aa%3Dfmtp%3A96%20usedtx%3D1%0D%0Aa%3Drtpmap%3A8%20PCMA/8000%0D%0Aa%3Drtpmap%3A0%20PCMU/8000%0D%0Aa%3Dsendonly%0D%0Aa%3Dextmap%3A1%20urn%3Aietf%3Aparams%3Artp-hdrext%3Acsrc-audio-level%0D%0Aa%3Dzrtp-hash%3A1.10%2038d673831a623b1f80d4fe539ab9e2199ac7d5aa2c9dc2822940f8a016beac94%0D%0Am%3Dvideo%200%20RTP/AVP%2097%2099%0D%0A","r_sdp_audio_zrtp_hash":"1.10%2038d673831a623b1f80d4fe539ab9e2199ac7d5aa2c9dc2822940f8a016beac94","remote_media_ip":"192.168.56.1","remote_media_port":"5018","sip_audio_recv_pt":"8","dtmf_type":"info","sip_local_sdp_str":"v%3D0%0Ao%3DFreeSWITCH%201368684450%201368684453%20IN%20IP4%20192.168.56.10%0As%3DFreeSWITCH%0Ac%3DIN%20IP4%20192.168.56.10%0At%3D0%200%0Am%3Daudio%2023158%20RTP/AVP%208%0Aa%3Drtpmap%3A8%20PCMA/8000%0Aa%3DsilenceSupp%3Aoff%20-%20-%20-%20-%0Aa%3Dptime%3A20%0Aa%3Dsendrecv%0A","sip_to_tag":"4yBBm5aFZ22vN","sip_from_tag":"d62e0dad","sip_cseq":"3","sip_call_id":"774f3a8a01222f664e6edebd372eef3d%400%3A0%3A0%3A0%3A0%3A0%3A0%3A0","sip_full_via":"SIP/2.0/UDP%20192.168.56.1%3A5060%3Bbranch%3Dz9hG4bK-343439-77113007fa4585ae040b5845fa11d4e8","sip_from_display":"1001","sip_full_from":"%221001%22%20%3Csip%3A1001%40192.168.56.10%3E%3Btag%3Dd62e0dad","sip_full_to":"%3Csip%3A1002%40192.168.56.10%3E%3Btag%3D4yBBm5aFZ22vN","sip_hangup_phrase":"OK","last_bridge_hangup_cause":"NORMAL_CLEARING","last_bridge_proto_specific_hangup_cause":"sip%3A200","bridge_hangup_cause":"NORMAL_CLEARING","hangup_cause":"NORMAL_CLEARING","hangup_cause_q850":"16","digits_dialed":"none","start_stamp":"2013-05-16%2014%3A33%3A28","profile_start_stamp":"2013-05-16%2014%3A33%3A28","answer_stamp":"2013-05-16%2014%3A33%3A31","bridge_stamp":"2013-05-16%2014%3A33%3A31","hold_stamp":"2013-05-16%2014%3A33%3A31","progress_stamp":"2013-05-16%2014%3A33%3A28","progress_media_stamp":"2013-05-16%2014%3A33%3A28","hold_events":"%7B%7B1368707611507967,1368707632287684%7D%7D","end_stamp":"2013-05-16%2014%3A33%3A52","start_epoch":"1368707608","start_uepoch":"1368707608847154","profile_start_epoch":"1368707608","profile_start_uepoch":"1368707608847154","answer_epoch":"1368707611","answer_uepoch":"1368707611310737","bridge_epoch":"1368707611","bridge_uepoch":"1368707611310737","last_hold_epoch":"1368707611","last_hold_uepoch":"1368707611507966","hold_accum_seconds":"0","hold_accum_usec":"0","hold_accum_ms":"0","resurrect_epoch":"0","resurrect_uepoch":"0","progress_epoch":"1368707608","progress_uepoch":"1368707608927201","progress_media_epoch":"1368707608","progress_media_uepoch":"1368707608947168","end_epoch":"1368707632","end_uepoch":"1368707632287198","last_app":"bridge","last_arg":"user/1002%40192.168.56.10","caller_id":"%221001%22%20%3C1001%3E","duration":"24","billsec":"21","progresssec":"0","answersec":"3","waitsec":"3","progress_mediasec":"0","flow_billsec":"24","mduration":"23440","billmsec":"20977","progressmsec":"80","answermsec":"2463","waitmsec":"2463","progress_mediamsec":"100","flow_billmsec":"23440","uduration":"23440044","billusec":"20976461","progressusec":"80047","answerusec":"2463583","waitusec":"2463583","progress_mediausec":"100014","flow_billusec":"23440044","sip_hangup_disposition":"send_bye","rtp_audio_in_raw_bytes":"202404","rtp_audio_in_media_bytes":"201524","rtp_audio_in_packet_count":"1150","rtp_audio_in_media_packet_count":"1145","rtp_audio_in_skip_packet_count":"36","rtp_audio_in_jb_packet_count":"0","rtp_audio_in_dtmf_packet_count":"0","rtp_audio_in_cng_packet_count":"0","rtp_audio_in_flush_packet_count":"5","rtp_audio_in_largest_jb_size":"0","rtp_audio_out_raw_bytes":"193228","rtp_audio_out_media_bytes":"193228","rtp_audio_out_packet_count":"1098","rtp_audio_out_media_packet_count":"1098","rtp_audio_out_skip_packet_count":"0","rtp_audio_out_dtmf_packet_count":"0","rtp_audio_out_cng_packet_count":"0","rtp_audio_rtcp_packet_count":"0","rtp_audio_rtcp_octet_count":"0"},"app_log":{"applications":[{"app_name":"set","app_data":"open=true"},{"app_name":"hash","app_data":"insert/192.168.56.10-spymap/1001/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial/1001/1002"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial/global/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"export","app_data":"RFC2822_DATE=Thu, 16 May 2013 14:33:28 +0200"},{"app_name":"export","app_data":"dialed_extension=1002"},{"app_name":"bind_meta_app","app_data":"1 b s execute_extension::dx XML features"},{"app_name":"bind_meta_app","app_data":"2 b s record_session::/var/lib/freeswitch/recordings/1001.2013-05-16-14-33-28.wav"},{"app_name":"bind_meta_app","app_data":"3 b s execute_extension::cf XML features"},{"app_name":"bind_meta_app","app_data":"4 b s execute_extension::att_xfer XML features"},{"app_name":"set","app_data":"ringback=%(2000,4000,440,480)"},{"app_name":"set","app_data":"transfer_ringback=local_stream://moh"},{"app_name":"set","app_data":"call_timeout=30"},{"app_name":"set","app_data":"hangup_after_bridge=true"},{"app_name":"set","app_data":"continue_on_fail=true"},{"app_name":"hash","app_data":"insert/192.168.56.10-call_return/1002/1001"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial_ext/1002/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"set","app_data":"called_party_callgroup=techsupport"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial_ext/techsupport/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial_ext/global/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial/techsupport/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"bridge","app_data":"user/1002@192.168.56.10"}]},"callflow":{"dialplan":"XML","profile_index":"1","extension":{"name":"tod_example","number":"1002","applications":[{"app_name":"set","app_data":"open=true"},{"app_name":"hash","app_data":"insert/${domain_name}-spymap/${caller_id_number}/${uuid}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial/${caller_id_number}/${destination_number}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial/global/${uuid}"},{"app_name":"export","app_data":"RFC2822_DATE=${strftime(%a, %d %b %Y %T %z)}"},{"app_name":"export","app_data":"dialed_extension=1002"},{"app_name":"bind_meta_app","app_data":"1 b s execute_extension::dx XML features"},{"app_name":"bind_meta_app","app_data":"2 b s record_session::/var/lib/freeswitch/recordings/${caller_id_number}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"},{"app_name":"bind_meta_app","app_data":"3 b s execute_extension::cf XML features"},{"app_name":"bind_meta_app","app_data":"4 b s execute_extension::att_xfer XML features"},{"app_name":"set","app_data":"ringback=${us-ring}"},{"app_name":"set","app_data":"transfer_ringback=local_stream://moh"},{"app_name":"set","app_data":"call_timeout=30"},{"app_name":"set","app_data":"hangup_after_bridge=true"},{"app_name":"set","app_data":"continue_on_fail=true"},{"app_name":"hash","app_data":"insert/${domain_name}-call_return/${dialed_extension}/${caller_id_number}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial_ext/${dialed_extension}/${uuid}"},{"app_name":"set","app_data":"called_party_callgroup=${user_data(${dialed_extension}@${domain_name} var callgroup)}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial_ext/${called_party_callgroup}/${uuid}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial_ext/global/${uuid}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial/${called_party_callgroup}/${uuid}"},{"app_name":"bridge","app_data":"user/${dialed_extension}@${domain_name}"},{"last_executed":"true","app_name":"answer","app_data":""},{"app_name":"sleep","app_data":"1000"},{"app_name":"bridge","app_data":"loopback/app=voicemail:default ${domain_name} ${dialed_extension}"}],"current_app":"answer"},"caller_profile":{"username":"1001","dialplan":"XML","caller_id_name":"1001","ani":"1001","aniii":"","caller_id_number":"1001","network_addr":"192.168.56.1","rdnis":"","destination_number":"1002","uuid":"c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e","source":"mod_sofia","context":"default","chan_name":"sofia/internal/1001@192.168.56.10","originatee":{"originatee_caller_profiles":[{"username":"1001","dialplan":"XML","caller_id_name":"Extension 1001","ani":"1001","aniii":"","caller_id_number":"1001","network_addr":"192.168.56.1","rdnis":"","destination_number":"1002","uuid":"28262ed6-9d57-4dac-8f0b-9cad38cc5183","source":"mod_sofia","context":"default","chan_name":"sofia/internal/sip:1002@192.168.56.1:5060"},{"username":"1001","dialplan":"XML","caller_id_name":"Extension 1001","ani":"1001","aniii":"","caller_id_number":"1001","network_addr":"192.168.56.1","rdnis":"","destination_number":"1002","uuid":"28262ed6-9d57-4dac-8f0b-9cad38cc5183","source":"mod_sofia","context":"default","chan_name":"sofia/internal/sip:1002@192.168.56.1:5060"}]}},"times":{"created_time":"1368707608847154","profile_created_time":"1368707608847154","progress_time":"1368707608927201","progress_media_time":"1368707608947168","answered_time":"1368707611310737","hangup_time":"1368707632287198","resurrect_time":"0","transfer_time":"0"}}}`)
func TestFirstNonEmpty(t *testing.T) {
fsCdr, err := new(FSCdr).New(body)
if err != nil {
t.Errorf("Error loading cdr: %v", err)
}
fsc := fsCdr.(FSCdr)
if _, ok := fsc["dialed_user"]; !ok {
t.Error("Error parsing cdr: ", fsCdr)
}
}