Commit Graph

852 Commits

Author SHA1 Message Date
Pau Espin 81aaeefb7b cosmetic: bts_sysmo: Sort members according to scope
Change-Id: Ifc19b34660cc8d20b8db2dcf245eeb2173cd7a6a
2017-12-14 19:18:58 +01:00
Pau Espin 2e54295bbf cosmetic: bts_osmotrx: Sort members according to scope
Change-Id: I2a0771331a98b377a79aa0770c753d04a1e88db1
2017-12-14 19:18:58 +01:00
Pau Espin 4b475be9d8 cosmetic: bts_octphy: Sort members according to scope
Change-Id: I42c19bf6f5a2f9d13d60e6ce8f1bbc1cad159b4b
2017-12-14 19:18:57 +01:00
Pau Espin c9817a50ff Create bts abstract classes to avoid code duplication and ease development
A lot of code can be shared by all osmocom related BTS we currently use
(sysmo, octphy, trx). This commits moves all this easily shareable code
to an abstract class OsmoBts which all (osmocom) BTS use.

Some bits of code do not apply for osmo-bts-sysmo but it's still shared
by BTS running in the main unit (octphy, trx), for instance the pcu
socket handling. Those are put together in OsmoBtsMainUnit.

This way we have:
log.Origin<-OsmoBts<-OsmoBtsMainUnit<-OsmoBtsOctphy
log.Origin<-OsmoBts<-OsmoBtsMainUnit<-OsmoBtsTrx
log.Origin<-OsmoBts<-OsmoBtsSysmo

Also take the chance to categorize the different APIs in the new
abstract class based on their use and scope.

Some code changes while moving which were required:
- A new protected abstract API "create_pcu", which returns an object of
"pcu" interface. Subclasses implement this API returning either a
PcySysmo or a PcuOsmo object. This is needed to abstract the pcu()
getter into the base class.
- For BTS running in the main unit, pcu_sk_tmp_dir object is allocated
when first used (API pcu_socket_path()) instead of doing it in the
constructor. This is moved into OsmoBtsMainUnit

Change-Id: I86db35a7f2497d37360b2c56affa8bf6bf704ee2
2017-12-14 19:18:50 +01:00
Pau Espin f973b3d605 gprs: ping.py: Disable ipv6 ctx activate test
osmo-ggsn is failing to create tun ipv6 device in Prod main unit.
Afterwards, as the iface is not created, it cannot find its link-local
ip and it doesn't configure the ipv6 pool. Later on, when an ipv4v6 ctx
is requested, it fails because apn doesn't support ipv6 (because the
pool is not created).

Related: OS#2746

Change-Id: I018c525a8a3d108233740ee1376b2671fefbbb59
2017-12-13 19:55:35 +01:00
Pau Espin f0b8e37f32 osmo-ggsn: set cap CAP_NET_ADMIN to be able to set up tun devices
This is a temporary workaround to be able to test gprs signalling until
we set up all required bits to run osmo-ggsn in its own namespace.

Change-Id: I0a3ce16218f0274e0be09bbf2881bc21636acdf9
2017-12-13 16:08:38 +01:00
Pau Espin 1e19151867 suites: Wait for BTS to connect to BSC before continuing
Change-Id: I027e3bfb8f470a811e65e718e2a8c46809fe6396
2017-12-13 14:09:19 +00:00
Pau Espin 7bd7103736 OsmoBsc: Introduce bts_is_connected API
This can be used by tests to wait until bts is successfully connected to
BSC.

Change-Id: I2dc2be7fd802e0e77a5e6bf23c9ca03d4c4b28f2
2017-12-13 14:09:19 +00:00
Pau Espin c859eb37ad OsmoNitb: Introduce bts_is_connected API
This can be used by tests to wait until bts is successfully connected to
NITB.

Change-Id: Idb9b7087e38f638d8b8acbad6dd8ab4218746832
2017-12-13 14:09:19 +00:00
Pau Espin fd150fbb66 suites: gprs: Use inet46 APN due to ofono using IPv4v6 ctx request
Otherwise osmo-ggsn tries to allocate one IP of each type but fails
because the other APNs are ipv4-only or ipv6-only.

