Esempio n. 1
0
 def test_ack_jobxml(self):
     _response_type = u'ack'
     with session.begin():
         rs = self.job.recipesets[0]
         rs.nacked = RecipeSetResponse(type=_response_type)
     jobxml = XmlJob(xmltramp.parse(self.job.to_xml(clone=False).toprettyxml()))
     for xmlrecipeSet in jobxml.iter_recipeSets():
         response = xmlrecipeSet.get_xml_attr('response',unicode,None)
         self.assertEqual(response,_response_type)
Esempio n. 2
0
 def test_ack_jobxml(self):
     _response_type = u'ack'
     with session.begin():
         rs = self.job.recipesets[0]
         rs.nacked = RecipeSetResponse(type=_response_type)
     jobxml = XmlJob(
         xmltramp.parse(self.job.to_xml(clone=False).toprettyxml()))
     for xmlrecipeSet in jobxml.iter_recipeSets():
         response = xmlrecipeSet.get_xml_attr('response', unicode, None)
         self.assertEqual(response, _response_type)
Esempio n. 3
0
 def test_ack_jobxml_clone(self):
     """
     Unline test_ack_jobxml, we do _not_ want to see our response in here
     """
     _response_type = u'ack'
     with session.begin():
         rs = self.job.recipesets[0]
         rs.nacked = RecipeSetResponse(type=_response_type)
     jobxml = XmlJob(xmltramp.parse(self.job.to_xml(clone=True).toprettyxml()))
     for xmlrecipeSet in jobxml.iter_recipeSets():
         response = xmlrecipeSet.get_xml_attr('response',unicode,None)
         self.assertEqual(response,None)
Esempio n. 4
0
 def test_ack_jobxml_clone(self):
     """
     Unline test_ack_jobxml, we do _not_ want to see our response in here
     """
     _response_type = u'ack'
     with session.begin():
         rs = self.job.recipesets[0]
         rs.nacked = RecipeSetResponse(type=_response_type)
     jobxml = XmlJob(
         xmltramp.parse(self.job.to_xml(clone=True).toprettyxml()))
     for xmlrecipeSet in jobxml.iter_recipeSets():
         response = xmlrecipeSet.get_xml_attr('response', unicode, None)
         self.assertEqual(response, None)
Esempio n. 5
0
    def test_update_status_can_be_roundtripped_40214(self):
        complete_job_xml = pkg_resources.resource_string(
            'bkr.inttest', 'job_40214.xml')
        xmljob = XmlJob(xmltramp.parse(complete_job_xml))

        data_setup.create_tasks(xmljob)
        session.flush()

        # Import the job xml
        job = self.controller.process_xmljob(xmljob, self.user)
        session.flush()

        # Mark job waiting
        data_setup.mark_job_waiting(job)
        session.flush()

        # watchdog's should exist
        self.assertNotEqual(len(watchdogs_for_job(job)), 0)

        # Play back the original jobs results and status
        data_setup.playback_job_results(job, xmljob)
        session.flush()

        # Verify that the original status and results match
        self.assertEquals(TaskStatus.from_string(xmljob.wrappedEl('status')),
                          job.status)
        self.assertEquals(TaskResult.from_string(xmljob.wrappedEl('result')),
                          job.result)
        for i, recipeset in enumerate(xmljob.iter_recipeSets()):
            for j, recipe in enumerate(recipeset.iter_recipes()):
                self.assertEquals(
                    TaskStatus.from_string(recipe.wrappedEl('status')),
                    job.recipesets[i].recipes[j].status)
                self.assertEquals(
                    TaskResult.from_string(recipe.wrappedEl('result')),
                    job.recipesets[i].recipes[j].result)
                for k, task in enumerate(recipe.iter_tasks()):
                    self.assertEquals(
                        TaskStatus.from_string(task.status),
                        job.recipesets[i].recipes[j].tasks[k].status)
                    self.assertEquals(
                        TaskResult.from_string(task.result),
                        job.recipesets[i].recipes[j].tasks[k].result)

        # No watchdog's should exist when the job is complete
        self.assertEquals(len(watchdogs_for_job(job)), 0)
