Update TestcaseGenerator to work with new transaction code

svn: r16705
This commit is contained in:
Michiel Nauta 2011-02-23 19:34:59 +00:00
parent 3ff2a2ef91
commit a73699e6da

View File

@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-
# encoding: utf-8
#
# Gramps - a GTK+/GNOME based genealogy program
#
@ -46,6 +46,7 @@ import gtk
#
#-------------------------------------------------------------------------
import gen.lib
from gen.db import DbTxn
from gui.plug import tool
import Utils
import LdsUtils
@ -139,8 +140,11 @@ class TestcaseGenerator(tool.BatchTool):
self.check_persons.set_active( self.options.handler.options_dict['persons'])
self.top.vbox.pack_start(self.check_persons,0,0,5)
# doesn't work any more since revision ... (earlier than version 3.3)
self.check_trans = gtk.CheckButton( _("Don't block transactions"))
self.check_trans.set_active( self.options.handler.options_dict['no_trans'])
#self.check_trans.set_active( self.options.handler.options_dict['no_trans'])
self.check_trans.set_active(False)
self.check_trans.set_sensitive(False)
self.top.vbox.pack_start(self.check_trans,0,0,5)
self.check_longnames = gtk.CheckButton( _("Generate long names"))
@ -219,7 +223,7 @@ class TestcaseGenerator(tool.BatchTool):
self.db.disable_signals()
else:
batch = False
self.trans = self.db.transaction_begin(_("Testcase generator"))
with DbTxn(_("Testcase generator"), self.db) as self.trans:
if False and self.options.handler.options_dict['no_trans']:
@ -353,7 +357,6 @@ class TestcaseGenerator(tool.BatchTool):
if self.person_count > self.options.handler.options_dict['person_count']:
break
self.db.transaction_commit(self.trans,_("Testcase generator"))
if not self.options.handler.options_dict['no_trans']:
self.db.enable_signals()
self.db.request_rebuild()
@ -363,6 +366,9 @@ class TestcaseGenerator(tool.BatchTool):
def generate_broken_relations(self):
# Create a family, that links to father and mother, but father does not link back
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person1_h = self.generate_person(gen.lib.Person.MALE,"Broken1","Family links to this person, but person does not link back")
person2_h = self.generate_person(gen.lib.Person.FEMALE,"Broken1",None)
fam = gen.lib.Family()
@ -376,9 +382,11 @@ class TestcaseGenerator(tool.BatchTool):
person2 = self.db.get_person_from_handle(person2_h)
person2.add_family_handle(fam_h)
self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create a family, that misses the link to the father
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person1_h = self.generate_person(gen.lib.Person.MALE,"Broken2",None)
person2_h = self.generate_person(gen.lib.Person.FEMALE,"Broken2",None)
fam = gen.lib.Family()
@ -392,9 +400,11 @@ class TestcaseGenerator(tool.BatchTool):
person2 = self.db.get_person_from_handle(person2_h)
person2.add_family_handle(fam_h)
self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create a family, that misses the link to the mother
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person1_h = self.generate_person(gen.lib.Person.MALE,"Broken3",None)
person2_h = self.generate_person(gen.lib.Person.FEMALE,"Broken3",None)
fam = gen.lib.Family()
@ -408,9 +418,11 @@ class TestcaseGenerator(tool.BatchTool):
person2 = self.db.get_person_from_handle(person2_h)
person2.add_family_handle(fam_h)
self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create a family, that links to father and mother, but father does not link back
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person1_h = self.generate_person(gen.lib.Person.MALE,"Broken4",None)
person2_h = self.generate_person(gen.lib.Person.FEMALE,"Broken4","Family links to this person, but person does not link back")
fam = gen.lib.Family()
@ -424,9 +436,11 @@ class TestcaseGenerator(tool.BatchTool):
#person2 = self.db.get_person_from_handle(person2_h)
#person2.add_family_handle(fam_h)
#self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create two married people of same sex.
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person1_h = self.generate_person(gen.lib.Person.MALE,"Broken5",None)
person2_h = self.generate_person(gen.lib.Person.MALE,"Broken5",None)
fam = gen.lib.Family()
@ -440,9 +454,11 @@ class TestcaseGenerator(tool.BatchTool):
person2 = self.db.get_person_from_handle(person2_h)
person2.add_family_handle(fam_h)
self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create a family, that contains an invalid handle to for the father
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
#person1_h = self.generate_person(gen.lib.Person.MALE,"Broken6",None)
person2_h = self.generate_person(gen.lib.Person.FEMALE,"Broken6",None)
fam = gen.lib.Family()
@ -456,9 +472,11 @@ class TestcaseGenerator(tool.BatchTool):
person2 = self.db.get_person_from_handle(person2_h)
person2.add_family_handle(fam_h)
self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create a family, that contains an invalid handle to for the mother
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person1_h = self.generate_person(gen.lib.Person.MALE,"Broken7",None)
#person2_h = self.generate_person(gen.lib.Person.FEMALE,"Broken7",None)
fam = gen.lib.Family()
@ -472,10 +490,11 @@ class TestcaseGenerator(tool.BatchTool):
#person2 = self.db.get_person_from_handle(person2_h)
#person2.add_family_handle(fam_h)
#self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a family where the child does not link back to the family
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person1_h = self.generate_person(gen.lib.Person.MALE,"Broken8",None)
person2_h = self.generate_person(gen.lib.Person.FEMALE,"Broken8",None)
child_h = self.generate_person(None,"Broken8",None)
@ -497,9 +516,11 @@ class TestcaseGenerator(tool.BatchTool):
#child = self.db.get_person_from_handle(child_h)
#person2.add_parent_family_handle(fam_h)
#self.db.commit_person(child,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a family where the child is not linked, but the child links to the family
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person1_h = self.generate_person(gen.lib.Person.MALE,"Broken9",None)
person2_h = self.generate_person(gen.lib.Person.FEMALE,"Broken9",None)
child_h = self.generate_person(None,"Broken9",None)
@ -522,36 +543,44 @@ class TestcaseGenerator(tool.BatchTool):
child = self.db.get_person_from_handle(child_h)
child.add_parent_family_handle(fam_h)
self.db.commit_person(child,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person having a non existing birth event handle set
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person_h = self.generate_person(None,"Broken11",None)
person = self.db.get_person_from_handle(person_h)
event_ref = gen.lib.EventRef()
event_ref.set_reference_handle("InvalidHandle4")
person.set_birth_ref(event_ref)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person having a non existing death event handle set
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person_h = self.generate_person(None,"Broken12",None)
person = self.db.get_person_from_handle(person_h)
event_ref = gen.lib.EventRef()
event_ref.set_reference_handle("InvalidHandle5")
person.set_death_ref(event_ref)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person having a non existing event handle set
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person_h = self.generate_person(None,"Broken13",None)
person = self.db.get_person_from_handle(person_h)
event_ref = gen.lib.EventRef()
event_ref.set_reference_handle("InvalidHandle6")
person.add_event_ref(event_ref)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person with a birth event having an empty type
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person_h = self.generate_person(None,"Broken14",None)
event = gen.lib.Event()
event.set_type('')
@ -562,9 +591,11 @@ class TestcaseGenerator(tool.BatchTool):
person = self.db.get_person_from_handle(person_h)
person.set_birth_ref(event_ref)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person with a death event having an empty type
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person_h = self.generate_person(None,"Broken15",None)
event = gen.lib.Event()
event.set_description("Test for Broken15")
@ -574,9 +605,11 @@ class TestcaseGenerator(tool.BatchTool):
person = self.db.get_person_from_handle(person_h)
person.set_death_ref(event_ref)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person with an event having an empty type
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person_h = self.generate_person(None,"Broken16",None)
event = gen.lib.Event()
event.set_description("Test for Broken16")
@ -586,9 +619,11 @@ class TestcaseGenerator(tool.BatchTool):
person = self.db.get_person_from_handle(person_h)
person.add_event_ref(event_ref)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person with a birth event pointing to nonexisting place
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person_h = self.generate_person(None,"Broken17",None)
event = gen.lib.Event()
event.set_type(gen.lib.EventType.BIRTH)
@ -600,9 +635,11 @@ class TestcaseGenerator(tool.BatchTool):
person = self.db.get_person_from_handle(person_h)
person.set_birth_ref(event_ref)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person with an event pointing to nonexisting place
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
person_h = self.generate_person(None,"Broken18",None)
event = gen.lib.Event()
event.set_type(gen.lib.EventType.BIRTH)
@ -614,7 +651,6 @@ class TestcaseGenerator(tool.BatchTool):
person = self.db.get_person_from_handle(person_h)
person.add_event_ref(event_ref)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
def generate_person(self,gender=None,lastname=None, note=None, alive_in_year=None):
@ -624,8 +660,6 @@ class TestcaseGenerator(tool.BatchTool):
while gtk.events_pending():
gtk.main_iteration()
self.commit_transaction() # COMMIT TRANSACTION STEP
np = gen.lib.Person()
self.fill_object(np)
@ -641,7 +675,9 @@ class TestcaseGenerator(tool.BatchTool):
name = gen.lib.Name()
(firstname,lastname) = self.rand_name(lastname, gender)
name.set_first_name(firstname)
name.set_surname(lastname)
surname = gen.lib.Surname()
surname.set_surname(lastname)
name.add_surname(surname)
self.fill_object( name)
np.set_primary_name(name)
@ -651,17 +687,24 @@ class TestcaseGenerator(tool.BatchTool):
alt_name = gen.lib.Name(name)
self.fill_object( alt_name)
if randint(0,2) == 1:
alt_name.set_surname(self.rand_text(self.LASTNAME))
surname = gen.lib.Surname()
surname.set_surname(self.rand_text(self.LASTNAME))
alt_name.add_surname(surname)
elif randint(0,2) == 1:
alt_name.set_surname(lastname)
surname = gen.lib.Surname()
surname.set_surname(lastname)
alt_name.add_surname(surname)
if randint(0,1) == 1:
alt_name.set_first_name( firstname2)
if randint(0,1) == 1:
alt_name.set_title( self.rand_text(self.SHORT))
if randint(0,1) == 1:
alt_name.set_patronymic( self.rand_text(self.FIRSTNAME_MALE))
patronymic = gen.lib.Surname()
patronymic.set_surname( self.rand_text(self.FIRSTNAME_MALE))
patronymic.set_origintype(gen.lib.NameOriginType.PATRONYMIC)
alt_name.add_surname(patronymic)
if randint(0,1) == 1:
alt_name.set_surname_prefix( self.rand_text(self.SHORT))
alt_name.get_primary_surname().set_prefix( self.rand_text(self.SHORT))
if randint(0,1) == 1:
alt_name.set_suffix( self.rand_text(self.SHORT))
if randint(0,1) == 1:
@ -672,17 +715,24 @@ class TestcaseGenerator(tool.BatchTool):
alt_name = gen.lib.Name(name)
self.fill_object( alt_name)
if randint(0,2) == 1:
alt_name.set_surname(self.rand_text(self.LASTNAME))
surname = gen.lib.Surname()
surname.set_surname(self.rand_text(self.LASTNAME))
alt_name.add_surname(surname)
elif randint(0,2) == 1:
alt_name.set_surname(lastname)
surname = gen.lib.Surname()
surname.set_surname(lastname)
alt_name.add_surname(surname)
if randint(0,1) == 1:
alt_name.set_first_name( firstname2)
if randint(0,1) == 1:
alt_name.set_title( self.rand_text(self.SHORT))
if randint(0,1) == 1:
alt_name.set_patronymic( self.rand_text(self.FIRSTNAME_MALE))
patronymic = gen.lib.Surname()
patronymic.set_surname(self.rand_text(self.FIRSTNAME_MALE))
patronymic.set_origintype(gen.lib.NameOriginType.PATRONYMIC)
alt_name.add_surname(patronymic)
if randint(0,1) == 1:
alt_name.set_surname_prefix( self.rand_text(self.SHORT))
alt_name.get_primary_surname().set_prefix( self.rand_text(self.SHORT))
if randint(0,1) == 1:
alt_name.set_suffix( self.rand_text(self.SHORT))
if randint(0,1) == 1:
@ -754,8 +804,6 @@ class TestcaseGenerator(tool.BatchTool):
self.person_count = self.person_count+1
self.person_dates[person_handle] = (by,dy)
self.commit_transaction() # COMMIT TRANSACTION STEP
return( person_handle)
def generate_family(self,person1_h):
@ -790,6 +838,9 @@ class TestcaseGenerator(tool.BatchTool):
if person2_h and randint(0,2) > 0:
self.parents_todo.append(person2_h)
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
fam = gen.lib.Family()
self.add_defaults(fam)
if person1_h:
@ -830,7 +881,6 @@ class TestcaseGenerator(tool.BatchTool):
self.db.commit_person(child,self.trans)
if randint(0,3) > 0:
self.persons_todo.append(child_h)
self.commit_transaction() # COMMIT TRANSACTION STEP
def generate_parents(self,child_h):
if not child_h:
@ -856,6 +906,9 @@ class TestcaseGenerator(tool.BatchTool):
if randint(0,2) > 1:
self.parents_todo.append(person2_h)
with DbTxn(_("Testcase generator step %d") % self.transaction_count,
self.db) as self.trans:
self.transaction_count += 1
fam = gen.lib.Family()
self.add_defaults(fam)
fam.set_father_handle(person1_h)
@ -875,7 +928,6 @@ class TestcaseGenerator(tool.BatchTool):
self.db.commit_person(person2,self.trans)
child.add_parent_family_handle(fam_h)
self.db.commit_person(child,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
def add_defaults(self, object):
self.fill_object( object)
@ -1050,9 +1102,12 @@ class TestcaseGenerator(tool.BatchTool):
if randint(0,1) == 1:
o.set_title( self.rand_text(self.SHORT))
if randint(0,1) == 1:
o.set_patronymic( self.rand_text(self.FIRSTNAME_MALE))
patronymic = gen.lib.Surname()
patronymic.set_surname(self.rand_text(self.FIRSTNAME_MALE))
patronymic.set_origintype(gen.lib.NameOriginType.PATRONYMIC)
o.add_surname(patronymic)
if randint(0,1) == 1:
o.set_surname_prefix( self.rand_text(self.SHORT))
o.get_primary_surname().set_prefix( self.rand_text(self.SHORT))
if randint(0,1) == 1:
o.set_suffix( self.rand_text(self.SHORT))
if randint(0,1) == 1:
@ -1101,7 +1156,8 @@ class TestcaseGenerator(tool.BatchTool):
if randint(0,1) == 1:
o.set_gramps_id( self.rand_text(self.SHORT))
if randint(0,1) == 1:
o.set_marker( self.rand_type(gen.lib.MarkerType()))
#o.set_marker( self.rand_type(gen.lib.MarkerType()))
pass
if issubclass(o.__class__,gen.lib.privacybase.PrivacyBase):
o.set_privacy( randint(0,5) == 1)