<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>OSMO_GSM_TESTER_BRANCH</name><value>refs/heads/master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>OSMO_GSM_TESTER_OPTS</name><value>-s sms:sysmo -T -l dbg</value></parameter></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Pau Espin Pedrol</shortDescription><userId>pespin</userId><userName>Pau Espin Pedrol</userName></cause></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginpespingprs _class='hudson.plugins.git.util.Build'><buildNumber>97</buildNumber><marked><SHA1>b06e7d39bd92d5ece4cd841a6b0a1378109f324e</SHA1><branch><SHA1>b06e7d39bd92d5ece4cd841a6b0a1378109f324e</SHA1><name>refs/remotes/origin/pespin/gprs</name></branch></marked><revision><SHA1>b06e7d39bd92d5ece4cd841a6b0a1378109f324e</SHA1><branch><SHA1>b06e7d39bd92d5ece4cd841a6b0a1378109f324e</SHA1><name>refs/remotes/origin/pespin/gprs</name></branch></revision></refsremotesoriginpespingprs><refsremotesoriginpespincall-signals2 _class='hudson.plugins.git.util.Build'><buildNumber>227</buildNumber><marked><SHA1>ee828ee19e8027f7dd49fa8d9b710314ccfdb83a</SHA1><branch><SHA1>ee828ee19e8027f7dd49fa8d9b710314ccfdb83a</SHA1><name>refs/remotes/origin/pespin/call-signals2</name></branch></marked><revision><SHA1>ee828ee19e8027f7dd49fa8d9b710314ccfdb83a</SHA1><branch><SHA1>ee828ee19e8027f7dd49fa8d9b710314ccfdb83a</SHA1><name>refs/remotes/origin/pespin/call-signals2</name></branch></revision></refsremotesoriginpespincall-signals2><refsremotesoriginzeckedebug _class='hudson.plugins.git.util.Build'><buildNumber>197</buildNumber><marked><SHA1>34ec5ddf7b77c27e7fe53283f3ccea599dd8a20c</SHA1><branch><SHA1>34ec5ddf7b77c27e7fe53283f3ccea599dd8a20c</SHA1><name>refs/remotes/origin/zecke/debug</name></branch></marked><revision><SHA1>34ec5ddf7b77c27e7fe53283f3ccea599dd8a20c</SHA1><branch><SHA1>34ec5ddf7b77c27e7fe53283f3ccea599dd8a20c</SHA1><name>refs/remotes/origin/zecke/debug</name></branch></revision></refsremotesoriginzeckedebug><refsremotesoriginpespintmp _class='hudson.plugins.git.util.Build'><buildNumber>275</buildNumber><marked><SHA1>bd552f9786272d44163d53b8cfa31355de15db2f</SHA1><branch><SHA1>bd552f9786272d44163d53b8cfa31355de15db2f</SHA1><name>refs/remotes/origin/pespin/tmp</name></branch></marked><revision><SHA1>bd552f9786272d44163d53b8cfa31355de15db2f</SHA1><branch><SHA1>bd552f9786272d44163d53b8cfa31355de15db2f</SHA1><name>refs/remotes/origin/pespin/tmp</name></branch></revision></refsremotesoriginpespintmp><refsremotesoriginpespin2g _class='hudson.plugins.git.util.Build'><buildNumber>277</buildNumber><marked><SHA1>199b6f44eb58eca36f8335e3c8fe453cd0bc224e</SHA1><branch><SHA1>199b6f44eb58eca36f8335e3c8fe453cd0bc224e</SHA1><name>refs/remotes/origin/pespin/2g</name></branch></marked><revision><SHA1>199b6f44eb58eca36f8335e3c8fe453cd0bc224e</SHA1><branch><SHA1>199b6f44eb58eca36f8335e3c8fe453cd0bc224e</SHA1><name>refs/remotes/origin/pespin/2g</name></branch></revision></refsremotesoriginpespin2g><refsremotesoriginpespinsmart-socket _class='hudson.plugins.git.util.Build'><buildNumber>238</buildNumber><marked><SHA1>3f2712eaf96fef592f14a758b2c9ac655ff0ef28</SHA1><branch><SHA1>3f2712eaf96fef592f14a758b2c9ac655ff0ef28</SHA1><name>refs/remotes/origin/pespin/smart-socket</name></branch></marked><revision><SHA1>3f2712eaf96fef592f14a758b2c9ac655ff0ef28</SHA1><branch><SHA1>3f2712eaf96fef592f14a758b2c9ac655ff0ef28</SHA1><name>refs/remotes/origin/pespin/smart-socket</name></branch></revision></refsremotesoriginpespinsmart-socket><refsremotesoriginpespinoc2g _class='hudson.plugins.git.util.Build'><buildNumber>234</buildNumber><marked><SHA1>9e2ef07e04176c6709b60d8a72ab799610359fd3</SHA1><branch><SHA1>9e2ef07e04176c6709b60d8a72ab799610359fd3</SHA1><name>refs/remotes/origin/pespin/oc2g</name></branch></marked><revision><SHA1>9e2ef07e04176c6709b60d8a72ab799610359fd3</SHA1><branch><SHA1>9e2ef07e04176c6709b60d8a72ab799610359fd3</SHA1><name>refs/remotes/origin/pespin/oc2g</name></branch></revision></refsremotesoriginpespinoc2g><refsremotesoriginpespinsdcch8 _class='hudson.plugins.git.util.Build'><buildNumber>165</buildNumber><marked><SHA1>3fa41541e29ed9743b7aebc7d2dd6d035fba57fb</SHA1><branch><SHA1>3fa41541e29ed9743b7aebc7d2dd6d035fba57fb</SHA1><name>refs/remotes/origin/pespin/sdcch8</name></branch></marked><revision><SHA1>3fa41541e29ed9743b7aebc7d2dd6d035fba57fb</SHA1><branch><SHA1>3fa41541e29ed9743b7aebc7d2dd6d035fba57fb</SHA1><name>refs/remotes/origin/pespin/sdcch8</name></branch></revision></refsremotesoriginpespinsdcch8><refsremotesoriginpespintrx _class='hudson.plugins.git.util.Build'><buildNumber>250</buildNumber><marked><SHA1>82b3075152cc6a857ca987aa8fcc0b15e1435339</SHA1><branch><SHA1>82b3075152cc6a857ca987aa8fcc0b15e1435339</SHA1><name>refs/remotes/origin/pespin/trx</name></branch></marked><revision><SHA1>82b3075152cc6a857ca987aa8fcc0b15e1435339</SHA1><branch><SHA1>82b3075152cc6a857ca987aa8fcc0b15e1435339</SHA1><name>refs/remotes/origin/pespin/trx</name></branch></revision></refsremotesoriginpespintrx><refsremotesoriginpespinmaster _class='hudson.plugins.git.util.Build'><buildNumber>158</buildNumber><marked><SHA1>cef9c0dee8465605ba9aefcd42885006f91c3f39</SHA1><branch><SHA1>cef9c0dee8465605ba9aefcd42885006f91c3f39</SHA1><name>refs/remotes/origin/pespin/master</name></branch></marked><revision><SHA1>cef9c0dee8465605ba9aefcd42885006f91c3f39</SHA1><branch><SHA1>cef9c0dee8465605ba9aefcd42885006f91c3f39</SHA1><name>refs/remotes/origin/pespin/master</name></branch></revision></refsremotesoriginpespinmaster><refsremotesoriginpespincall-signals _class='hudson.plugins.git.util.Build'><buildNumber>223</buildNumber><marked><SHA1>76e25665f1c2ed0d3ae73fd32f3953ad204f8e9d</SHA1><branch><SHA1>76e25665f1c2ed0d3ae73fd32f3953ad204f8e9d</SHA1><name>refs/remotes/origin/pespin/call-signals</name></branch></marked><revision><SHA1>76e25665f1c2ed0d3ae73fd32f3953ad204f8e9d</SHA1><branch><SHA1>76e25665f1c2ed0d3ae73fd32f3953ad204f8e9d</SHA1><name>refs/remotes/origin/pespin/call-signals</name></branch></revision></refsremotesoriginpespincall-signals><refsremotesoriginpespinquadmodem _class='hudson.plugins.git.util.Build'><buildNumber>179</buildNumber><marked><SHA1>0795679045e8d34403a78f0f1747dc9beda5d4c7</SHA1><branch><SHA1>0795679045e8d34403a78f0f1747dc9beda5d4c7</SHA1><name>refs/remotes/origin/pespin/quadmodem</name></branch></marked><revision><SHA1>0795679045e8d34403a78f0f1747dc9beda5d4c7</SHA1><branch><SHA1>0795679045e8d34403a78f0f1747dc9beda5d4c7</SHA1><name>refs/remotes/origin/pespin/quadmodem</name></branch></revision></refsremotesoriginpespinquadmodem><refsremotesoriginpespinumtrx _class='hudson.plugins.git.util.Build'><buildNumber>177</buildNumber><marked><SHA1>20995fd89ccf811fde2b36500fa054b463fa4679</SHA1><branch><SHA1>20995fd89ccf811fde2b36500fa054b463fa4679</SHA1><name>refs/remotes/origin/pespin/umtrx</name></branch></marked><revision><SHA1>20995fd89ccf811fde2b36500fa054b463fa4679</SHA1><branch><SHA1>20995fd89ccf811fde2b36500fa054b463fa4679</SHA1><name>refs/remotes/origin/pespin/umtrx</name></branch></revision></refsremotesoriginpespinumtrx><refsremotesoriginpespinoct _class='hudson.plugins.git.util.Build'><buildNumber>94</buildNumber><marked><SHA1>b75b710b40efdc0ebc1548c8f47ead85f34d3756</SHA1><branch><SHA1>b75b710b40efdc0ebc1548c8f47ead85f34d3756</SHA1><name>refs/remotes/origin/pespin/oct</name></branch></marked><revision><SHA1>b75b710b40efdc0ebc1548c8f47ead85f34d3756</SHA1><branch><SHA1>b75b710b40efdc0ebc1548c8f47ead85f34d3756</SHA1><name>refs/remotes/origin/pespin/oct</name></branch></revision></refsremotesoriginpespinoct><refsremotesoriginpespinfix-sudo _class='hudson.plugins.git.util.Build'><buildNumber>237</buildNumber><marked><SHA1>89739954026f6c2cc412111d82b8a624ebb94d98</SHA1><branch><SHA1>89739954026f6c2cc412111d82b8a624ebb94d98</SHA1><name>refs/remotes/origin/pespin/fix-sudo</name></branch></marked><revision><SHA1>89739954026f6c2cc412111d82b8a624ebb94d98</SHA1><branch><SHA1>89739954026f6c2cc412111d82b8a624ebb94d98</SHA1><name>refs/remotes/origin/pespin/fix-sudo</name></branch></revision></refsremotesoriginpespinfix-sudo><refsremotesoriginpespinmodifiers _class='hudson.plugins.git.util.Build'><buildNumber>150</buildNumber><marked><SHA1>8d3159cdb310498e7d36555d389e6dffcaeafcb0</SHA1><branch><SHA1>8d3159cdb310498e7d36555d389e6dffcaeafcb0</SHA1><name>refs/remotes/origin/pespin/modifiers</name></branch></marked><revision><SHA1>8d3159cdb310498e7d36555d389e6dffcaeafcb0</SHA1><branch><SHA1>8d3159cdb310498e7d36555d389e6dffcaeafcb0</SHA1><name>refs/remotes/origin/pespin/modifiers</name></branch></revision></refsremotesoriginpespinmodifiers><refsremotesoriginpespinremote-trx _class='hudson.plugins.git.util.Build'><buildNumber>156</buildNumber><marked><SHA1>1ff03766be8d48b7e84656544d64111466327271</SHA1><branch><SHA1>1ff03766be8d48b7e84656544d64111466327271</SHA1><name>refs/remotes/origin/pespin/remote-trx</name></branch></marked><revision><SHA1>1ff03766be8d48b7e84656544d64111466327271</SHA1><branch><SHA1>1ff03766be8d48b7e84656544d64111466327271</SHA1><name>refs/remotes/origin/pespin/remote-trx</name></branch></revision></refsremotesoriginpespinremote-trx><refsremotesoriginpespinsc5 _class='hudson.plugins.git.util.Build'><buildNumber>249</buildNumber><marked><SHA1>b1267d2af5f1a41906aa1aacd8b339a3110041bb</SHA1><branch><SHA1>b1267d2af5f1a41906aa1aacd8b339a3110041bb</SHA1><name>refs/remotes/origin/pespin/sc5</name></branch></marked><revision><SHA1>b1267d2af5f1a41906aa1aacd8b339a3110041bb</SHA1><branch><SHA1>b1267d2af5f1a41906aa1aacd8b339a3110041bb</SHA1><name>refs/remotes/origin/pespin/sc5</name></branch></revision></refsremotesoriginpespinsc5><refsremotesoriginpespinnanobts-multitrx _class='hudson.plugins.git.util.Build'><buildNumber>124</buildNumber><marked><SHA1>f6a07122823f8a0b01b40705d103199277925169</SHA1><branch><SHA1>f6a07122823f8a0b01b40705d103199277925169</SHA1><name>refs/remotes/origin/pespin/nanobts-multitrx</name></branch></marked><revision><SHA1>f6a07122823f8a0b01b40705d103199277925169</SHA1><branch><SHA1>f6a07122823f8a0b01b40705d103199277925169</SHA1><name>refs/remotes/origin/pespin/nanobts-multitrx</name></branch></revision></refsremotesoriginpespinnanobts-multitrx><refsremotesoriginpespinfixes _class='hudson.plugins.git.util.Build'><buildNumber>281</buildNumber><marked><SHA1>b1d8d30526e49a4f2c8d89c0b35b78d2625a9145</SHA1><branch><SHA1>b1d8d30526e49a4f2c8d89c0b35b78d2625a9145</SHA1><name>refs/remotes/origin/pespin/fixes</name></branch></marked><revision><SHA1>b1d8d30526e49a4f2c8d89c0b35b78d2625a9145</SHA1><branch><SHA1>b1d8d30526e49a4f2c8d89c0b35b78d2625a9145</SHA1><name>refs/remotes/origin/pespin/fixes</name></branch></revision></refsremotesoriginpespinfixes><refsremotesoriginpespinlime _class='hudson.plugins.git.util.Build'><buildNumber>228</buildNumber><marked><SHA1>8910fbb9a865df54c87caa632805a68c4c9ca15b</SHA1><branch><SHA1>8910fbb9a865df54c87caa632805a68c4c9ca15b</SHA1><name>refs/remotes/origin/pespin/lime</name></branch></marked><revision><SHA1>8910fbb9a865df54c87caa632805a68c4c9ca15b</SHA1><branch><SHA1>8910fbb9a865df54c87caa632805a68c4c9ca15b</SHA1><name>refs/remotes/origin/pespin/lime</name></branch></revision></refsremotesoriginpespinlime><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>284</buildNumber><marked><SHA1>fbb8611381c6572a282aeb785c5c48cb4cb16a04</SHA1><branch><SHA1>fbb8611381c6572a282aeb785c5c48cb4cb16a04</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>fbb8611381c6572a282aeb785c5c48cb4cb16a04</SHA1><branch><SHA1>fbb8611381c6572a282aeb785c5c48cb4cb16a04</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>fbb8611381c6572a282aeb785c5c48cb4cb16a04</SHA1><branch><SHA1>fbb8611381c6572a282aeb785c5c48cb4cb16a04</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-gsm-tester</remoteUrl><scmName></scmName></action><action _class='hudson.plugins.git.GitTagAction'></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>1</failCount><skipCount>0</skipCount><totalCount>1</totalCount><urlName>testReport</urlName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>trial-284-bin.tgz</displayPath><fileName>trial-284-bin.tgz</fileName><relativePath>trial-284-bin.tgz</relativePath></artifact><artifact><displayPath>trial-284-run.tgz</displayPath><fileName>trial-284-run.tgz</fileName><relativePath>trial-284-run.tgz</relativePath></artifact><building>false</building><displayName>#284</displayName><duration>482969</duration><estimatedDuration>262130</estimatedDuration><fullDisplayName>osmo-gsm-tester_manual-run #284</fullDisplayName><id>284</id><inProgress>false</inProgress><keepLog>false</keepLog><number>284</number><queueId>298227</queueId><result>FAILURE</result><timestamp>1603285903748</timestamp><url>https://jenkins.osmocom.org/jenkins/job/osmo-gsm-tester_manual-run/284/</url><builtOn>osmo-gsm-tester-prod</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>sysmocom/scenarios/mod-enb-cells-2ca.conf</affectedPath><commitId>6628a50e4eb772ffb6002ea469663672e1d86091</commitId><timestamp>1602678680000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/andre</absoluteUrl><fullName>andre</fullName></author><authorEmail>andre@softwareradiosystems.com</authorEmail><comment>enb-cells-2ca: fix config to match cell-id and cc idx

