def extrair(self, **argumentos): arquivo_xml = argumentos.get('arquivo') xp = XpathParser() try: build = argumentos.get('build') xp.parser(arquivo_xml) lista = xp.content('//annotation-array/bug').items() for item in lista: key = item.get('key') try: checklist = Checklist.objects.get(build=build, key=key) except: checklist = Checklist() checklist.build = build checklist.message = item.get('message') checklist.priority = item.get('priority') checklist.key = key checklist.primary_line_number = item.get('primaryLineNumber') checklist.filename = item.get('fileName') checklist.module = item.get('moduleName') checklist.package = item.get('packageName') checklist.category = item.get('category') checklist.type_warning = item.get('type') checklist.save() except Exception, e: log(identifier=__name__, filename=arquivo_xml, message=e)
def extrair(self, **argumentos): arquivo_xml = argumentos.get('arquivo') xp = XpathParser() try: build = argumentos.get('build') xp.parser(arquivo_xml) ambientes = xp.content( '//hudson.plugins.ambiente.PromoteAmbienteAction/listaAmbienteVo/hudson.plugins.ambiente.AmbienteVo' ).items() for selo_ambiente in ambientes: timestamp = selo_ambiente.get('timestamp') numero_rs = selo_ambiente.get('numeroRs') try: ambiente = Ambiente.objects.get(build=build, timestamp=timestamp, numero_rs=numero_rs) except: ambiente = Ambiente() ambiente.build = build ambiente.numero_rs = numero_rs ambiente.timestamp = timestamp ambiente.mensagem = selo_ambiente.get('mensagem') ambiente.level = selo_ambiente.get('level') ambiente.level_value = selo_ambiente.get('levelValue') ambiente.user = util.Text().format_login( selo_ambiente.get('user')) ambiente.datetime = util.DateTime().timestamp_to_datetime( ambiente.timestamp) ambiente.save() except Exception, e: log(identifier=__name__, filename=arquivo_xml, message=e)
def test_raises_exeption_if_file_is_invalid_xml(self): filename = self.resources + '/invalid.xml' assert os.path.exists(filename) try: xp = XpathParser() xp.parser(filename) self.fail() #except libxml2.parserError: except: pass
def obter_vertical(self, **argumentos): arquivo_xml = argumentos.get('arquivo') xp = XpathParser() try: job = argumentos.get('job') xp.parser(arquivo_xml) xpath_str = '//listView/name[following-sibling::jobNames[descendant::string="%s"]]' % job.name views = xp.content(xpath_str).list() for v in views: if not v.strip()[0:4] == 'BSAD': return v except Exception, e: log(identifier=__name__, filename=arquivo_xml, message=e) return None
def _extrair_dados_bsra_services(self, build, arquivo_xml): xp = XpathParser() try: xp.parser(arquivo_xml) content = xp.content('//bsra/service').attributes() for data in content: bsra = Bsra() bsra.build = build bsra.nome = data.get('name') bsra.identificador = data.get('identify') bsra.tipo = data.get('type') bsra.reusabilidade = data.get('reusability') bsra.modulo = data.get('moduleName') bsra.registrado = data.get('registered') == 'true' bsra.save() except Exception, e: log(identifier=__name__, filename=arquivo_xml, message='Erro ao extrair dados do BSRA Services: %s' % e)
def extrair(self, **argumentos): arquivo_xml = argumentos.get('arquivo') xp = XpathParser() try: nome_do_job = argumentos.get('nome') xp.parser(arquivo_xml) job, criado = Job.objects.get_or_create(name=nome_do_job) job.disabled = xp.content('//project/disabled').text() job.jdk = xp.content('//project/jdk').text() job.save() usuarios = xp.content('//hudson.security.AuthorizationMatrixProperty/permission').list() job = self._job_com_usuarios(job, usuarios) return job except Exception, e: log(identifier=__name__, filename=arquivo_xml, message='Erro ao extrair dados do Job: %s' % e)
def _extrair_dados_bsra_warnings(self, build, arquivo_xml): xp = XpathParser() try: xp.parser(arquivo_xml) content = xp.content('//hudson.plugins.bsra.parser.Warning[descendant::message]').items() for item in content: data = util.Text().get_data_from_string(item.get('message')) bsra = Bsra() bsra.build = build bsra.nome = data.get('Nome') bsra.identificador = data.get('Identificador') bsra.tipo = data.get('Tipo') bsra.reusabilidade = data.get('Reusabilidade').replace('.', '') bsra.modulo = item.get('moduleName') bsra.registrado = False bsra.save() except Exception, e: log(identifier=__name__, filename=arquivo_xml, message='Erro ao extrair dados do BSRA Warnings: %s' % e)
def obter_framework(self, **argumentos): arquivo_xml = argumentos.get('arquivo') xp = XpathParser() try: job = argumentos.get('job') xp.parser(arquivo_xml) xpath_str = '//listView[descendant::name=" BSAD %s"]/jobNames/string' bsad1_jobs = xp.content(xpath_str % '1').list() bsad2_jobs = xp.content(xpath_str % '2').list() framework = 'BSAD 3' if job.name in bsad1_jobs: framework = 'BSAD 1' if job.name in bsad2_jobs: framework = 'BSAD 2' return framework except Exception, e: log(identifier=__name__, filename=arquivo_xml, message=e) return None
def extrair(self, **argumentos): arquivo_xml = argumentos.get('arquivo') xp = XpathParser() try: build = argumentos.get('build') xp.parser(arquivo_xml) data = xp.content('//hudson.plugins.javancss.JavaNCSSBuildIndividualReport/totals').items()[0] ncss = Ncss() ncss.build = build ncss.ncss = data.get('ncss') ncss.classes = data.get('classes') ncss.functions = data.get('functions') ncss.javadocs = data.get('javadocs') ncss.javadocs_lines = data.get('javadocLines') ncss.single_comments_line = data.get('singleCommentLines') ncss.multi_comments_line = data.get('multiCommentLines') ncss.save() except Exception, e: log(identifier=__name__, filename=arquivo_xml, message=e)
def _extrair_dados_bsra_warnings(self, build, arquivo_xml): xp = XpathParser() try: xp.parser(arquivo_xml) content = xp.content( '//hudson.plugins.bsra.parser.Warning[descendant::message]' ).items() for item in content: data = util.Text().get_data_from_string(item.get('message')) bsra = Bsra() bsra.build = build bsra.nome = data.get('Nome') bsra.identificador = data.get('Identificador') bsra.tipo = data.get('Tipo') bsra.reusabilidade = data.get('Reusabilidade').replace('.', '') bsra.modulo = item.get('moduleName') bsra.registrado = False bsra.save() except Exception, e: log(identifier=__name__, filename=arquivo_xml, message='Erro ao extrair dados do BSRA Warnings: %s' % e)
def extrair(self, **argumentos): arquivo_xml = argumentos.get('arquivo') xp = XpathParser() try: job = argumentos.get('job') build_name = argumentos.get('nome') xp.parser(arquivo_xml) build_number = xp.content('//build/number').text() try: build = Build.objects.get(job=job, number=build_number) except: build = Build() build.job = job build.name = build_name build.number = build_number build.result = xp.content('//build/result').text() build.description = xp.content('//build/description').text() build.charset = xp.content('//build/charset').text() build.built_on = xp.content('//build/builtOn').text() build.workspace = xp.content('//build/workspace').text() build.hudson_version = xp.content('//build/hudsonVersion').text() build.release_version = xp.content( '//hudson.plugins.release.ReleaseWrapper_-ReleaseBuildBadgeAction/releaseVersion' ).text() build.bsra_warnings = xp.content('//result/numberOfWarnings') datetime_util = util.DateTime() build.datetime = datetime_util.str_to_datetime(build_name) build.duration = datetime_util.ms_to_seconds( xp.content('//build/duration').text()) build.user = util.Text().format_login( xp.content('//hudson.model.Cause_-UserCause/authenticationName' ).text()) violations = xp.content('//violations/entry').concat( './string', './int') build.checkstyle_violations = violations.get('checkstyle') build.cpd_violations = violations.get('cpd') build.findbugs_violations = violations.get('findbugs') build.pmd_violations = violations.get('pmd') qualidade = xp.content( '//hudson.plugins.selo__qualidade.PromoteAction').items() if len(qualidade) > 0: selo_qualidade = qualidade[0] selo_qualidade = xp.content( '//hudson.plugins.selo__qualidade.PromoteAction').items( )[0] build.selo_qualidade_user = selo_qualidade.get('user') build.selo_qualidade_numeroRs = selo_qualidade.get('numeroRs') build.selo_qualidade_mensagem = selo_qualidade.get('mensagem') build.selo_qualidade_level = selo_qualidade.get('level') build.selo_qualidade_levelValue = selo_qualidade.get( 'levelValue') build.save() return build except Exception, e: log(identifier=__name__, filename=arquivo_xml, message=e)