Esempio n. 6
0
    def test_update_status_can_be_roundtripped_40214(self):
        complete_job_xml = pkg_resources.resource_string('bkr.inttest', 'job_40214.xml')
        xmljob = XmlJob(xmltramp.parse(complete_job_xml))

        data_setup.create_tasks(xmljob)
        session.flush()
        
        # Import the job xml
        job = self.controller.process_xmljob(xmljob, self.user)
        session.flush()

        # Mark job waiting
        data_setup.mark_job_waiting(job)
        session.flush()

        # watchdog's should exist 
        self.assertNotEqual(len(watchdogs_for_job(job)), 0)

        # Play back the original jobs results and status
        data_setup.playback_job_results(job, xmljob)
        session.flush()
        
        # Verify that the original status and results match
        self.assertEquals(TaskStatus.from_string(xmljob.wrappedEl('status')), job.status)
        self.assertEquals(TaskResult.from_string(xmljob.wrappedEl('result')), job.result)
        for i, recipeset in enumerate(xmljob.iter_recipeSets()):
            for j, recipe in enumerate(recipeset.iter_recipes()):
                self.assertEquals(TaskStatus.from_string(recipe.wrappedEl('status')),
                        job.recipesets[i].recipes[j].status)
                self.assertEquals(TaskResult.from_string(recipe.wrappedEl('result')),
                        job.recipesets[i].recipes[j].result)
                for k, task in enumerate(recipe.iter_tasks()):
                    self.assertEquals(TaskStatus.from_string(task.status),
                            job.recipesets[i].recipes[j].tasks[k].status)
                    self.assertEquals(TaskResult.from_string(task.result),
                            job.recipesets[i].recipes[j].tasks[k].result)

        # No watchdog's should exist when the job is complete
        self.assertEquals(len(watchdogs_for_job(job)), 0)
Esempio n. 7
0
        job = Job(whiteboard=unicode(xmljob.whiteboard),
                  ttasks=0,
                  owner=owner,
                  group=group,
                  submitter=submitter)
        job.product = product
        job.retention_tag = tag
        email_validator = validators.Email(not_empty=True)
        for addr in set(xmljob.iter_cc()):
            try:
                job.cc.append(email_validator.to_python(addr))
            except Invalid, e:
                raise BX(
                    _('Invalid e-mail address %r in <cc/>: %s') %
                    (addr, str(e)))
        for xmlrecipeSet in xmljob.iter_recipeSets():
            recipe_set = self._handle_recipe_set(
                xmlrecipeSet, owner, ignore_missing_tasks=ignore_missing_tasks)
            job.recipesets.append(recipe_set)
            job.ttasks += recipe_set.ttasks

        if not job.recipesets:
            raise BX(
                _('No RecipeSets! You can not have a Job with no recipeSets!'))
        session.add(job)
        metrics.measure('counters.recipes_submitted',
                        len(list(job.all_recipes)))
        return job

    def _jobs(self, job, **kw):
        return_dict = {}
Esempio n. 8
0
            if group not in owner.groups:
                raise BX(_(u'User %s is not a member of group %s' % (owner.user_name, group.group_name)))
        job_retention = xmljob.get_xml_attr('retention_tag',unicode,None)
        job_product = xmljob.get_xml_attr('product',unicode,None)
        tag, product = self._process_job_tag_product(retention_tag=job_retention, product=job_product)
        job = Job(whiteboard=unicode(xmljob.whiteboard), ttasks=0, owner=owner,
            group=group, submitter=submitter)
        job.product = product
        job.retention_tag = tag
        email_validator = validators.Email(not_empty=True)
        for addr in set(xmljob.iter_cc()):
            try:
                job.cc.append(email_validator.to_python(addr))
            except Invalid, e:
                raise BX(_('Invalid e-mail address %r in <cc/>: %s') % (addr, str(e)))
        for xmlrecipeSet in xmljob.iter_recipeSets():
            recipe_set = self._handle_recipe_set(xmlrecipeSet, owner,
                    ignore_missing_tasks=ignore_missing_tasks)
            job.recipesets.append(recipe_set)
            job.ttasks += recipe_set.ttasks

        if not job.recipesets:
            raise BX(_('No RecipeSets! You can not have a Job with no recipeSets!'))
        session.add(job)
        metrics.measure('counters.recipes_submitted', len(list(job.all_recipes)))
        return job

    def _jobs(self,job,**kw):
        return_dict = {}
        # We can do a quick search, or a regular simple search. If we have done neither of these,
        # it will fall back to an advanced search and look in the 'jobsearch'