add comment explaining how the sceneario can be used.
also adopt cell IDs to match the CC index of the eNB.
This makes sure the cell_gain command of srsENB works with the config.

Change-Id: I1d14485df700ef3ba9220507f72c50b819d5e334
</comment><date>2020-10-14 14:31:20 +0200</date><id>6628a50e4eb772ffb6002ea469663672e1d86091</id><msg>enb-cells-2ca: fix config to match cell-id and cc idx</msg><path><editType>edit</editType><file>sysmocom/scenarios/mod-enb-cells-2ca.conf</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_gsm_tester/obj/ms_amarisoft.py</affectedPath><affectedPath>src/osmo_gsm_tester/core/resource.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/enb.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/ms_srs.py</affectedPath><commitId>92a29d6b7ebfb69ae7c41000ae8e3ef309346099</commitId><timestamp>1602763021000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>enb/ue: Assign zmq binding ports dynamically at runtime

ports are assigned increasingly in blocks in the range 2000-2200.

Change-Id: If2abddeb2ad6819de4f3ce64daaf00d2f527f9d2
</comment><date>2020-10-15 11:57:01 +0000</date><id>92a29d6b7ebfb69ae7c41000ae8e3ef309346099</id><msg>enb/ue: Assign zmq binding ports dynamically at runtime</msg><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms_amarisoft.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/core/resource.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/enb.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms_srs.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>sysmocom/suites/nitb_ussd/assert_extension.py</affectedPath><affectedPath>sysmocom/suites/nitb_debug/interactive.py</affectedPath><affectedPath>sysmocom/suites/ussd/assert_extension.py</affectedPath><affectedPath>sysmocom/suites/nitb_smpp/esme_ms_sms_transaction.py</affectedPath><affectedPath>sysmocom/suites/debug/interactive.py</affectedPath><affectedPath>sysmocom/suites/smpp/esme_ms_sms_transaction.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/ms.py</affectedPath><affectedPath>sysmocom/suites/encryption/lib/testlib.py</affectedPath><affectedPath>sysmocom/suites/nitb_smpp/esme_ms_sms_storeforward.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/ms_ofono.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/hlr_osmo.py</affectedPath><affectedPath>sysmocom/suites/smpp/esme_ms_sms_storeforward.py</affectedPath><commitId>4b7c585561ef567a7a3bc6bae67d69d4b829edc2</commitId><timestamp>1602763287000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>ms: Fix and use ms msisdn() getter