Change-Id: I53baa63dc1b83616a35af182cb6f56ee3d7fe38b
2017-12-12 16:44:00 +01:00
Pau Espin d22b8460e5 Revert "resources.conf: EC20 doesn't support SupplementaryServices"
This reverts commit 31b7f0f9de.

EC20 actually supports the feature. I was wrong mainly due to 2 reasons:
- I somehow failed to set the modem Online before checking for the
interface, and in that case it is not shown.
- The test I saw failing in prod is due to /gobi_0 being actually a
gobi2000 there, and the once failing was actually the gobi2000 and not
the EC20.

Change-Id: I31ad35b718e20168a75930498901015ca2015a52
2017-12-05 19:45:40 +01:00
Pau Espin fb8c6958b1 resources.conf: sierra modems support gprs
At least the signalling support we are currently running, so let's add
the gprs feature to them as they can be used to run the current tests.

Change-Id: I04459786ba76813ebaa7867bcc86afb4fa9700b9
2017-12-05 18:29:05 +01:00
Pau Espin 31b7f0f9de resources.conf: EC20 doesn't support SupplementaryServices
As the interface never appears, tests using the modem fail because we
wait for all the interfaces to be available based on the features
attribute.

Change-Id: I68fcf2b9083966ad42940e1629abe2a1a6b74095
2017-12-05 18:26:06 +01:00
Pau Espin 7ec53f5531 resources.conf: Label modems according to their type
It's difficult to know which path is which, and actually in the prod env
gobi_0 is given to gobi 2000 instead of EC20, which means the attributes
would be applying to the wrong resource.

Change-Id: If17ff9f3d9c4c74bf0aa7966b1dd2f878175a8f0
2017-12-05 18:23:54 +01:00
Pau Espin 7a4c17b661 bts_octphy: Use OsmoPcu instead of OsmoPcuSysmo
Change-Id: I81751d774ec1f61b01ccef6c21c9d38807d5d1fc
2017-12-05 17:05:27 +01:00
Pau Espin 1450436dd5 default-suites.conf: Add gprs suite
Change-Id: I6cc71529fd6e3b99b8a53c0b91377df6d3a636d3
2017-12-05 15:06:53 +01:00
Pau Espin 38523981cb default-suites.conf: Use same order for sysmocell5000 as for other bts
Change-Id: Ie9b294ef35e35a5951b72e86e8b967d2a612f177
2017-12-05 15:06:53 +01:00
Pau Espin 3c9b80d53b suites: gprs: Introduce suite with ping test
Only GPRS signalling setup is supported so far by osmo-gsm-tester, thus
we don't test sending data yet here, but at least we can already test
pdp context activation.

This test will be extended to run ping once we support setting up the
GPRS data plane in osmo-gsm-tester.

Change-Id: I8695029cb7a43cd48f650c88f38b4c054da0bc6b
2017-12-05 15:06:53 +01:00
Pau Espin a5ed18ac7e suites: aoip_debug: Start GPRS services
Change-Id: I991d0329ff068aaa7c101a5f55ad40616faac121
2017-12-05 15:06:53 +01:00
Pau Espin de899619cf modem: Add minimal GPRS support
Up to this point we can test signalling plane: attaching to GPRS network and activating a
context.

Data plane (sending IP packets through the network) is still not
implemented as it requires setting up the network interface provided by
ofono as well as routing, and most probably move osmo-ggsn to its own
network namespace.

