-------------------------------------------------------------------------------------------- trial-277 -------------------------------------------------------------------------------------------- 12:21:27.127476 tst trial-277: Detailed log at /home/jenkins/workspace/osmo-gsm-tester_manual-run/trial-277/run.2020-05-11_12-21-27/log [trial.py:79] 12:21:27.786652 cnf ResourcesPool: DBG: Found config file resources.conf as /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example/resources.conf.prod in /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example which is /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example [config.py:102] 12:21:27.787162 cnf ResourcesPool: DBG: Found path state_dir as /var/tmp/osmo-gsm-tester/state [config.py:144] --------------------------------------------------------------------- trial-277 4g:srsenb-rftype@zmq+srsue-rftype@zmq --------------------------------------------------------------------- 12:21:28.535360 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: reserving resources in /var/tmp/osmo-gsm-tester/state ... [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [suite.py:176] 12:21:28.535940 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: {combining='resources'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [suite.py:131] 12:21:28.536680 tst {combining_scenarios='resources'}: DBG: {definition_conf={enb=[{}], modem=[{'features': ['4g']}], run_node=[{}]}} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪{combining_scenarios='resources'}] [suite.py:136] 12:21:28.537351 tst {combining_scenarios='resources', scenario='srsenb-rftype@zmq.conf'}: DBG: {conf={enb=[{'type': 'srsenb', 'rf_dev_type': 'zmq'}]}, scenario='srsenb-rftype@zmq.conf'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪{combining_scenarios='resources', scenario='srsenb-rftype@zmq.conf'}] [suite.py:142] 12:21:28.538265 tst {combining_scenarios='resources', scenario='srsue-rftype@zmq.conf'}: DBG: {conf={modem=[{'type': 'srsue', 'rf_dev_type': 'zmq'}]}, scenario='srsue-rftype@zmq.conf'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪{combining_scenarios='resources', scenario='srsue-rftype@zmq.conf'}] [suite.py:142] 12:21:28.538937 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: {combining='modifiers'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [suite.py:131] 12:21:28.539387 tst {combining_scenarios='modifiers'}: DBG: {definition_conf={}} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪{combining_scenarios='modifiers'}] [suite.py:136] 12:21:28.539851 tst {combining_scenarios='modifiers', scenario='srsenb-rftype@zmq.conf'}: DBG: {conf={}, scenario='srsenb-rftype@zmq.conf'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪{combining_scenarios='modifiers', scenario='srsenb-rftype@zmq.conf'}] [suite.py:142] 12:21:28.540321 tst {combining_scenarios='modifiers', scenario='srsue-rftype@zmq.conf'}: DBG: {conf={}, scenario='srsue-rftype@zmq.conf'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪{combining_scenarios='modifiers', scenario='srsue-rftype@zmq.conf'}] [suite.py:142] 12:21:28.560525 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: Reserving 1 x enb (candidates: 2) [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:412] 12:21:28.577307 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: Picked - _hash: 473826326f14c6fc29a23f1ef737b8dcd1069a94 addr: 10.42.42.117 label: srsENB-zmq remote_user: jenkins rf_dev_args: auto rf_dev_type: zmq type: srsenb [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:456] 12:21:28.578033 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: Reserving 1 x modem (candidates: 10) [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:412] 12:21:28.602790 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: Picked - _hash: cde994274347e3eb757ad9ea639a0ac40f1fdf33 addr: 10.42.42.116 auth_algo: xor features: - 4g imsi: 001010123456789 ki: 00112233445566778899aabbccddeeff label: srsUE-zmq_1 remote_user: jenkins rf_dev_args: auto rf_dev_type: zmq type: srsue [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:456] 12:21:28.603558 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: Reserving 1 x run_node (candidates: 1) [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:412] 12:21:28.616525 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: Picked - _hash: e55cbce541824969b492cc4fa86bdef69cf65e7d run_addr: 10.42.42.118 run_type: ssh ssh_addr: 10.42.42.116 ssh_user: jenkins [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:456] ---------------------------------------------- trial-277 4g:srsenb-rftype@zmq+srsue-rftype@zmq iperf3_dl.py ---------------------------------------------- 12:21:28.831956 --- ReservedResources: DBG: requesting use of run_node {specifics={}} [resource.py:587] 12:21:28.832844 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: Using 1 x run_node (candidates: 1) [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:412] 12:21:28.849150 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: Picked - _hash: e55cbce541824969b492cc4fa86bdef69cf65e7d _reserved_by: 4g:srsenb-rftype@zmq+srsue-rftype@zmq-18650-1589192488 run_addr: 10.42.42.118 run_type: ssh ssh_addr: 10.42.42.116 ssh_user: jenkins [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:456] 12:21:28.849863 --- ReservedResources: DBG: {available=1} [resource.py:593] 12:21:28.850376 --- ReservedResources: DBG: {using={_hash='e55cbce541824969b492cc4fa86bdef69cf65e7d', _reserved_by='4g:srsenb-rftype@zmq+srsue-rftype@zmq-18650-1589192488', run_addr='10.42.42.118', run_type='ssh', ssh_addr='10.42.42.116', ssh_user='jenkins'}} [resource.py:611] 12:21:28.851816 cnf 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: Found config file defaults.conf as /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example/defaults.conf in /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example which is /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [config.py:102] 12:21:29.163633 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: {combining='config'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [suite.py:131] 12:21:29.164620 tst {combining_scenarios='config'}: DBG: {definition_conf={}} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪{combining_scenarios='config'}] [suite.py:136] 12:21:29.165341 tst {combining_scenarios='config', scenario='srsenb-rftype@zmq.conf'}: DBG: {conf={}, scenario='srsenb-rftype@zmq.conf'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪{combining_scenarios='config', scenario='srsenb-rftype@zmq.conf'}] [suite.py:142] 12:21:29.166185 tst {combining_scenarios='config', scenario='srsue-rftype@zmq.conf'}: DBG: {conf={}, scenario='srsue-rftype@zmq.conf'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪{combining_scenarios='config', scenario='srsue-rftype@zmq.conf'}] [suite.py:142] 12:21:29.166930 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: create EPC object {type='srsepc'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [suite.py:513] 12:21:29.167675 --- ReservedResources: DBG: requesting use of enb {specifics={}} [resource.py:587] 12:21:29.168453 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: Using 1 x enb (candidates: 1) [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:412] 12:21:29.188510 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: Picked - _hash: 473826326f14c6fc29a23f1ef737b8dcd1069a94 _reserved_by: 4g:srsenb-rftype@zmq+srsue-rftype@zmq-18650-1589192488 addr: 10.42.42.117 label: srsENB-zmq remote_user: jenkins rf_dev_args: auto rf_dev_type: zmq type: srsenb [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:456] 12:21:29.189262 --- ReservedResources: DBG: {available=1} [resource.py:593] 12:21:29.189744 --- ReservedResources: DBG: {using={_hash='473826326f14c6fc29a23f1ef737b8dcd1069a94', _reserved_by='4g:srsenb-rftype@zmq+srsue-rftype@zmq-18650-1589192488', addr='10.42.42.117', label='srsENB-zmq', remote_user='jenkins', rf_dev_args='auto', rf_dev_type='zmq', type='srsenb'}} [resource.py:611] 12:21:29.190676 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: create ENB object {type='srsenb'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [suite.py:501] 12:21:29.191472 --- ReservedResources: DBG: requesting use of modem {specifics={}} [resource.py:587] 12:21:29.192254 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: Using 1 x modem (candidates: 1) [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:412] 12:21:29.221190 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: Picked - _hash: cde994274347e3eb757ad9ea639a0ac40f1fdf33 _reserved_by: 4g:srsenb-rftype@zmq+srsue-rftype@zmq-18650-1589192488 addr: 10.42.42.116 auth_algo: xor features: - 4g imsi: 001010123456789 ki: 00112233445566778899aabbccddeeff label: srsUE-zmq_1 remote_user: jenkins rf_dev_args: auto rf_dev_type: zmq type: srsue [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [resource.py:456] 12:21:29.222077 --- ReservedResources: DBG: {available=1} [resource.py:593] 12:21:29.222619 --- ReservedResources: DBG: {using={_hash='cde994274347e3eb757ad9ea639a0ac40f1fdf33', _reserved_by='4g:srsenb-rftype@zmq+srsue-rftype@zmq-18650-1589192488', addr='10.42.42.116', auth_algo='xor', features=['4g'], imsi='001010123456789', ki='00112233445566778899aabbccddeeff', label='srsUE-zmq_1', remote_user='jenkins', rf_dev_args='auto', rf_dev_type='zmq', type='srsue'}} [resource.py:611] 12:21:29.223518 tst 4g:srsenb-rftype@zmq+srsue-rftype@zmq: DBG: create Modem object {conf={_hash='cde994274347e3eb757ad9ea639a0ac40f1fdf33', _reserved_by='4g:srsenb-rftype@zmq+srsue-rftype@zmq-18650-1589192488', _used=True, addr='10.42.42.116', auth_algo='xor', features=['4g'], imsi='001010123456789', ki='00112233445566778899aabbccddeeff', label='srsUE-zmq_1', remote_user='jenkins', rf_dev_args='auto', rf_dev_type='zmq', type='srsue'}} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq] [suite.py:340] 12:21:29.245707 run srsepc_10.42.42.118: Add subscriber {algo_str='xor', imsi='001010123456789', msisdn='15370', subscriber_id=0} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪srsepc_10.42.42.118] [srs_epc.py:193] 12:21:29.247743 run srsepc_10.42.42.118: Starting srsepc [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪srsepc_10.42.42.118] [srs_epc.py:68] 12:21:29.249651 run srsepc_10.42.42.118: DBG: {config_file='/home/jenkins/workspace/osmo-gsm-tester_manual-run/trial-277/run.2020-05-11_12-21-27/4g:srsenb-rftype@zmq+srsue-rftype@zmq/iperf3_dl.py/srsepc_10.42.42.118/srsepc.conf', db_file='/home/jenkins/workspace/osmo-gsm-tester_manual-run/trial-277/run.2020-05-11_12-21-27/4g:srsenb-rftype@zmq+srsue-rftype@zmq/iperf3_dl.py/srsepc_10.42.42.118/srsepc_user_db.csv'} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪srsepc_10.42.42.118] [srs_epc.py:152] 12:21:29.251449 cnf srsepc_10.42.42.118: DBG: Found config file defaults.conf as /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example/defaults.conf in /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example which is /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪srsepc_10.42.42.118] [config.py:102] 12:21:29.554635 cnf srsepc_10.42.42.118: DBG: Found config file defaults.conf as /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example/defaults.conf in /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example which is /home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪srsepc_10.42.42.118] [config.py:102] 12:21:29.858725 run srsepc_10.42.42.118: DBG: SRSEPC CONFIG: {'epc': {'enable_pcap': False, 'hss': {'subscribers': [{'apn_ipaddr': 'dynamic', 'auth_algo': 'xor', 'id': 0, 'imsi': '001010123456789', 'ki': '00112233445566778899aabbccddeeff', 'msisdn': '15370', 'opc': None, 'qci': '9'}]}, 'mcc': '901', 'mnc': '70', 'qci': '9', 'run_addr': '10.42.42.118', 'type': 'srsepc'}} [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪srsepc_10.42.42.118] [srs_epc.py:167] 12:21:29.884718 cnf Templates: DBG: rendering srsepc.conf.tmpl [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪srsepc_10.42.42.118↪Templates] [template.py:52] 12:21:29.886129 run srsepc_10.42.42.118: DBG: # srsEPC configuration file # MME configuration # # mme_code: 8-bit MME code identifies the MME within a group. # mme_group: 16-bit MME group identifier. # tac: 16-bit Tracking Area Code. # mcc: Mobile Country Code # mnc: Mobile Network Code # apn: Set Access Point Name (APN) # mme_bind_addr: IP bind addr to listen for eNB S1-MME connnections # dns_addr: DNS server address for the UEs # encryption_algo: Preferred encryption algorithm for NAS layer # (default: EEA0, support: EEA1, EEA2) # integrity_algo: Preferred integrity protection algorithm for NAS # (default: EIA1, support: EIA1, EIA2 (EIA0 not support) # paging_timer: Value of paging timer in seconds (T3413) # [mme] mme_code = 0x1a mme_group = 0x0001 tac = 0x0007 mcc = 901 mnc = 70 mme_bind_addr = 10.42.42.118 apn = srsapn dns_addr = 8.8.8.8 encryption_algo = EEA0 integrity_algo = EIA1 paging_timer = 2 # HSS configuration # # db_file: Location of .csv file that stores UEs information. # [hss] db_file = user_db.csv # SP-GW configuration # # gtpu_bind_addr: GTP-U bind address. # sgi_if_addr: SGi TUN interface IP address. # sgi_if_name: SGi TUN interface name. # max_paging_queue: Maximum packets in paging queue (per UE). # [spgw] gtpu_bind_addr = 10.42.42.118 sgi_if_addr = 172.16.0.1 sgi_if_name = srs_spgw_sgi max_paging_queue = 100 # PCAP configuration # # Packets are captured to file in the compact format decoded by # the Wireshark s1ap dissector and with DLT 150. # To use the dissector, edit the preferences for DLT_USER to # add an entry with DLT=150, Payload Protocol=s1ap. # # enable: Enable or disable the PCAP. # filename: File name where to save the PCAP. # [pcap] enable = false filename = /tmp/epc.pcap # Log configuration # # Log levels can be set for individual layers. "all_level" sets log # level for all layers unless otherwise configured. # Format: e.g. s1ap_level = info # # In the same way, packet hex dumps can be limited for each level. # "all_hex_limit" sets the hex limit for all layers unless otherwise # configured. # Format: e.g. s1ap_hex_limit = 32 # # Logging layers: nas, s1ap, mme_gtpc, spgw_gtpc, gtpu, spgw, hss, all # Logging levels: debug, info, warning, error, none # # filename: File path to use for log output. Can be set to stdout # to print logs to standard output [log] all_level = info all_hex_limit = 32 filename = /tmp/epc.log #nas_level = debug #s1ap_level = debug #mme_gtpc_level = debug #spgw_gtpc_level = debug #gtpu_level = debug #spgw_level = debug #hss_level = debug [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪srsepc_10.42.42.118] [srs_epc.py:171] 12:21:29.907306 cnf Templates: DBG: rendering srsepc_user_db.csv.tmpl [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪srsepc_10.42.42.118↪Templates] [template.py:52] 12:21:29.908664 run srsepc_10.42.42.118: DBG: # # .csv to store UE's information in HSS # Kept in the following format: "Name,Auth,IMSI,Key,OP_Type,OP,AMF,SQN,QCI,IP_alloc" # # Name: Human readable name to help distinguish UE's. Ignored by the HSS # IMSI: UE's IMSI value # Auth: Authentication algorithm used by the UE. Valid algorithms are XOR # (xor) and MILENAGE (mil) # Key: UE's key, where other keys are derived from. Stored in hexadecimal # OP_Type: Operator's code type, either OP or OPc # OP/OPc: Operator Code/Cyphered Operator Code, stored in hexadecimal # AMF: Authentication management field, stored in hexadecimal # SQN: UE's Sequence number for freshness of the authentication # QCI: QoS Class Identifier for the UE's default bearer. # IP_alloc: IP allocation stratagy for the SPGW. # With 'dynamic' the SPGW will automatically allocate IPs # With a valid IPv4 (e.g. '172.16.0.2') the UE will have a statically assigned IP. # # Note: Lines starting by '#' are ignored and will be overwritten #ue2,mil,001010123456780,00112233445566778899aabbccddeeff,opc,63bfa50ee6523365ff14c1f45f88737d,8000,000000001234,7,dynamic #ue1,xor,001010123456789,00112233445566778899aabbccddeeff,opc,63bfa50ee6523365ff14c1f45f88737d,9001,000000001255,7,dynamic ogt0,xor,001010123456789,00112233445566778899aabbccddeeff,opc,63bfa50ee6523365ff14c1f45f88737d,8000,000000001234,9,dynamic [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪srsepc_10.42.42.118] [srs_epc.py:175] 12:21:29.909638 tst trial-277: DBG: {bin_name='srslte', matches=[]} [trial.py:142] 12:21:29.918839 tst iperf3_dl.py:24: ERR: RuntimeError: No such binary available: 'srslte' [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪iperf3_dl.py:24] [trial.py:156: raise RuntimeError('No such binary available: %r' % bin_name)] 12:21:29.923834 tst iperf3_dl.py:24: TRACEBACK: Traceback (most recent call last): File "/home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/src/osmo_gsm_tester/test.py", line 64, in run self.path) File "/home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/src/osmo_gsm_tester/util.py", line 367, in run_python_file spec.loader.exec_module( importlib.util.module_from_spec(spec) ) File "", line 673, in exec_module File "", line 222, in _call_with_frames_removed File "/home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/example/suites/4g/iperf3_dl.py", line 24, in epc.start() File "/home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/src/osmo_gsm_tester/srs_epc.py", line 74, in start self.start_remotely() File "/home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/src/osmo_gsm_tester/srs_epc.py", line 77, in start_remotely self.inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('srslte'))) File "/home/jenkins/workspace/osmo-gsm-tester_manual-run/osmo-gsm-tester/src/osmo_gsm_tester/trial.py", line 156, in get_inst raise RuntimeError('No such binary available: %r' % bin_name) RuntimeError: No such binary available: 'srslte' [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪iperf3_dl.py:24] [test.py:110] 12:21:29.928127 tst iperf3_dl.py:24: Test FAILED (1.1 sec) [trial-277↪4g:srsenb-rftype@zmq+srsue-rftype@zmq↪iperf3_dl.py:24] [test.py:111] --------------------------------------------------------------------- trial-277 4g:srsenb-rftype@zmq+srsue-rftype@zmq FAIL --------------------------------------------------------------------- 12:21:30.036501 tst trial-277: Storing JUnit report in /home/jenkins/workspace/osmo-gsm-tester_manual-run/trial-277/run.2020-05-11_12-21-27/trial-277.xml [trial.py:203] -------------------------------------------------------------------------------------------- trial-277 FAIL -------------------------------------------------------------------------------------------- 12:21:30.085027 tst trial-277: trial-277: FAIL, 1 suites failed FAIL: 4g:srsenb-rftype@zmq+srsue-rftype@zmq (fail: 1, skip: 2) FAIL: iperf3_dl.py (1.1 sec) RuntimeError: No such binary available: 'srslte' skip: iperf3_ul.py skip: ping.py [trial.py:208]