The getter method was named the same as the itnernal field, and hence
when used it would fail since the intenral field would be sleect and
fail to be called.

Change-Id: I2f631eb6256eb0e065f41d5b7531395c4a054cd8
</comment><date>2020-10-15 14:01:27 +0200</date><id>4b7c585561ef567a7a3bc6bae67d69d4b829edc2</id><msg>ms: Fix and use ms msisdn() getter</msg><path><editType>edit</editType><file>sysmocom/suites/encryption/lib/testlib.py</file></path><path><editType>edit</editType><file>sysmocom/suites/nitb_smpp/esme_ms_sms_transaction.py</file></path><path><editType>edit</editType><file>sysmocom/suites/debug/interactive.py</file></path><path><editType>edit</editType><file>sysmocom/suites/ussd/assert_extension.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/hlr_osmo.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms.py</file></path><path><editType>edit</editType><file>sysmocom/suites/nitb_smpp/esme_ms_sms_storeforward.py</file></path><path><editType>edit</editType><file>sysmocom/suites/nitb_ussd/assert_extension.py</file></path><path><editType>edit</editType><file>sysmocom/suites/smpp/esme_ms_sms_transaction.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms_ofono.py</file></path><path><editType>edit</editType><file>sysmocom/suites/nitb_debug/interactive.py</file></path><path><editType>edit</editType><file>sysmocom/suites/smpp/esme_ms_sms_storeforward.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_gsm_tester/obj/enb_srs.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/enb_amarisoft.py</affectedPath><affectedPath>utils/bin/osmo-gsm-tester_zmq_broker.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/rfemu_gnuradio_zmq.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/enb.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/rfemu.py</affectedPath><affectedPath>sysmocom/scenarios/mod-enb-cells-2ca.conf</affectedPath><affectedPath>src/osmo_gsm_tester/obj/ms_srs.py</affectedPath><commitId>410912333e058910df237598847d7b3d8fe84cae</commitId><timestamp>1602765276000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>4g: Introduce ZMQ GnuRadio stream broker