Change-Id: I605ba1bb1103a045a9b5d0e7215c05dfc1fe575f
2017-12-05 15:06:52 +01:00
Pau Espin 8a3a7b5146 bts_*: Add incrementing bvci and rac values
Change-Id: Ie65d7d33322c775a1040b5c81f367d882a7c2c5b
2017-12-05 15:06:52 +01:00
Pau Espin 05314b4633 OsmoBtsOctphy: Integrate with OsmoPcu and OsmoSgsn
Change-Id: I54780971d711d47b23976dd044a4a53134dd4299
2017-12-05 15:06:52 +01:00
Pau Espin 5936d8f4b1 OsmoBtsTrx: Integrate with OsmoPcu and OsmoSgsn
Change-Id: I777835345355538a945599fb088630af63dc9140
2017-12-05 15:06:51 +01:00
Pau Espin ce35d91592 OsmoPcuSysmo: Integrate with Sysmobts and OsmoSgsn
Change-Id: I01485c5d74e5fe62d0ffea9eb1fad29041426eef
2017-12-05 13:36:46 +00:00
Pau Espin e85f5c9009 Add OsmoPcu class
Change-Id: I04d8ed5e02b090d07e91669df44ce354bc6ee749
2017-12-05 12:16:31 +01:00
Pau Espin 99f79294d3 Add class OsmoPcuSysmo
Change-Id: I6fbb71df1ad36e5d7eb02f3fdd7987a178d523d3
2017-12-05 12:12:59 +01:00
Pau Espin d0a01117df bts_*: Add ready_for_pcu API
This is required to start osmo-pcu after osmo-bts is already setup and
activated. Otherwise osmo-pcu ends after connecting to socket with:
"pcu_l1_if.cpp:416 BTS not available"

Change-Id: I7209589f60bda63094336e417638906be5e273c4
2017-12-05 11:09:10 +00:00
Pau Espin 4796b359bd Add OsmoSgsn class
Change-Id: Iec370a444998c632b3615ad1a6d6f67e64e2bfeb
2017-12-05 11:09:10 +00:00
Pau Espin 30ceb5c9a2 Add OsmoGgsn class
Change-Id: I0eed70838e4e8656c4bc1337df70e631a10d69c7
2017-12-05 11:09:10 +00:00
Pau Espin f7f0636f4d resource: next_lac: Avoid using LAC 0
Change-Id: I6c1bef81040e2c6210177f04743e7acf3eb9ad8f
2017-12-05 11:09:10 +00:00
Pau Espin 0b9d0918cf osmo-bsc: Remove token cmd from config
In 3b18044859df15ffd2ad4c3e5c3d2c94a2923eb9 this command
has been dropped and is no longer recognized.

Change-Id: I98546e36f8c809e8066fe0cc0d80d0ae3276473f
2017-11-30 11:58:25 +01:00
Pau Espin b87c6bd0e7 osmo-bsc: Remove authentication cmd from config
authentication is firmly VLR land and must go away from bsc. That option
is a leftover from nitb. It will be removed at some point.

Change-Id: I3bb4189b33173245116018e437e113c6c1226639
2017-11-29 14:31:32 +01:00
Pau Espin e7ec9089ab osmo-bsc: Remove 'auth policy' cmd from config
As of osmo-bsc ad47f7108aff5438bd2c6f7c0e898f4aa3b66fbe, this command
has been dropped and is no longer recognized.

Change-Id: Id97074195f045e6872a1a7030671a06259c9ec31
2017-11-29 14:28:38 +01:00
Pau Espin f2850f50a9 defaults.conf: Add PDCH channels to test GPRS
Change-Id: I8c90e2ef14a3556b62240e335ea3147df1467657
2017-11-23 14:07:51 +01:00
Pau Espin ff1580c573 resources.conf: Add gprs feature for EC20 modem
Change-Id: I99a1e8c2fbd3856f5c1978449292871498c6bf18
2017-11-23 14:07:51 +01:00
Pau Espin 7aef3861f4 modem: Move power off sequence to separate method
Also make sure we power off the modem during cleanup, to make sure we
set it offline (and in the future, we also detach GPRS).

Change-Id: I47845f36864d494be474fdd447a4e9e0cbed1abd
2017-11-23 14:07:50 +01:00
Pau Espin e0f498627c modem: Abstract the list of required ofono interfaces
* We want to add more interfaces to this list when we add more features
(such as waiting for ConnectionManager if we want to use GPRS).

* We want to require some ifaces only if we are planning to use those
features in osmo-gsm-tester (driven by config features attribute set to
the modem in resources.conf).

