selftest: Move tests into own subdirectories

Change-Id: Id21cda19df131e24402e1a593036e1e33a914920
diff --git a/selftest/resource_test/resource_test.ok b/selftest/resource_test/resource_test.ok
new file mode 100644
index 0000000..bbdbc5b
--- /dev/null
+++ b/selftest/resource_test/resource_test.ok
@@ -0,0 +1,289 @@
+- 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/resource_test/conf/paths.conf in [PATH]/selftest/resource_test/conf which is [PATH]/selftest/resource_test/conf
+cnf -: DBG: [PATH]/selftest/resource_test/conf/paths.conf: relative path ./test_work/state_dir is [PATH]/selftest/resource_test/conf/test_work/state_dir
+cnf -: DBG: [PATH]/selftest/resource_test/conf/paths.conf: relative path ./suite_test is [PATH]/selftest/resource_test/conf/suite_test
+cnf -: DBG: Found path state_dir as [PATH]/selftest/resource_test/conf/test_work/state_dir
+cnf ResourcesPool: DBG: Found config file resources.conf as [PATH]/selftest/resource_test/conf/resources.conf in [PATH]/selftest/resource_test/conf which is [PATH]/selftest/resource_test/conf
+cnf ResourcesPool: DBG: Found path state_dir as [PATH]/selftest/resource_test/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