srsENB currently creates 1 zmq stream (1 tx, 1 rx) for each cell (2 if
MIMO is enabled). Each cell transceives on a given EARFCN (and several
cells can transmit on same EARFCN).

However, for handover test purposes, we want to join all cells operating
on the same EARFCN to transceive on the same ZMQ conn, so that an srsUE
can interact with them at the same time (same as if the medium was shared).
Furthermore, we want to set different gains on each of those paths
before merging them in order to emulate RF conditions like handover.

In order to do so, a new element called the Broker is introduced, which
is placed in between ENBs and UEs ZMQ conenctions, multiplexing the
connections on the ENB side towards the UE side.

A separate process for the broker is run remotely (ENB run host) which
listens on a ctrl socket for commands. An internal Broker class is used
in osmo-gsm-tester to interact with the remote script, for instance to
configure the ports, start and stop the remote process, send commands to
it, etc.
On each ENB, when the rfemu "gnuradio_zmq" rfemu implementation is selected
in configuration, it will configure its zmq connections and the UE ones to
go over the Broker.

As a result, that means the UE zmq port configuration is expected to be
different than when no broker is in used, since there's the multiplexing
per EARFCN in between.

In this commit, only 1 ENB is supported, but multi-enb support is
planned in the future.

The handover test passes in the docker setup with this config:
"""
OSMO_GSM_TESTER_OPTS="-T -l dbg -s 4g:srsue-rftype@zmq+srsenb-rftype@zmq+" \
	"mod-enb-nprb@6+mod-enb-ncells@2+mod-enb-cells-2ca+suite-4g@10,2+" \
	"mod-enb-meas-enable -t =handover.py"
"""

