예제 #1
0
 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
예제 #2
0
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()
예제 #3
0
    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}),
                  )
                )