|
ATLAS Offline Software
|
◆ create_database()
def python.tests.create_database |
( |
| ) |
|
◆ create_defect_type()
def python.tests.create_defect_type |
( |
|
ddb, |
|
|
|
n |
|
) |
| |
◆ create_defect_type_unicode()
def python.tests.create_defect_type_unicode |
( |
|
ddb, |
|
|
|
n, |
|
|
|
desc |
|
) |
| |
◆ invariant()
def python.tests.invariant |
( |
|
test_data_name | ) |
|
Definition at line 8 of file DataQuality/DQUtils/python/tests.py.
10 testfile =
"%s.%s" % (func.__name__, test_data_name)
12 def check_invariant(*args, **kwargs):
13 result = func(*args, **kwargs)
14 if "DQU_UPDATE_TEST_DATA" in environ:
15 with open(test_data_name,
"wb")
as fd:
17 print(
"Wrote updated test data")
19 test_data = loads(resource_string(
"testdata", testfile))
20 assert result == test_data,
"Data considered 'invariant' has changed"
21 return check_invariant
◆ iov_ranges()
def python.tests.iov_ranges |
( |
|
iovs | ) |
|
◆ iov_result_depends()
def python.tests.iov_result_depends |
( |
|
iovs | ) |
|
◆ mungline()
def python.tests.mungline |
( |
|
f | ) |
|
◆ shortDescription()
def python.tests.shortDescription |
( |
|
self | ) |
|
◆ teardown_database()
def python.tests.teardown_database |
( |
| ) |
|
Definition at line 32 of file DataQuality/DQDefects/python/tests/__init__.py.
36 teardown_db._clear_connections()
38 from gc
import collect
41 connection_string =
"/".
join(TEST_DATABASE.split(
"/")[:-1])
42 if connection_string.endswith(
".db"):
43 log.info(
"Deleting %s", connection_string)
44 unlink(connection_string)
47 msg =
"I don't know how to tear down %s" % TEST_DATABASE
49 raise NotImplementedError(msg)
51 @with_setup(create_database, teardown_database)
◆ test_database_creation()
def python.tests.test_database_creation |
( |
| ) |
|
◆ test_database_creation_unicode()
def python.tests.test_database_creation_unicode |
( |
| ) |
|
◆ test_database_retrieval()
def python.tests.test_database_retrieval |
( |
| ) |
|
◆ test_defect_creation()
def python.tests.test_defect_creation |
( |
| ) |
|
◆ test_defect_empty_retrieval()
def python.tests.test_defect_empty_retrieval |
( |
| ) |
|
Definition at line 240 of file DataQuality/DQDefects/python/tests/__init__.py.
241 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
242 iovs = ddb.retrieve()
250 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
251 "Comment",
"DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
253 iovs = ddb.retrieve()
256 @with_setup(create_database, teardown_database)
◆ test_defect_failure_nonascii_name()
def python.tests.test_defect_failure_nonascii_name |
( |
| ) |
|
Check that we raise an error if the defect name is not ASCII
Definition at line 194 of file DataQuality/DQDefects/python/tests/__init__.py.
196 Check that we raise an error if the defect name is not ASCII
200 if ROOT.gROOT.GetVersionInt() < 62000:
204 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
206 ddb.create_defect(
u"DQD_TÉST_DÉFÉCT_0",
"Test")
208 @with_setup(create_database, teardown_database)
◆ test_defect_insertion_retrieval()
def python.tests.test_defect_insertion_retrieval |
( |
| ) |
|
Definition at line 136 of file DataQuality/DQDefects/python/tests/__init__.py.
137 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
140 TEST_DEFECT_NAME =
"DQD_TEST_DEFECT_%i" % TEST_ID
141 TEST_COMMENT =
"First test defect"
142 TEST_USER =
"DQDefects.tests"
143 TEST_SINCE, TEST_UNTIL = 0, 100
147 ddb.insert(TEST_DEFECT_NAME, TEST_SINCE, TEST_UNTIL, TEST_COMMENT, TEST_USER)
149 iovs = ddb.retrieve()
151 assert len(iovs) == 1
153 assert iov.since == TEST_SINCE
154 assert iov.until == TEST_UNTIL
155 assert iov.channel == TEST_DEFECT_NAME
157 assert not iov.recoverable
158 assert iov.user == TEST_USER
159 assert iov.comment == TEST_COMMENT
161 @with_setup(create_database, teardown_database)
◆ test_defect_insertion_retrieval_unicode()
def python.tests.test_defect_insertion_retrieval_unicode |
( |
| ) |
|
Definition at line 162 of file DataQuality/DQDefects/python/tests/__init__.py.
165 if ROOT.gROOT.GetVersionInt() < 62000:
169 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
172 TEST_DEFECT_NAME =
"DQD_TEST_DEFECT_%i" % TEST_ID
173 TEST_COMMENT =
u"First test defect with character: ±"
174 TEST_USER =
u"DQDefécts.tests"
175 TEST_SINCE, TEST_UNTIL = 0, 100
176 TEST_DEFECT_DESCRIPTION =
u"À test defect (%i)" % TEST_ID
180 ddb.insert(TEST_DEFECT_NAME, TEST_SINCE, TEST_UNTIL, TEST_COMMENT, TEST_USER)
182 iovs = ddb.retrieve()
184 assert len(iovs) == 1
187 assert not iov.recoverable
188 assert iov.user == TEST_USER
189 assert iov.comment == TEST_COMMENT
190 assert ddb.all_defect_descriptions[TEST_DEFECT_NAME] == TEST_DEFECT_DESCRIPTION
192 @raises(UnicodeEncodeError)
193 @with_setup(create_database, teardown_database)
◆ test_defect_list_update_on_creation()
def python.tests.test_defect_list_update_on_creation |
( |
| ) |
|
Check that the defect name list is updated when a defect is created
Definition at line 279 of file DataQuality/DQDefects/python/tests/__init__.py.
281 Check that the defect name list is updated when a defect is created
283 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
286 assert ddb.defect_names ==
set([name])
288 @with_setup(create_database, teardown_database)
◆ test_defect_mangle_bad_stored_unicode()
def python.tests.test_defect_mangle_bad_stored_unicode |
( |
| ) |
|
Check that we recover if any of the string payloads are bad UTF-8
Definition at line 209 of file DataQuality/DQDefects/python/tests/__init__.py.
211 Check that we recover if any of the string payloads are bad UTF-8
215 if ROOT.gROOT.GetVersionInt() < 62000:
219 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
221 TEST_DEFECT_NAME =
'DQD_TEST_DEFECT_0'
222 TEST_SINCE, TEST_UNTIL = 0, 100
224 ddb.create_defect(TEST_DEFECT_NAME,
"Test")
226 store = ddb.defects_folder.storeObject
227 p = ddb._defect_payload
229 p[
"recoverable"] =
False
230 p[
"user"] = b
'\x80abc'
231 p[
"comment"] = b
'\x80abc'
233 defect_id = ddb.defect_chan_as_id(TEST_DEFECT_NAME,
True)
235 store(TEST_SINCE, TEST_UNTIL, p, defect_id, ddb.defects_tag,
False)
236 iovs = ddb.retrieve()
237 assert(iovs[0].user ==
'\\x80abc' and iovs[0].comment ==
'\\x80abc')
239 @with_setup(create_database, teardown_database)
◆ test_get_intolerable_defects()
def python.tests.test_get_intolerable_defects |
( |
| ) |
|
Check that the intolerable defect listing function works
Definition at line 921 of file DataQuality/DQDefects/python/tests/__init__.py.
923 Check that the intolerable defect listing function works
925 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
934 ddb.new_virtual_defect(
"DQD_TEST_Virtual_DEFECT",
"Comment",
936 ddb.new_virtual_defect(
"PRIMARY",
"Comment",
937 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
938 ddb.new_virtual_defect(
"PHYS_test",
"Comment",
939 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1 DQD_TEST_DEFECT_2")
940 ddb.new_virtual_defect(
"TIGHT",
"Comment",
941 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1 DQD_TEST_DEFECT_2 DQD_TEST_DEFECT_3")
944 assert sorted(ddb.get_intolerable_defects()) == [
"DQD_TEST_DEFECT_0",
"DQD_TEST_DEFECT_1"],
"default params/old_primary_only check failed"
945 assert sorted(ddb.get_intolerable_defects(old_primary_only=
False, exclude=[
'TIGHT'])) == [
"DQD_TEST_DEFECT_0",
"DQD_TEST_DEFECT_1",
"DQD_TEST_DEFECT_2"],
'old_primary_only=False check failed'
946 assert sorted(ddb.get_intolerable_defects(old_primary_only=
False)) == [
"DQD_TEST_DEFECT_0",
"DQD_TEST_DEFECT_1"],
'regex handling check failed'
948 @with_setup(create_database, teardown_database)
◆ test_ignore_defects()
def python.tests.test_ignore_defects |
( |
| ) |
|
Definition at line 642 of file DataQuality/DQDefects/python/tests/__init__.py.
644 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
651 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"",
"")
652 ddb.insert(
"DQD_TEST_DEFECT_1", 100, 200,
"",
"")
653 ddb.insert(
"DQD_TEST_DEFECT_2", 200, 300,
"",
"")
655 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
"",
656 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1 DQD_TEST_DEFECT_2")
658 ignored_defects =
set([
"DQD_TEST_DEFECT_1"])
660 iovs = ddb.retrieve()
663 iovs = ddb.retrieve(ignore=ignored_defects)
664 assert not iov_result_depends(iovs) & ignored_defects,
"result depends on ignored defects"
666 @with_setup(create_database, teardown_database)
◆ test_independent_tags()
def python.tests.test_independent_tags |
( |
| ) |
|
Definition at line 691 of file DataQuality/DQDefects/python/tests/__init__.py.
693 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
700 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"",
"")
701 ddb.insert(
"DQD_TEST_DEFECT_1", 100, 200,
"",
"")
702 ddb.insert(
"DQD_TEST_DEFECT_2", 200, 300,
"",
"")
704 dtag1 = ddb.new_defects_tag(
"dqd-test",
"New iov tag")
706 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"",
"", present=
False)
708 dtag2 = ddb.new_defects_tag(
"dqd-test-2",
"New iov tag")
711 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
"",
712 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
714 ltag1 = ddb.new_logics_tag()
716 ddb.update_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
717 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_2")
719 ltag2 = ddb.new_logics_tag()
721 assert ltag1 != ltag2, f
'{ltag1} and {ltag2} should be different'
723 iovs = DefectsDB(TEST_DATABASE, tag=(
"HEAD", ltag1)).
retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
726 iovs = DefectsDB(TEST_DATABASE, tag=(
"HEAD", ltag2)).
retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
729 iovs = DefectsDB(TEST_DATABASE, tag=(dtag1, ltag1)).
retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
732 iovs = DefectsDB(TEST_DATABASE, tag=(dtag2, ltag2)).
retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
735 htag = ddb.new_hierarchical_tag(dtag2, ltag2)
737 iovs = DefectsDB(TEST_DATABASE, tag=(htag, htag)).
retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
740 iovs = DefectsDB(TEST_DATABASE, tag=htag).
retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
743 @with_setup(create_database, teardown_database)
◆ test_intersect()
def python.tests.test_intersect |
( |
| ) |
|
Definition at line 818 of file DataQuality/DQDefects/python/tests/__init__.py.
820 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
827 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 1000,
"",
"")
828 ddb.insert(
"DQD_TEST_DEFECT_0", 1000, 2000,
"",
"")
830 iovs = ddb.retrieve(50, 100, intersect=
True)
831 assert len(iovs) == 1
832 assert (iovs[0].since, iovs[0].until) == (50, 100)
834 iovs = ddb.retrieve(999, 1001, intersect=
True)
835 assert len(iovs) == 2
837 assert (first.since, first.until) == (999, 1000)
838 assert (second.since, second.until) == (1000, 1001)
840 @with_setup(create_database, teardown_database)
◆ test_iov_tag_defects()
def python.tests.test_iov_tag_defects |
( |
| ) |
|
Definition at line 783 of file DataQuality/DQDefects/python/tests/__init__.py.
785 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
792 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"comment1",
"user1", present=
False)
793 ddb.insert(
"DQD_TEST_DEFECT_1", 100, 200,
"",
"")
794 ddb.insert(
"DQD_TEST_DEFECT_2", 200, 300,
"comment2",
"user2", recoverable=
True)
796 ddb.new_defects_tag(
"dqd-test",
"New iov tag",
799 ddb2 = DefectsDB(TEST_DATABASE, tag=(
'DetStatusDEFECTS-dqd-test',
'HEAD'))
800 iovs = ddb2.retrieve(nonpresent=
True)
801 assert len(iovs) == 2
802 assert ((iovs[0].channel, iovs[0].since, iovs[0].until,
803 iovs[0].present, iovs[0].recoverable, iovs[0].user,
806 (
'DQD_TEST_DEFECT_0', 0, 51,
807 False,
False,
'user1',
809 assert ((iovs[1].channel, iovs[1].since, iovs[1].until,
810 iovs[1].present, iovs[1].recoverable, iovs[1].user,
813 (
'DQD_TEST_DEFECT_2', 210, 300,
817 @with_setup(create_database, teardown_database)
◆ test_list_empty_tag()
def python.tests.test_list_empty_tag |
( |
| ) |
|
Checking that listing a tag works even if the tag is empty
Definition at line 949 of file DataQuality/DQDefects/python/tests/__init__.py.
951 Checking that listing a tag works even if the tag is empty
953 ddb = DefectsDB(TEST_DATABASE, read_only=
False, tag=
"nominal")
954 ddb.virtual_defect_names
956 @with_setup(create_database, teardown_database)
◆ test_many_sparse_channels()
def python.tests.test_many_sparse_channels |
( |
| ) |
|
Definition at line 359 of file DataQuality/DQDefects/python/tests/__init__.py.
360 "Testing many virtual channels with sparsely placed IoVs"
361 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
366 with ddb.storage_buffer:
367 for i
in all_defects:
368 ddb.insert(i, 0, 100,
"Test",
"DQDefects.tests")
370 queried_defects = all_defects[:-1]
371 result = ddb.retrieve(channels=queried_defects)
372 queried_defects_set =
set(queried_defects)
373 result_defects_set =
set(i.channel
for i
in result)
375 unwanted_defects_set = result_defects_set - queried_defects_set
376 assert not unwanted_defects_set,
"Unwanted defects: %r" % unwanted_defects_set
378 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
"Comment",
379 " ".
join(all_defects))
381 result = ddb.retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
382 assert result.channels ==
set([
"DQD_TEST_VIRTUAL_DEFECT"])
383 assert len(result) == 1
385 assert result[0].comment ==
" ".
join(
sorted(all_defects)), result[0].comment
387 result = ddb.retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"],
390 assert result.channels ==
set([
"DQD_TEST_VIRTUAL_DEFECT"])
391 assert len(result) == 1
393 @with_setup(create_database, teardown_database)
◆ test_noncontiguous_defectid_creation()
def python.tests.test_noncontiguous_defectid_creation |
( |
| ) |
|
Test that defects are inserted correctly into non-contiguous ranges
Definition at line 957 of file DataQuality/DQDefects/python/tests/__init__.py.
959 Test that defects are inserted correctly into non-contiguous ranges
961 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
964 ddb._create_defect_with_id(2,
"TEST_DEFECT_DQD_2",
"")
965 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
966 "Comment",
"DQD_TEST_DEFECT_0 TEST_DEFECT_DQD_2")
967 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT_2",
968 "Comment",
"DQD_TEST_DEFECT_0 TEST_DEFECT_DQD_2")
972 ids, names, m = ddb.get_channels()
973 assert m == {0:
'DQD_TEST_DEFECT_0', 1:
'DQD_TEST_DEFECT_1', 2:
'TEST_DEFECT_DQD_2', 3:
'DQD_TEST_DEFECT_3',
'DQD_TEST_DEFECT_3': 3,
'DQD_TEST_DEFECT_0': 0,
'DQD_TEST_DEFECT_1': 1,
'TEST_DEFECT_DQD_2': 2},
'Primary defect problem'
974 ids, names, m = ddb.get_virtual_channels()
975 assert m == {2147483648:
'DQD_TEST_VIRTUAL_DEFECT', 2147483649:
'DQD_TEST_VIRTUAL_DEFECT_2',
'DQD_TEST_VIRTUAL_DEFECT': 2147483648,
'DQD_TEST_VIRTUAL_DEFECT_2': 2147483649},
'Virtual defect problem'
977 @with_setup(create_database, teardown_database)
◆ test_nonpresent()
def python.tests.test_nonpresent |
( |
| ) |
|
Definition at line 341 of file DataQuality/DQDefects/python/tests/__init__.py.
342 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
346 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"Test",
"DQDefects.tests")
347 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"Test",
"DQDefects.tests", present=
False)
349 iovs = ddb.retrieve()
351 assert len(iovs) == 0
353 iovs = ddb.retrieve(nonpresent=
True)
355 assert len(iovs) == 1
356 assert not iovs[0].present
358 @with_setup(create_database, teardown_database)
◆ test_normalize_defect_names()
def python.tests.test_normalize_defect_names |
( |
| ) |
|
Definition at line 841 of file DataQuality/DQDefects/python/tests/__init__.py.
842 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
849 ddb.new_virtual_defect(
"DQD_TEST_Virtual_DEFECT",
"Comment",
850 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
852 assert ddb.normalize_defect_names(
'dQd_tEsT_DeFeCt_0')==
'DQD_TEST_DEFECT_0'
853 assert ddb.normalize_defect_names([
'dQd_tEsT_DeFeCt_0',
'DqD_TeSt_dEfEcT_1'])==[
'DQD_TEST_DEFECT_0',
'DQD_TEST_DEFECT_1']
854 assert ddb.normalize_defect_names(
'dqd_test_virtual_defect')==
'DQD_TEST_Virtual_DEFECT'
856 ddb.normalize_defect_names(
'does_not_exist')
858 except DefectUnknownError:
860 assert wasthrown,
'normalize_defect_names should throw when the defect does not exist'
862 @with_setup(create_database, teardown_database)
◆ test_query_with_primary_dependencies()
def python.tests.test_query_with_primary_dependencies |
( |
| ) |
|
Definition at line 667 of file DataQuality/DQDefects/python/tests/__init__.py.
669 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
674 for i, defect
in enumerate(defect_names):
675 ddb.insert(defect, i*100, (i+1)*100,
"",
"")
677 ddb.new_virtual_defect(
"DQD_TEST_VDEFECT",
"",
" ".
join(defect_names))
679 iovs = ddb.retrieve(channels=[
"DQD_TEST_VDEFECT"])
680 assert iovs.channels ==
set([
"DQD_TEST_VDEFECT"])
681 assert len(iovs) == len(defect_names)
683 iovs = ddb.retrieve(channels=[
"DQD_TEST_VDEFECT"],
684 with_primary_dependencies=
True)
685 assert iovs.channels ==
set([
"DQD_TEST_VDEFECT"] + defect_names), (
688 assert len(iovs) == len(defect_names)*2
690 @with_setup(create_database, teardown_database)
◆ test_query_with_primary_dependencies_with_ignore()
def python.tests.test_query_with_primary_dependencies_with_ignore |
( |
| ) |
|
Checking with_primary_dependencies + ignore
Checks that the set of channels and iovs returned contains the correct
number of channels and iovs when specifying both with_primary_dependencies
and ignore to DQDefects.Retrieve
Definition at line 744 of file DataQuality/DQDefects/python/tests/__init__.py.
746 Checking with_primary_dependencies + ignore
748 Checks that the set of channels and iovs returned contains the correct
749 number of channels and iovs when specifying both with_primary_dependencies
750 and ignore to DQDefects.Retrieve
753 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
758 for i, defect
in enumerate(defect_names):
759 ddb.insert(defect, i*100, (i+1)*100,
"",
"")
761 ignored =
set(defect_names[:1])
763 ddb.new_virtual_defect(
"DQD_TEST_VDEFECT",
"",
" ".
join(defect_names))
765 iovs = ddb.retrieve(channels=[
"DQD_TEST_VDEFECT"], ignore=ignored)
766 assert iovs.channels ==
set([
"DQD_TEST_VDEFECT"])
767 assert len(iovs) == len(defect_names)-1
769 iovs = ddb.retrieve(channels=[
"DQD_TEST_VDEFECT"], ignore=ignored,
770 with_primary_dependencies=
True)
771 assert iovs.channels ==
set([
"DQD_TEST_VDEFECT"] + defect_names) - ignored, (
774 assert len(iovs) == len(defect_names[1:])*2
◆ test_reject_duplicate_names()
def python.tests.test_reject_duplicate_names |
( |
| ) |
|
Definition at line 863 of file DataQuality/DQDefects/python/tests/__init__.py.
864 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
866 ddb.create_defect(
'A_TEST_DEFECT',
'A test defect')
870 ddb.create_defect(
'A_TEST_DEFECT',
'A test defect 2')
871 except DefectExistsError:
873 assert wasthrown,
'Creation of duplicate defects should throw'
877 ddb.create_defect(
'A_test_defect',
'A test defect 2')
878 except DefectExistsError:
880 assert wasthrown,
'Creation of duplicate defects should throw, even with different case'
884 ddb.create_defect(
'A_test_defect_2',
'A test defect 2')
885 ddb.rename_defect(
'A_test_defect_2',
'A_TEST_DEFECT')
886 except DefectExistsError:
888 assert wasthrown,
'Rename of defect to existing defect name should throw'
890 ddb.new_virtual_defect(
'TEST_VIRTUAL_DEFECT',
'Comment',
'A_TEST_DEFECT')
893 ddb.new_virtual_defect(
'Test_Virtual_Defect',
'Comment',
'A_TEST_DEFECT')
894 except DefectExistsError:
896 assert wasthrown,
'Creation of duplicate virtual defects should throw'
898 ddb.new_virtual_defect(
'Test_Virtual_Defect_2',
'Comment',
'A_TEST_DEFECT')
901 ddb.rename_defect(
'Test_Virtual_Defect_2',
'TEST_VIRTUAL_DEFECT')
902 except DefectExistsError:
904 assert wasthrown,
'Rename of virtual defect to existing virtual defect name should throw'
908 ddb.rename_defect(
'Test_Virtual_Defect_2',
'A_TEST_DEFECT')
909 except DefectExistsError:
911 assert wasthrown,
'Rename of virtual defect to existing defect name should throw'
915 ddb.rename_defect(
'A_TEST_DEFECT',
'TEST_VIRTUAL_DEFECT')
916 except DefectExistsError:
918 assert wasthrown,
'Rename of defect to existing virtual defect name should throw'
920 @with_setup(create_database, teardown_database)
◆ test_rename_defects()
def python.tests.test_rename_defects |
( |
| ) |
|
Definition at line 578 of file DataQuality/DQDefects/python/tests/__init__.py.
580 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
586 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"",
"")
587 ddb.insert(
"DQD_TEST_DEFECT_1", 100, 200,
"",
"")
589 defects_tag = ddb.new_defects_tag(
"dqd-test",
"New iov tag")
592 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
"",
593 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
594 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT_2",
"",
595 "DQD_TEST_VIRTUAL_DEFECT")
597 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT_3",
"",
598 "DQD_TEST_DEFECT_0 !DQD_TEST_DEFECT_1")
599 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT_4",
"",
600 "!DQD_TEST_VIRTUAL_DEFECT")
602 original_tag = ddb.new_logics_tag()
603 original_htag = ddb.new_hierarchical_tag(defects_tag, original_tag)
614 ddb.rename_defect(
"DQD_TEST_DEFECT_0",
"DQD_TEST_DEFECT_3")
615 assert ddb.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT'].clauses == [
'DQD_TEST_DEFECT_3',
'DQD_TEST_DEFECT_1'], ddb.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT'].clauses
616 assert ddb.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT_3'].clauses == [
'DQD_TEST_DEFECT_3',
'!DQD_TEST_DEFECT_1'], ddb.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT_3'].clauses
619 ddb2 = DefectsDB(TEST_DATABASE, tag=original_htag)
620 assert ddb2.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT'].clauses == [
'DQD_TEST_DEFECT_3',
'DQD_TEST_DEFECT_1'], ddb2.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT'].clauses
623 ddb.rename_defect(
"DQD_TEST_VIRTUAL_DEFECT",
"DQD_TEST_VIRTUAL_DEFECT_A")
625 assert ddb.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT_2'].clauses == [
'DQD_TEST_VIRTUAL_DEFECT_A'], ddb.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT_2'].clauses
626 assert ddb.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT_4'].clauses == [
'!DQD_TEST_VIRTUAL_DEFECT_A'], ddb.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT_4'].clauses
629 ddb2 = DefectsDB(TEST_DATABASE, tag=original_htag)
630 assert ddb2.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT_2'].clauses == [
'DQD_TEST_VIRTUAL_DEFECT_A'], ddb2.virtual_defect_logics[
'DQD_TEST_VIRTUAL_DEFECT_2'].clauses
632 ddb._virtual_defect_consistency_check()
◆ test_return_types()
def python.tests.test_return_types |
( |
| ) |
|
Test that return types are appropriate
Definition at line 978 of file DataQuality/DQDefects/python/tests/__init__.py.
980 Test that return types are appropriate
982 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
986 did = ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
987 "Comment",
"DQD_TEST_DEFECT_0")
988 assert type(did) == int
990 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"",
"")
992 dtag = ddb.new_defects_tag(
"dqd-test",
"New iov tag")
993 assert type(dtag) == str, f
'{type(dtag)} instead of str'
994 ltag = ddb.new_logics_tag()
995 assert type(ltag) == str
996 htag = ddb.new_hierarchical_tag(dtag, ltag)
997 assert type(htag) == str
999 assert type(ddb.defects_tags) == list, f
'{type(ddb.defects_tags)} instead of list'
1000 assert type(ddb.defects_tags[0]) == str, f
'{type(ddb.defects_tags[0])} instead of str'
1001 assert type(ddb.logics_tags) == list, f
'{type(ddb.logics_tags)} instead of list'
1002 assert type(ddb.logics_tags[0]) == str, f
'{type(ddb.logics_tags[0])} instead of str'
1003 assert type(ddb.tags) == list, f
'{type(ddb.tags)} instead of list'
1004 assert type(ddb.tags[0]) == str, f
'{type(ddb.tags[0])} instead of str'
1006 ids, names, _ = ddb.get_channels()
1007 ids =
set(ids); names =
set(names)
1008 assert type(ids.pop()) == int
1009 assert type(names.pop()) == str
1010 ids, names, _ = ddb.get_virtual_channels()
1011 ids =
set(ids); names =
set(names)
1012 assert type(ids.pop()) == int
1013 assert type(names.pop()) == str
1015 iov = ddb.retrieve()
1016 assert type(iov[0].channel) == str
1017 assert type(iov[0].comment) == str
1018 assert type(iov[0].user) == str
1019 assert type(iov[0].present) == bool
1020 assert type(iov[0].recoverable) == bool
1022 assert type(ddb.all_defect_descriptions[
"DQD_TEST_DEFECT_0"]) == str,
str(ddb.all_defect_descriptions)
1023 assert type(ddb.all_defect_descriptions[
"DQD_TEST_VIRTUAL_DEFECT"]) == str,
str(ddb.all_defect_descriptions)
1025 ddb2 = DefectsDB(TEST_DATABASE, read_only=
False, tag=htag)
1026 assert type(ddb2.defects_tag) == str
1027 assert type(ddb2.logics_tag) == str
1028 assert type(ddb2.tag.defects) == str
1029 assert type(ddb2.tag.logic) == str
◆ test_tagging_unicode()
def python.tests.test_tagging_unicode |
( |
| ) |
|
Definition at line 549 of file DataQuality/DQDefects/python/tests/__init__.py.
551 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
557 ddb.insert(
u"DQD_TEST_DEFECT_0", 0, 100,
u"",
u"")
558 ddb.insert(
u"DQD_TEST_DEFECT_1", 100, 200,
u"",
u"")
560 defects_tag = ddb.new_defects_tag(
"dqd-test",
u"New iov tag")
563 ddb.new_virtual_defect(
u"DQD_TEST_VIRTUAL_DEFECT",
u"",
564 u"DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
566 original_tag = ddb.new_logics_tag()
567 original_htag = ddb.new_hierarchical_tag(defects_tag, original_tag)
569 what = {
"channels": [
u"DQD_TEST_VIRTUAL_DEFECT"]}
571 orig_iovs = DefectsDB((TEST_DATABASE), tag=six.ensure_text(original_htag)).
retrieve(**what)
573 assert len(orig_iovs) == 2
574 assert (orig_iovs[0].since, orig_iovs[0].until) == ( 0, 100)
575 assert (orig_iovs[1].since, orig_iovs[1].until) == (100, 200)
577 @with_setup(create_database, teardown_database)
◆ test_update_virtual_defect()
def python.tests.test_update_virtual_defect |
( |
| ) |
|
Definition at line 502 of file DataQuality/DQDefects/python/tests/__init__.py.
504 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
511 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"",
"")
512 ddb.insert(
"DQD_TEST_DEFECT_1", 100, 200,
"",
"")
513 ddb.insert(
"DQD_TEST_DEFECT_2", 200, 300,
"",
"")
515 defects_tag = ddb.new_defects_tag(
"dqd-test",
"New iov tag")
518 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
"",
519 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
521 original_tag = ddb.new_logics_tag()
522 original_htag = ddb.new_hierarchical_tag(defects_tag, original_tag)
524 ddb.update_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
525 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_2")
527 new_tag = ddb.new_logics_tag()
528 new_htag = ddb.new_hierarchical_tag(defects_tag, new_tag)
530 what = {
"channels": [
"DQD_TEST_VIRTUAL_DEFECT"]}
532 orig_iovs = DefectsDB(TEST_DATABASE, tag=original_htag).
retrieve(**what)
533 new_iovs = DefectsDB(TEST_DATABASE, tag=new_htag).
retrieve(**what)
534 head_iovs = DefectsDB(TEST_DATABASE).
retrieve(**what)
536 assert head_iovs == new_iovs
537 assert head_iovs != orig_iovs
539 assert len(head_iovs) == 2
540 assert (head_iovs[0].since, head_iovs[0].until) == ( 0, 100)
541 assert (head_iovs[1].since, head_iovs[1].until) == (200, 300)
543 from DQUtils.db
import Databases
544 db3 = Databases.get_instance(TEST_DATABASE, read_only=
True)
545 pfs = db3.getFolderSet(
'/GLOBAL/DETSTATUS')
546 assert pfs.tagDescription(new_htag) !=
'',
'Hierarchical tag description not created'
548 @with_setup(create_database, teardown_database)
◆ test_virtual_defect_consistency()
def python.tests.test_virtual_defect_consistency |
( |
| ) |
|
Checking that virtual flags don't depend on non-existent flags
Definition at line 776 of file DataQuality/DQDefects/python/tests/__init__.py.
778 Checking that virtual flags don't depend on non-existent flags
780 DefectsDB()._virtual_defect_consistency_check()
782 @with_setup(create_database, teardown_database)
◆ test_virtual_defect_creation()
def python.tests.test_virtual_defect_creation |
( |
| ) |
|
Definition at line 257 of file DataQuality/DQDefects/python/tests/__init__.py.
259 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
266 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
267 "Comment",
"DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
270 assert len(ddb.virtual_defect_ids) == 1
271 assert "DQD_TEST_VIRTUAL_DEFECT" in ddb.virtual_defect_names
274 ddb = DefectsDB(TEST_DATABASE)
275 assert len(ddb.virtual_defect_ids) == 1
276 assert "DQD_TEST_VIRTUAL_DEFECT" in ddb.virtual_defect_names
278 @with_setup(create_database, teardown_database)
◆ test_virtual_defect_creation_unicode()
def python.tests.test_virtual_defect_creation_unicode |
( |
| ) |
|
Definition at line 301 of file DataQuality/DQDefects/python/tests/__init__.py.
303 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
310 ddb.new_virtual_defect(
u"DQD_TEST_VIRTUAL_DEFECT",
311 u"Comment",
u"DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
314 assert len(ddb.virtual_defect_ids) == 1
315 assert "DQD_TEST_VIRTUAL_DEFECT" in ddb.virtual_defect_names
318 ddb = DefectsDB(TEST_DATABASE)
319 assert len(ddb.virtual_defect_ids) == 1
320 assert "DQD_TEST_VIRTUAL_DEFECT" in ddb.virtual_defect_names
322 @raises(UnicodeEncodeError)
323 @with_setup(create_database, teardown_database)
◆ test_virtual_defect_failure_nonascii_name()
def python.tests.test_virtual_defect_failure_nonascii_name |
( |
| ) |
|
Check that we raise an error if the virtual defect name is not ASCII
Definition at line 324 of file DataQuality/DQDefects/python/tests/__init__.py.
326 Check that we raise an error if the virtual defect name is not ASCII
330 if ROOT.gROOT.GetVersionInt() < 62000:
334 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
336 ddb.create_defect(
u"DQD_TEST_DEFECT_0",
"Test")
337 ddb.new_virtual_defect(
u"DQD_TÉST_VIRTUAL_DÉFÉCT",
338 u"Comment",
u"DQD_TEST_DEFECT_0")
340 @with_setup(create_database, teardown_database)
◆ test_virtual_defect_hiding()
def python.tests.test_virtual_defect_hiding |
( |
| ) |
|
Definition at line 482 of file DataQuality/DQDefects/python/tests/__init__.py.
483 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
490 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
"Comment",
491 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
493 new_tag = ddb.new_logics_tag()
495 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT_2",
"Comment",
496 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
498 ddb2 = DefectsDB(TEST_DATABASE, tag=(
'HEAD', new_tag), read_only=
True)
499 assert ddb2.virtual_defect_names ==
set([
'DQD_TEST_VIRTUAL_DEFECT']),
'Only one virtual defect should be in this tag'
501 @with_setup(create_database, teardown_database)
◆ test_virtual_defect_list_update_on_creation()
def python.tests.test_virtual_defect_list_update_on_creation |
( |
| ) |
|
Check that the virtual defect name list is updated when a defect is created
Definition at line 289 of file DataQuality/DQDefects/python/tests/__init__.py.
291 Check that the virtual defect name list is updated when a defect is created
293 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
295 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
298 assert ddb.virtual_defect_names ==
set([
"DQD_TEST_VIRTUAL_DEFECT"])
300 @with_setup(create_database, teardown_database)
◆ test_virtual_defects()
def python.tests.test_virtual_defects |
( |
| ) |
|
Definition at line 394 of file DataQuality/DQDefects/python/tests/__init__.py.
395 "Testing virtual defect basics"
396 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
403 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
"Comment",
404 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1")
407 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"Test",
"DQDefects.tests")
408 ddb.insert(
"DQD_TEST_DEFECT_1", 150, 200,
"Test",
"DQDefects.tests")
411 iovs = ddb.retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
414 assert len(iovs) == 2
416 assert (first.since, first.until) == (0, 100)
417 assert (second.since, second.until) == (150, 200)
418 assert first.channel == second.channel ==
"DQD_TEST_VIRTUAL_DEFECT"
419 del first, second, iovs
422 ddb.insert(
"DQD_TEST_DEFECT_1", 150, 200,
"Test",
"DQDefects.tests", present=
False)
424 iovs = ddb.retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
426 assert len(iovs) == 1
428 assert (first.since, first.until) == (0, 100)
429 assert first.channel ==
"DQD_TEST_VIRTUAL_DEFECT"
432 ddb.insert(
"DQD_TEST_DEFECT_0", 100, 150,
"Test",
"DQDefects.tests")
433 iovs = ddb.retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
435 assert len(iovs) == 1
437 assert (first.since, first.until) == (0, 150)
438 assert first.channel ==
"DQD_TEST_VIRTUAL_DEFECT"
440 @with_setup(create_database, teardown_database)
◆ test_virtual_defects_deep()
def python.tests.test_virtual_defects_deep |
( |
| ) |
|
Definition at line 441 of file DataQuality/DQDefects/python/tests/__init__.py.
442 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
449 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"Test",
"DQDefects.tests")
450 ddb.insert(
"DQD_TEST_DEFECT_1", 150, 200,
"Test",
"DQDefects.tests")
453 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT_0",
"",
"DQD_TEST_DEFECT_0")
454 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT_1",
"",
"DQD_TEST_DEFECT_1")
456 ddb = DefectsDB(TEST_DATABASE)
460 @with_setup(create_database, teardown_database)
◆ test_virtual_defects_invert()
def python.tests.test_virtual_defects_invert |
( |
| ) |
|
Definition at line 86 of file DataQuality/DQDefects/python/tests/__init__.py.
87 "Testing virtual defects involving inversion"
88 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
96 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
"Comment",
97 "DQD_TEST_DEFECT_0 DQD_TEST_DEFECT_1 !DQD_TEST_DEFECT_2")
100 ddb.insert(
"DQD_TEST_DEFECT_0", 0, 100,
"Test",
"DQDefects.tests")
101 ddb.insert(
"DQD_TEST_DEFECT_1", 150, 200,
"Test",
"DQDefects.tests")
102 ddb.insert(
"DQD_TEST_DEFECT_2", 50, 125,
"Test",
"DQDefects.tests")
105 iovs = ddb.retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
108 assert len(iovs) == 4,
list(iovs)
109 first, second, third, fourth = iovs
110 assert (first.since, first.until) == (0, 50), first
111 assert (second.since, second.until) == (50, 100), second
112 assert (third.since, third.until) == (125, 150), third
113 assert (fourth.since, fourth.until) == (150, 200), fourth
114 assert first.channel == second.channel == third.channel == fourth.channel ==
"DQD_TEST_VIRTUAL_DEFECT", (first.channel, second.channel, third.channel, fourth.channel)
115 del first, second, third, fourth, iovs
118 iovs = ddb.retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"], evaluate_full=
False)
119 assert len(iovs) == 2,
list(iovs)
122 ddb.insert(
"DQD_TEST_DEFECT_2", 50, 150,
"Test",
"DQDefects.tests", present=
False)
123 iovs = ddb.retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
126 assert len(iovs) == 3,
list(iovs)
127 first, second, third = iovs
128 assert (first.since, first.until) == (0, 100), first
129 assert (second.since, second.until) == (100, 150), second
130 assert (third.since, third.until) == (150, 200), third
131 assert first.channel == second.channel == third.channel ==
"DQD_TEST_VIRTUAL_DEFECT", (first.channel, second.channel, third.channel)
132 del first, second, third, iovs
135 @with_setup(create_database, teardown_database)
◆ test_virtual_defects_stress()
def python.tests.test_virtual_defects_stress |
( |
| ) |
|
Definition at line 461 of file DataQuality/DQDefects/python/tests/__init__.py.
462 ddb = DefectsDB(TEST_DATABASE, read_only=
False)
466 for i
in range(STRESS_COUNT):
469 with ddb.storage_buffer:
470 for i
in range(STRESS_COUNT):
471 ddb.insert(
"DQD_TEST_DEFECT_%i" % i, i, i+1,
"Test",
"DQDefects.tests")
473 ALL_DEFECTS =
" ".
join(
"DQD_TEST_DEFECT_%i" % i
for i
in range(STRESS_COUNT))
474 ddb.new_virtual_defect(
"DQD_TEST_VIRTUAL_DEFECT",
"", ALL_DEFECTS)
476 iovs = ddb.retrieve(channels=[
"DQD_TEST_VIRTUAL_DEFECT"])
478 assert len(iovs) == STRESS_COUNT - 1
479 assert (iovs[0].since, iovs[-1].until) == (1, STRESS_COUNT)
481 @with_setup(create_database, teardown_database)
◆ _shortDescription
python.tests._shortDescription |
|
private |
python.tests.g = list(globals().keys()) |
◆ log
◆ not_yet
string python.tests.not_yet |
◆ shortDescription
python.tests.shortDescription |
◆ teardown_db
python.tests.teardown_db = None |
◆ TEST_DATABASE
string python.tests.TEST_DATABASE = "test_defects.db/COMP200" |
def retrieve(aClass, aKey=None)
def test_reject_duplicate_names()
def test_database_retrieval()
def test_virtual_defect_failure_nonascii_name()
def test_normalize_defect_names()
def test_defect_empty_retrieval()
def test_ignore_defects()
def test_tagging_unicode()
def invariant(test_data_name)
def test_many_sparse_channels()
def test_database_creation()
def test_virtual_defect_consistency()
def test_rename_defects()
def iov_result_depends(iovs)
def test_defect_creation()
def test_query_with_primary_dependencies_with_ignore()
def shortDescription(self)
def test_defect_mangle_bad_stored_unicode()
def test_noncontiguous_defectid_creation()
def create_defect_type_unicode(ddb, n, desc)
def test_list_empty_tag()
def test_virtual_defect_creation()
std::vector< typename T::value_type > sorted(T begin, T end)
Helper function to create a sorted vector from an unsorted one.
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
void print(char *figname, TCanvas *c1)
def test_defect_insertion_retrieval()
std::string join(const std::vector< std::string > &v, const char c=',')
def test_defect_failure_nonascii_name()
def test_virtual_defects_invert()
def test_query_with_primary_dependencies()
def test_virtual_defects_stress()
def test_virtual_defect_creation_unicode()
def test_virtual_defect_hiding()
def test_get_intolerable_defects()
def test_defect_list_update_on_creation()
def test_defect_insertion_retrieval_unicode()
void collect(const HLT::TriggerElement *te, std::vector< Trig::Feature< T > > &data, const std::string &label, unsigned int condition, const std::string &teName, const HLT::TrigNavStructure *navstructure)
actual feature acceess implementation It has (thanks to the ClassTraits) functionality to flatten con...
def test_update_virtual_defect()
def create_defect_type(ddb, n)
def test_independent_tags()
def test_iov_tag_defects()
def test_virtual_defects()
def test_virtual_defects_deep()
def test_database_creation_unicode()
def test_virtual_defect_list_update_on_creation()