and in resources.conf (or scenario), added:
"""
enb:
  ...
  cell_list:
    - dl_rfemu:
       type: gnuradio_zmq
    - dl_rfemu:
        type: gnuradio_zmq
"""

Note that since the broker is used, there's not need for mod-srsue-ncarriers@2
since the broker is joining the 2 enb cells into 1 stream on the UE side.

Change-Id: I6282cda400558dcb356276786d91e6388524c5b1
</comment><date>2020-10-15 12:34:36 +0000</date><id>410912333e058910df237598847d7b3d8fe84cae</id><msg>4g: Introduce ZMQ GnuRadio stream broker</msg><path><editType>add</editType><file>src/osmo_gsm_tester/obj/rfemu_gnuradio_zmq.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/enb_amarisoft.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms_srs.py</file></path><path><editType>add</editType><file>utils/bin/osmo-gsm-tester_zmq_broker.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/enb.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/enb_srs.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/rfemu.py</file></path><path><editType>edit</editType><file>sysmocom/scenarios/mod-enb-cells-2ca.conf</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_gsm_tester/obj/epc_amarisoft.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/nitb_osmo.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/ms_amarisoft.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/epc_srs.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/ms_srs.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/ms.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/ms_ofono.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/ms_osmo_mobile.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/hlr_osmo.py</affectedPath><commitId>83a2fdca9b8d2e256c1ae5a84b7dde5a13d0f2da</commitId><timestamp>1602777048000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>ms: Allocate default msisdn internally

