def setUp(self): """Prepare model test fixture.""" try: new_attrs = {} new_attrs.update(self.attrs) new_attrs.update(self.do_get_dependencies()) self.obj = self.klass(**new_attrs) DBSession.add(self.obj) DBSession.flush() return self.obj except: DBSession.rollback() raise
def bootstrap(command, conf, vars): """Place any commands to setup testdays here""" # <websetup.bootstrap.before.auth # <websetup.bootstrap.after.auth> # event = db.Event('Power Management Testday', 'http://fedoraproject.org/wiki/Test_Day:2012-10-11_Power_Management') # c1 = db.Category('pm') # c2 = db.Category('tuned') # c3 = db.Category('other') t1 = db.Type('tc') t2 = db.Type('txt') # # DBSession.add(event) # DBSession.add(c1) # DBSession.add(c2) # DBSession.add(c3) DBSession.add(t1) DBSession.add(t2) # # event.categories = [c1, c2, c3] # # tc1 = db.Testcase('pm-suspendr', 'http://fedoraproject.org/wiki/QA:Testcase_Power_Management_pm_suspend', t1, c1) # tc2 = db.Testcase('pm-hibernate', 'http://fedoraproject.org/wiki/QA:Testcase_Power_Management_pm_hibernate', t1, c1) # tc3 = db.Testcase('pm-suspend-hybrid', 'http://fedoraproject.org/wiki/QA:Testcase_Power_Management_pm_suspend_hybrid', t1, c1) # tc4 = db.Testcase('pm-bugreport', 'http://fedoraproject.org/wiki/QA:Testcase_Power_Management_pm_bugreport', t1, c1) # tc5 = db.Testcase('pm-powersave', 'http://fedoraproject.org/wiki/QA:Testcase_Power_Management_pm_powersave', t1, c1) # # tc6 = db.Testcase('Tuned', 'http://fedoraproject.org/wiki/QA:Testcase_Power_Management_tuned_basic', t1, c2) # tc7 = db.Testcase('Tuned disabled idle', 'http://fedoraproject.org/wiki/QA:Testcase_Power_Management_tuned_off_idle', t2, c2) # tc8 = db.Testcase('Tuned powersave idle', 'http://fedoraproject.org/wiki/QA:Testcase_Power_Management_tuned_powersave_idle', t2, c2) # # tc9 = db.Testcase('Lid close', 'http://fedoraproject.org/wiki/QA:Testcase_Power_Management_Lid_Close', t1, c3) # tc10 = db.Testcase('Backlight control', 'http://fedoraproject.org/wiki/QA:Testcase_Power_Management_Backlight_Control', t1, c3) # # DBSession.add(tc1) # DBSession.add(tc2) # DBSession.add(tc3) # DBSession.add(tc4) # DBSession.add(tc5) # DBSession.add(tc6) # DBSession.add(tc7) # DBSession.add(tc8) # DBSession.add(tc9) # DBSession.add(tc10) # transaction.commit()
def process_update_testday(self, **kwargs): result, data = self._parse_wiki(kwargs['wikipage']) if result == False: redirect('update_testday', dict(msg = data)) # load testcase types from DB tc_types = {} q = DBSession.query(db.Type) q = q.filter(db.Type.name == 'txt') tc_types['txt'] = q.one() q = DBSession.query(db.Type) q = q.filter(db.Type.name == 'tc') tc_types['tc'] = q.one() # check whether the event already exists based on the event url q = DBSession.query(db.Event) q = q.filter(db.Event.url == data['url']) try: event = q.one() event.name = data['name'] event.config = kwargs['wikipage'] e_action = "updated" # status just for the output message except sqlalchemy.orm.exc.NoResultFound: # event with such url does not exist job_id = self.rdb.start_job(name = data['name']) if job_id < 1: redirect('update_testday', dict(msg = "Error during ResultsDB start_job")) event = db.Event(data['name'], data['url']) event.resultsdb_job = job_id event.created = datetime.datetime.utcnow() event.config = kwargs['wikipage'] e_action = "created" DBSession.add(event) # clear the old categories/testcases in DB for c in event.categories: for t in c.testcases: DBSession.delete(t) DBSession.delete(c) # create new categories/testcases in DB categories = [] for cat in data['categories']: c = db.Category(cat['name']) categories.append(c) DBSession.add(c) for tc in cat['testcases']: t = db.Testcase(tc['name'], tc['url'], tc_types[tc['type']], c) DBSession.add(t) event.categories = categories transaction.commit() DBSession.add(event) eid = event.id transaction.commit() redirect('update_testday', dict( msg = 'Event with id %s %s correctly.' % (eid, e_action), event_link = url('/show_event', params = {"event_id": eid}), ) )