* Previous usage during shutdown was wrong, as it was waiting for any of
them to be down to continue instead of waiting for all of them to be
down.

Change-Id: I56a289360018aa56fe25b3dd328ffe9194b65f6b
2017-11-23 12:45:05 +01:00
Pau Espin 5bbb3003cb hlr: Rename conf_for API
The HLR has more clients than the MSC, for instance the SGSN.

Change-Id: Idd5de7a828f0a627f69876a990f2ac1af0b578aa
2017-11-23 11:09:38 +01:00
Pau Espin 9cc1d082ea Configure PcapRecorder to record on any iface
Before this commit, tcpdump was instructed to listen only on the
interface which had the IP assigned. However, local processes connecting
to that IP are actually sending packets through the loopback interface.
As we are not listening on it, all those packets are not being recorded.
Let's record on all interfaces instead and rely on the ip filtering to
record only the interesting packets.

Change-Id: I205786d5168acd66cf3427154d8bf307c5c58da5
2017-11-20 17:40:27 +01:00
Pau Espin 1e1d381a59 Configure bsc and msc to connect to the specific stp provided in test
Change-Id: I89deaa71956131766fec8fcc3bc7381ebb0e187f
2017-11-20 16:05:43 +00:00
Pau Espin fd5de3d2ca Move Test class to its own test.py module
Make the code more reachable for newcomers, as well as more organized
for people who work a lot with it.

SuiteRun in suite.py is already quite big, and having the Test class in
there make it unnecessarily more big, and makes it difficult to find
stuff.

At the same time, having a test.py which does actually not contain the
Test class but other stuff, makes it even more confusing.

Change-Id: I9c8d67f598466ba52a4827ff77027b9eae85929a
2017-11-17 17:12:15 +01:00
Pau Espin dfe38ad239 Rename test module to testenv and update references
Preparation to move current Test class into its own module test from
suite module.

Change-Id: I520bd046cb09042b5567d967f951f050e4e02e85
2017-11-17 17:07:51 +01:00
Pau Espin 24c5de89c9 modem, process: Remove unneeded test import
Change-Id: Icd8cbb753aafdef49bde56bc5b0294f82133887c
2017-11-12 13:19:24 +00:00
Pau Espin a02952a441 suite: Remove unneeded import copy
Change-Id: I7a7231439ce42d51e1b2ab413f64e217aaa8d145
2017-11-12 13:19:24 +00:00
Pau Espin ccc1ebc052 event_loop: Remove unneeded commented import line and explanation
Those lines come most probably from copy+paste using test.py header when
creating the file.

Change-Id: I7854d96de00124324bfbac8960e18ec30aa21296
2017-11-12 13:19:23 +00:00
Pau Espin 41dabb3627 suite: Separate better internal imports and the ones aimed at tests
Change-Id: Ib6f6fa561fbc4ed0d0f255ad54fdfdd823de1a8a
2017-11-12 13:19:23 +00:00
Pau Espin 99b0e0e609 Remove unused file bts_model.py
Change-Id: If24b7dafb659d45bc13f4d624212d6c266c1b522
2017-11-10 21:28:17 +00:00
Pau Espin 386b78d8b0 Require OsmoMgw in OsmoBsc and update tests
Since Change-Id Ia2882b7ca31a3219c676986e85045fa08a425d7a, osmo-bsc
uses osmo-mgw and utilizes libosmo-mgcp-client to talk to it.

This commit fixes latest constant failures in voice suite.

Change-Id: I1dadd781a357fce33e7bde55e4bcbdaeb4633359
2017-11-09 13:06:03 +01:00
Pau Espin e9d4af8903 Introduce OsmoMgw class (osmo-mgw)
Change-Id: I6081ceaddcde748ada8b124a29432d498a9cbdac
2017-11-09 13:01:00 +01:00
Pau Espin ef96749a2c contrib: Add binary osmo-mgw to artifact with same name
Change-Id: I706a4428f01b4b5be2bedc2507f67d8d7a4ffc8d
2017-11-09 12:08:41 +01:00