Don't wait until adding it to the subscriber data base, since the msisdn
may be needed beforehand (for instance in follow up patch to be passed
to osmo-msc configuration to route emergency calls).

Change-Id: I0d6902687e4beb3d6cdcefd4e343f21496100504
</comment><date>2020-10-15 15:50:48 +0000</date><id>83a2fdca9b8d2e256c1ae5a84b7dde5a13d0f2da</id><msg>ms: Allocate default msisdn internally</msg><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/epc_amarisoft.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/nitb_osmo.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms_osmo_mobile.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/hlr_osmo.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms_ofono.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms_srs.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms_amarisoft.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/epc_srs.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>sysmocom/suites/emergency/emergency_mo_mt_call.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/msc_osmo.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/bts.py</affectedPath><affectedPath>src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl</affectedPath><affectedPath>src/osmo_gsm_tester/obj/ms.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/ms_ofono.py</affectedPath><affectedPath>src/osmo_gsm_tester/templates/osmo-msc.cfg.tmpl</affectedPath><affectedPath>sysmocom/suites/emergency/suite.conf</affectedPath><commitId>680ba0303877006e59e81b92abb689ac78f14594</commitId><timestamp>1602777048000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>sysmocom: Introduce suite to test emergency calls

Change-Id: I2e851c94311ded0abd4ff072b8cc72316d972750
</comment><date>2020-10-15 15:50:48 +0000</date><id>680ba0303877006e59e81b92abb689ac78f14594</id><msg>sysmocom: Introduce suite to test emergency calls</msg><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/msc_osmo.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/ms_ofono.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/templates/osmo-msc.cfg.tmpl</file></path><path><editType>add</editType><file>sysmocom/suites/emergency/emergency_mo_mt_call.py</file></path><path><editType>add</editType><file>sysmocom/suites/emergency/suite.conf</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/bts.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>sysmocom/default-suites.conf</affectedPath><commitId>3329d9db0ae9022758bd3552b851f94735920b18</commitId><timestamp>1602777048000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>sysmocom: Enable emergency call testing in default-suites.conf

