osmo-gsm-tester/selftest/resource_test.ok

290 lines
10 KiB
Plaintext
Raw Normal View History

- expect solutions:
[0, 1, 2]
[0, 1, 2]
[1, 0, 2]
[1, 2, 0]
- expect failure to solve:
The requested resource requirements are not solvable [[0, 2], [2], [0, 2]]
- test removing a Resources list from itself
ok, caused exception: RuntimeError('Refusing to drop a list of resources from itself. This is probably a bug where a list of Resources() should have been copied but is passed as-is. use Resources.clear() instead.',)
- test removing a Resources list from one with the same list in it
- test resources config and state dir:
cnf -: DBG: Found config file paths.conf as [PATH]/selftest/conf/paths.conf in ./conf which is [PATH]/selftest/conf
cnf -: DBG: [PATH]/selftest/conf/paths.conf: relative path ./test_work/state_dir is [PATH]/selftest/conf/test_work/state_dir
cnf -: DBG: [PATH]/selftest/conf/paths.conf: relative path ./suite_test is [PATH]/selftest/conf/suite_test
cnf -: DBG: Found path state_dir as [PATH]/selftest/conf/test_work/state_dir
fix and refactor logging: drop 'with', simplify With the recent fix of the junit report related issues, another issue arose: the 'with log.Origin' was changed to disallow __enter__ing an object twice to fix problems, now still code would fail because it tries to do 'with' on the same object twice. The only reason is to ensure that logging is associated with a given object. Instead of complicating even more, implement differently. Refactor logging to simplify use: drop the 'with Origin' style completely, and instead use the python stack to determine which objects are created by which, and which object to associate a log statement with. The new way: we rely on the convention that each class instance has a local 'self' referencing the object instance. If we need to find an origin as a new object's parent, or to associate a log message with, we traverse each stack frame, fetching the first local 'self' object that is a log.Origin class instance. How to use: Simply call log.log() anywhere, and it finds an Origin object to log for, from the stack. Alternatively call self.log() for any Origin() object to skip the lookup. Create classes as child class of log.Origin and make sure to call super().__init__(category, name). This constructor will magically find a parent Origin on the stack. When an exception happens, we first escalate the exception up through call scopes to where ever it is handled by log.log_exn(). This then finds an Origin object in the traceback's stack frames, no need to nest in 'with' scopes. Hence the 'with log.Origin' now "happens implicitly", we can write pure natural python code, no more hassles with scope ordering. Furthermore, any frame can place additional logging information in a frame by calling log.ctx(). This is automatically inserted in the ancestry associated with a log statement / exception. Change-Id: I5f9b53150f2bb6fa9d63ce27f0806f0ca6a45e90
2017-06-09 23:18:27 +00:00
cnf ResourcesPool: DBG: Found config file resources.conf as [PATH]/selftest/conf/resources.conf in ./conf which is [PATH]/selftest/conf
cnf ResourcesPool: DBG: Found path state_dir as [PATH]/selftest/conf/test_work/state_dir
*** all resources:
{'arfcn': [{'_hash': 'e620569450f8259b3f0212ec19c285dd07df063c',
'arfcn': '512',
'band': 'GSM-1800'},
{'_hash': '022621e513c5a5bf33b77430a1e9c886be676fa1',
'arfcn': '514',
'band': 'GSM-1800'},
{'_hash': '3199abf375a1dd899e554e9d63a552e06d7f38bf',
'arfcn': '516',
'band': 'GSM-1800'},
{'_hash': '57aa7bd1da62495f2857ae6b859193dd592a0a02',
'arfcn': '518',
'band': 'GSM-1800'},
{'_hash': '53dd2e2682b736f427abd2ce59a9a50ca8130678',
'arfcn': '520',
'band': 'GSM-1800'},
{'_hash': '31687a5e6d5140a4b3877606ca5f18244f11d706',
'arfcn': '540',
'band': 'GSM-1900'},
{'_hash': '1def43a5c88a83cdb21279eacab0679ea08ffaf3',
'arfcn': '542',
'band': 'GSM-1900'},
{'_hash': '1d6e3b08a3861fd4d748f111295ec5a93ecd3d23',
'arfcn': '544',
'band': 'GSM-1900'},
{'_hash': '8fb36927de15466fcdbee01f7f65704c312cb36c',
'arfcn': '546',
'band': 'GSM-1900'},
{'_hash': 'dc9ce027a257da087f31a5bc1ee6b4abd2637369',
'arfcn': '548',
'band': 'GSM-1900'}],
'bts': [{'_hash': 'd2aa7c1124943de352351b650ca0c751784da6b6',
'addr': '10.42.42.114',
'band': 'GSM-1800',
'ciphers': ['a5_0', 'a5_1'],
'direct_pcu': 'True',
'ipa_unit_id': '1',
'label': 'sysmoBTS 1002',
'type': 'osmo-bts-sysmo'},
{'_hash': '2158317d5e0055070e7174c2498dedf53a2957e9',
'addr': '10.42.42.50',
'band': 'GSM-1800',
'ciphers': ['a5_0', 'a5_1'],
'ipa_unit_id': '6',
'label': 'Ettus B200',
'osmo_trx': {'clock_reference': 'external', 'launch_trx': 'True'},
'type': 'osmo-bts-trx'},
{'_hash': 'f964ba5fe7a37b97ec3e0c4ef21c9231a19de45d',
'addr': '10.42.42.51',
'band': 'GSM-1800',
'ciphers': ['a5_0', 'a5_1'],
'ipa_unit_id': '7',
'label': 'sysmoCell 5000',
'osmo_trx': {'clock_reference': 'external',
'launch_trx': 'False',
'trx_ip': '10.42.42.112'},
'type': 'osmo-bts-trx'}],
'ip_address': [{'_hash': 'fd103b22c7cf2480d609150e06f4bbd92ac78d8c',
'addr': '10.42.42.2'},
{'_hash': '1c614d6210c551d142aadca8f25e1534ebb2a70f',
'addr': '10.42.42.3'},
{'_hash': '862b529c701adf302477bc126a8032cfc2ec4753',
'addr': '10.42.42.4'},
{'_hash': '05feb6e1e24ca4235889eb28d0a8d5cedac6e5d1',
'addr': '10.42.42.5'},
{'_hash': 'e780ac7581ad29f8f46e637b61d0c38898c4c52c',
'addr': '10.42.42.6'}],
'modem': [{'_hash': '0b538cb6ad799fbd7c2953fd3b4463a76c7cc9c0',
'auth_algo': 'comp128v1',
'ciphers': ['a5_0', 'a5_1'],
'imsi': '901700000009031',
'ki': '80A37E6FDEA931EAC92FFA5F671EFEAD',
'label': 'sierra_1',
'path': '/sierra_1'},
{'_hash': '3a6e7747dfe7dfdf817bd3351031bd08051605c3',
'auth_algo': 'comp128v1',
'ciphers': ['a5_0', 'a5_1'],
'imsi': '901700000009029',
'ki': '00969E283349D354A8239E877F2E0866',
'label': 'sierra_2',
'path': '/sierra_2'},
{'_hash': 'f6ba17db2ad13da5ba5c54b5385a774f5351bb5a',
'auth_algo': 'comp128v1',
'ciphers': ['a5_0', 'a5_1'],
'imsi': '901700000009030',
'ki': 'BB70807226393CDBAC8DD3439FF54252',
'label': 'gobi_0',
'path': '/gobi_0'},
{'_hash': 'fbff2e4f06b727fc8a70da23e1d134f9cd763919',
'auth_algo': 'comp128v1',
'ciphers': ['a5_0', 'a5_1'],
'imsi': '901700000009032',
'ki': '2F70DCA43C45ACB97E947FDD0C7CA30A',
'label': 'gobi_3',
'path': '/gobi_3'}]}
*** end: all resources
- request some resources
--- testowner: Reserving 2 x arfcn (candidates: 10)
--- testowner: DBG: Picked - _hash: e620569450f8259b3f0212ec19c285dd07df063c
arfcn: '512'
band: GSM-1800
- _hash: 022621e513c5a5bf33b77430a1e9c886be676fa1
arfcn: '514'
band: GSM-1800
--- testowner: Reserving 2 x bts (candidates: 3)
--- testowner: DBG: Picked - _hash: d2aa7c1124943de352351b650ca0c751784da6b6
addr: 10.42.42.114
band: GSM-1800
ciphers:
- a5_0
- a5_1
direct_pcu: 'True'
ipa_unit_id: '1'
label: sysmoBTS 1002
type: osmo-bts-sysmo
- _hash: 2158317d5e0055070e7174c2498dedf53a2957e9
addr: 10.42.42.50
band: GSM-1800
ciphers:
- a5_0
- a5_1
ipa_unit_id: '6'
label: Ettus B200
osmo_trx:
clock_reference: external
launch_trx: 'True'
type: osmo-bts-trx
--- testowner: Reserving 1 x ip_address (candidates: 5)
--- testowner: DBG: Picked - _hash: fd103b22c7cf2480d609150e06f4bbd92ac78d8c
addr: 10.42.42.2
--- testowner: Reserving 2 x modem (candidates: 4)
--- testowner: DBG: Picked - _hash: 0b538cb6ad799fbd7c2953fd3b4463a76c7cc9c0
auth_algo: comp128v1
ciphers:
- a5_0
- a5_1
imsi: '901700000009031'
ki: 80A37E6FDEA931EAC92FFA5F671EFEAD
label: sierra_1
path: /sierra_1
- _hash: 3a6e7747dfe7dfdf817bd3351031bd08051605c3
auth_algo: comp128v1
ciphers:
- a5_0
- a5_1
imsi: '901700000009029'
ki: 00969E283349D354A8239E877F2E0866
label: sierra_2
path: /sierra_2
~~~ currently reserved:
arfcn:
- _hash: e620569450f8259b3f0212ec19c285dd07df063c
_reserved_by: testowner-123-1490837279
arfcn: '512'
band: GSM-1800
- _hash: 022621e513c5a5bf33b77430a1e9c886be676fa1
_reserved_by: testowner-123-1490837279
arfcn: '514'
band: GSM-1800
bts:
- _hash: d2aa7c1124943de352351b650ca0c751784da6b6
_reserved_by: testowner-123-1490837279
addr: 10.42.42.114
band: GSM-1800
ciphers:
- a5_0
- a5_1
direct_pcu: 'True'
ipa_unit_id: '1'
label: sysmoBTS 1002
type: osmo-bts-sysmo
- _hash: 2158317d5e0055070e7174c2498dedf53a2957e9
_reserved_by: testowner-123-1490837279
addr: 10.42.42.50
band: GSM-1800
ciphers:
- a5_0
- a5_1
ipa_unit_id: '6'
label: Ettus B200
osmo_trx:
clock_reference: external
launch_trx: 'True'
type: osmo-bts-trx
ip_address:
- _hash: fd103b22c7cf2480d609150e06f4bbd92ac78d8c
_reserved_by: testowner-123-1490837279
addr: 10.42.42.2
modem:
- _hash: 0b538cb6ad799fbd7c2953fd3b4463a76c7cc9c0
_reserved_by: testowner-123-1490837279
auth_algo: comp128v1
ciphers:
- a5_0
- a5_1
imsi: '901700000009031'
ki: 80A37E6FDEA931EAC92FFA5F671EFEAD
label: sierra_1
path: /sierra_1
- _hash: 3a6e7747dfe7dfdf817bd3351031bd08051605c3
_reserved_by: testowner-123-1490837279
auth_algo: comp128v1
ciphers:
- a5_0
- a5_1
imsi: '901700000009029'
ki: 00969E283349D354A8239E877F2E0866
label: sierra_2
path: /sierra_2
~~~ end: currently reserved
~~~ with modifiers:
resources(testowner)={'arfcn': [{'_hash': 'e620569450f8259b3f0212ec19c285dd07df063c',
'_reserved_by': 'testowner-123-1490837279',
'arfcn': '512',
'band': 'GSM-1800'},
{'_hash': '022621e513c5a5bf33b77430a1e9c886be676fa1',
'_reserved_by': 'testowner-123-1490837279',
'arfcn': '514',
'band': 'GSM-1800'}],
'bts': [{'_hash': 'd2aa7c1124943de352351b650ca0c751784da6b6',
'_reserved_by': 'testowner-123-1490837279',
'addr': '10.42.42.114',
'band': 'GSM-1800',
'ciphers': ['a5_0', 'a5_1'],
'direct_pcu': 'True',
'ipa_unit_id': '1',
'label': 'sysmoBTS 1002',
'type': 'osmo-bts-sysmo'},
{'_hash': '2158317d5e0055070e7174c2498dedf53a2957e9',
'_reserved_by': 'testowner-123-1490837279',
'addr': '10.42.42.50',
'band': 'GSM-1800',
'ciphers': ['a5_0', 'a5_1'],
'ipa_unit_id': '6',
'label': 'Ettus B200',
'num_trx': 2,
'osmo_trx': {'clock_reference': 'external', 'launch_trx': 'True'},
'type': 'osmo-bts-trx'}],
'ip_address': [{'_hash': 'fd103b22c7cf2480d609150e06f4bbd92ac78d8c',
'_reserved_by': 'testowner-123-1490837279',
'addr': '10.42.42.2'}],
'modem': [{'_hash': '0b538cb6ad799fbd7c2953fd3b4463a76c7cc9c0',
'_reserved_by': 'testowner-123-1490837279',
'auth_algo': 'comp128v1',
'ciphers': ['a5_0', 'a5_1'],
'imsi': '901700000009031',
'ki': '80A37E6FDEA931EAC92FFA5F671EFEAD',
'label': 'sierra_1',
'path': '/sierra_1'},
{'_hash': '3a6e7747dfe7dfdf817bd3351031bd08051605c3',
'_reserved_by': 'testowner-123-1490837279',
'auth_algo': 'comp128v1',
'ciphers': ['a5_0', 'a5_1'],
'imsi': '901700000009029',
'ki': '00969E283349D354A8239E877F2E0866',
'label': 'sierra_2',
'path': '/sierra_2'}]}
~~~ end: with modifiers:
~~~ currently reserved:
{}
~~~ end: currently reserved
- item_matches:
1st subset matches correctly, pass
2nd subset matches correctly, pass
3rd subset should not match, pass
3rd subset should not match, pass
4th subset should not match, pass