Change-Id: I9524ed9bc4f2d5f8e29313565400e90c64820988
</comment><date>2020-10-15 15:50:48 +0000</date><id>3329d9db0ae9022758bd3552b851f94735920b18</id><msg>sysmocom: Enable emergency call testing in default-suites.conf</msg><path><editType>edit</editType><file>sysmocom/default-suites.conf</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>sysmocom/suites/emergency/suite.conf</affectedPath><affectedPath>sysmocom/suites/emergency/emergency_preemptive_call.py</affectedPath><commitId>66c054288b44431c6056c6ca59a7f5dd4d2611a6</commitId><timestamp>1602781347000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>sysmocom: Introduce test to verify emergency call preemption

Change-Id: I59993e65b3fd34fb2c3e5b002ab9666db9b7bad5
</comment><date>2020-10-15 19:02:27 +0200</date><id>66c054288b44431c6056c6ca59a7f5dd4d2611a6</id><msg>sysmocom: Introduce test to verify emergency call preemption</msg><path><editType>edit</editType><file>sysmocom/suites/emergency/suite.conf</file></path><path><editType>add</editType><file>sysmocom/suites/emergency/emergency_preemptive_call.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_gsm_tester/obj/enb.py</affectedPath><affectedPath>sysmocom/scenarios/mod-enb-tdd.conf</affectedPath><affectedPath>src/osmo_gsm_tester/obj/enb_amarisoft.py</affectedPath><affectedPath>src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl</affectedPath><affectedPath>sysmocom/defaults.conf</affectedPath><commitId>d0682bad0ff8ea61ca00aa212e4967fe1e187fd5</commitId><timestamp>1602857856000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>enb: add basic TDD config option

this patch adds the basic notion of FDD and TDD duplexing modes
to the eNB object. So far we've always assume FDD.

Since only Amarisoft eNB supports TDD, the required config
template changes, etc. are only applied there.

The patch also adds a scenario to enable the default TDD config.

Change-Id: I37216b5bfdf527d221913283b6c41d3c8fd6b500
</comment><date>2020-10-16 14:17:36 +0000</date><id>d0682bad0ff8ea61ca00aa212e4967fe1e187fd5</id><msg>enb: add basic TDD config option</msg><path><editType>add</editType><file>sysmocom/scenarios/mod-enb-tdd.conf</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/enb.py</file></path><path><editType>edit</editType><file>sysmocom/defaults.conf</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/enb_amarisoft.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>sysmocom/scenarios/mod-enb-cells-2ca.conf</affectedPath><commitId>27b603f7e26421e88c6476e0135feed1c5465829</commitId><timestamp>1602857856000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>mod-enb-cell-2ca: fix EARFCN

this scenario for 2xCA needs to have both cells on different EARFCN

Change-Id: I3cd12da5453aa659839862775e23d4a308b92c8e
</comment><date>2020-10-16 14:17:36 +0000</date><id>27b603f7e26421e88c6476e0135feed1c5465829</id><msg>mod-enb-cell-2ca: fix EARFCN</msg><path><editType>edit</editType><file>sysmocom/scenarios/mod-enb-cells-2ca.conf</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_gsm_tester/obj/rfemu_gnuradio_zmq.py</affectedPath><commitId>d5579fa38e91714d8ad49d7222bec665f46cc4c1</commitId><timestamp>1602857856000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>rfemu_gnuradio_zmq: fix amplitude conversion

fix dB to amplitude conversion and adjust max attenuation value

Change-Id: I5a94d5d31e7dc85ab37bd281f95374ad825a41ff
</comment><date>2020-10-16 14:17:36 +0000</date><id>d5579fa38e91714d8ad49d7222bec665f46cc4c1</id><msg>rfemu_gnuradio_zmq: fix amplitude conversion</msg><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/rfemu_gnuradio_zmq.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>sysmocom/scenarios/mod-gr-broker.conf</affectedPath><commitId>caa680ceeb1048f5c51affbe2937f6872c8b4cf8</commitId><timestamp>1602857856000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>mod-gr-broker: add scenario to easily enable the GR broker

Change-Id: I4397e26713778721b7138b03b7a5f8f63f780d44
</comment><date>2020-10-16 14:17:36 +0000</date><id>caa680ceeb1048f5c51affbe2937f6872c8b4cf8</id><msg>mod-gr-broker: add scenario to easily enable the GR broker</msg><path><editType>add</editType><file>sysmocom/scenarios/mod-gr-broker.conf</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>sysmocom/scenarios/mod-enb-cells-intra-freq-ho-sameport.conf</affectedPath><affectedPath>sysmocom/scenarios/mod-enb-cells-intra-freq-ho.conf</affectedPath><commitId>c230efcb19b88bdaf2fb44d87075c60d69e5dacc</commitId><timestamp>1602857856000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>intra-freq-ho{-sameport}.conf: add scenarios for intra-freq HO cells

we need to use two different configs for Amarisoft and srsENB.
Amarisoft combines the two cells and transmits them on the same
RF port, whereas srsENB sends them on a single port each.

Change-Id: I3a2a8ae7bf4ed2dab6efba8550f442a741ad92e0
</comment><date>2020-10-16 14:17:36 +0000</date><id>c230efcb19b88bdaf2fb44d87075c60d69e5dacc</id><msg>intra-freq-ho{-sameport}.conf: add scenarios for intra-freq HO cells</msg><path><editType>add</editType><file>sysmocom/scenarios/mod-enb-cells-intra-freq-ho.conf</file></path><path><editType>add</editType><file>sysmocom/scenarios/mod-enb-cells-intra-freq-ho-sameport.conf</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo_gsm_tester/obj/enb.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/rfemu_gnuradio_zmq.py</affectedPath><affectedPath>src/osmo_gsm_tester/obj/gnuradio_zmq_broker.py</affectedPath><commitId>fbb8611381c6572a282aeb785c5c48cb4cb16a04</commitId><timestamp>1602865438000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></author><authorEmail>pespin@sysmocom.de</authorEmail><comment>gnuradio zmq broker refactoring

First step towards support everal ENBs and installing the remote script
at runtime:

* The gnuradio broker class is moved to its own file, to decouple it
  from RFemu.
* The ENBs are registered earlier in the test so that the GrBroker knows
  when to start (delay start + setup until all ENBs have been configured).
* Handle ENBs internally as a list.

Change-Id: I4f1095bbc7ed0a816fe47caef44f7becadd9d737
</comment><date>2020-10-16 18:23:58 +0200</date><id>fbb8611381c6572a282aeb785c5c48cb4cb16a04</id><msg>gnuradio zmq broker refactoring</msg><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/enb.py</file></path><path><editType>add</editType><file>src/osmo_gsm_tester/obj/gnuradio_zmq_broker.py</file></path><path><editType>edit</editType><file>src/osmo_gsm_tester/obj/rfemu_gnuradio_zmq.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pespin</absoluteUrl><fullName>Pau Espin Pedrol</fullName></culprit><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/andre</absoluteUrl><fullName>andre</fullName></culprit></freeStyleBuild>