From e38ef812891143cb4d28f42c7f83aa66537f9c99 Mon Sep 17 00:00:00 2001 From: Marcelo Linhares Castro Date: Wed, 13 Mar 2024 16:36:48 -0300 Subject: [PATCH] Ajustes Jenkins, Performance e Outros (#444) * Jobs Jenkins * Jobs Jenkins * Jobs Jenkins * Testes Com grupos e Ajustes Diversos para velocidade * Ajustes nos testes da 41 para melhorar velocidade e agrupar * Subindo pasta assets para o sei41 * Atualizando check alive para ser compativel com a 41 * Atualizando rotina Jenkins com novo formato do phpunit --- Makefile | 4 +- jenkins/01-Teste-Unico-ou-Grupo.groovy | 683 ++++++++++++++++++ jenkins/02-Teste-Todos-os-Grupos.groovy | 585 +++++++++++++++ .../03-Teste-Todos-os-Grupos-em-Serie.groovy | 104 +++ jenkins/{ => oldJobs}/01-Simples.groovy | 0 jenkins/{ => oldJobs}/02-TodasBases.groovy | 0 jenkins/{ => oldJobs}/03-TodasVersoes.groovy | 0 .../funcional/src/paginas/PaginaProcesso.php | 12 +- .../src/paginas/PaginaReciboTramite.php | 6 + ...mentoTipoProcessoDesativarReativarTest.php | 3 + .../MapeamentoTipoProcessoExcluirTest.php | 3 + .../MapeamentoTipoProcessoExportarTest.php | 3 + .../MapeamentoTipoProcessoReativarTest.php | 3 + ...ocessoRelacionamentoOrgaosCadastroTest.php | 3 + ...cionamentoOrgaosListagemImportacaoTest.php | 3 + ...cebimentoRecusaJustificativaGrandeTest.php | 10 +- ...TramiteProcessoAnexadoComDevolucaoTest.php | 2 + .../tests/TramiteProcessoAnexadoTest.php | 3 + .../TramiteProcessoComCancelamentoTest.php | 6 + ...teProcessoComDevolucaoAlteracaoURLTest.php | 6 +- ...teProcessoComDevolucaoAnexadoOutroTest.php | 3 + ...soComDevolucaoContendoOutroAnexadoTest.php | 3 + .../tests/TramiteProcessoComDevolucaoTest.php | 5 + ...ocessoComDevolucaoUnidadeDiferenteTest.php | 5 + ...ComDocumentoRestritoHipotesePadraoTest.php | 4 + ...ramiteProcessoComDocumentoRestritoTest.php | 4 + .../tests/TramiteProcessoComHistoricoTest.php | 4 + ...ontendoDocumentoBeSimpleCorrompidoTest.php | 5 + ...ntendoDocumentoCanceladoSemTamanhoTest.php | 3 + ...ProcessoContendoDocumentoCanceladoTest.php | 3 + ...ContendoDocumentoExternoMesmoOrgaoTest.php | 4 + ...ntendoDocumentoExternoParticionadoTest.php | 4 +- ...teProcessoContendoDocumentoExternoTest.php | 5 + ...oContendoDocumentoGeradoMesmoOrgaoTest.php | 4 + ...iteProcessoContendoDocumentoGeradoTest.php | 4 + ...ssoContendoDocumentoInternoExternoTest.php | 4 + ...ssoContendoDocumentoMovidoDestinoTest.php} | 7 +- ...ssoContendoDocumentoMovidoSemAnexoTest.php | 3 + ...iteProcessoContendoDocumentoMovidoTest.php | 3 + ...teProcessoContendoVariosDocumentosTest.php | 5 + ...ProcessoDocumentoNaoMapeadoDestinoTest.php | 4 + ...eProcessoDocumentoNaoMapeadoOrigemTest.php | 5 + ...amiteProcessoEmLoteComCancelamentoTest.php | 6 +- .../tests/TramiteProcessoEmLoteTest.php | 2 + ...eProcessoExtensaoNaoMapeadoDestinoTest.php | 5 + ...miteProcessoRestritoHipotesePadraoTest.php | 5 + .../tests/TramiteProcessoRestritoTest.php | 5 + ...eProcessoTamanhoAcimaLimiteDestinoTest.php | 7 +- .../TramiteProcessoValidacaoEnvioTest.php | 5 + ...ProcessosComDevolucaoAmbosAnexadosTest.php | 3 + ...teProcessosComDevolucoesEAnexacoesTest.php | 3 + ...TramiteRecebimentoDocumentoAnexadoTest.php | 10 +- .../TramiteRecebimentoDocumentoAvulsoTest.php | 6 +- ...eRecebimentoInteressadosDuplicadosTest.php | 12 +- ...ecebimentoMultiplosComponentesDigitais.php | 14 +- .../assets/arquivos/arquivo_pequeno.txt | 1 + .../assets/arquivos/arquivo_pequeno_A.pdf | Bin 0 -> 15058 bytes .../assets/arquivos/arquivo_pequeno_B.pdf | Bin 0 -> 21877 bytes .../assets/arquivos/arquivo_pequeno_C.pdf | Bin 0 -> 28696 bytes .../assets/arquivos/test_files_index.txt | 10 + .../funcional/src/paginas/PaginaProcesso.php | 12 +- .../src/paginas/PaginaReciboTramite.php | 6 + ...mentoTipoProcessoDesativarReativarTest.php | 3 + .../MapeamentoTipoProcessoExcluirTest.php | 3 + .../MapeamentoTipoProcessoExportarTest.php | 3 + .../MapeamentoTipoProcessoReativarTest.php | 3 + ...ocessoRelacionamentoOrgaosCadastroTest.php | 3 + ...cionamentoOrgaosListagemImportacaoTest.php | 3 + ...cebimentoRecusaJustificativaGrandeTest.php | 4 + ...TramiteProcessoAnexadoComDevolucaoTest.php | 2 + .../tests/TramiteProcessoAnexadoTest.php | 3 + .../TramiteProcessoComCancelamentoTest.php | 6 + ...teProcessoComDevolucaoAlteracaoURLTest.php | 6 +- ...teProcessoComDevolucaoAnexadoOutroTest.php | 3 + ...soComDevolucaoContendoOutroAnexadoTest.php | 3 + .../tests/TramiteProcessoComDevolucaoTest.php | 5 + ...ocessoComDevolucaoUnidadeDiferenteTest.php | 5 + ...ComDocumentoRestritoHipotesePadraoTest.php | 4 + ...ramiteProcessoComDocumentoRestritoTest.php | 4 + .../tests/TramiteProcessoComHistoricoTest.php | 4 + ...ontendoDocumentoBeSimpleCorrompidoTest.php | 5 + ...ntendoDocumentoCanceladoSemTamanhoTest.php | 3 + ...ProcessoContendoDocumentoCanceladoTest.php | 3 + ...ContendoDocumentoExternoMesmoOrgaoTest.php | 4 + ...ntendoDocumentoExternoParticionadoTest.php | 3 +- ...teProcessoContendoDocumentoExternoTest.php | 5 + ...oContendoDocumentoGeradoMesmoOrgaoTest.php | 4 + ...iteProcessoContendoDocumentoGeradoTest.php | 4 + ...ssoContendoDocumentoInternoExternoTest.php | 4 + ...ProcessoContendoDocumentoMovidoDestino.php | 5 + ...ssoContendoDocumentoMovidoSemAnexoTest.php | 3 + ...iteProcessoContendoDocumentoMovidoTest.php | 3 + ...teProcessoContendoVariosDocumentosTest.php | 5 + ...ProcessoDocumentoNaoMapeadoDestinoTest.php | 4 + ...eProcessoDocumentoNaoMapeadoOrigemTest.php | 4 + ...amiteProcessoEmLoteComCancelamentoTest.php | 6 +- .../tests/TramiteProcessoEmLoteTest.php | 2 + ...eProcessoExtensaoNaoMapeadoDestinoTest.php | 5 + ...miteProcessoRestritoHipotesePadraoTest.php | 5 + .../tests/TramiteProcessoRestritoTest.php | 5 + ...eProcessoTamanhoAcimaLimiteDestinoTest.php | 6 +- .../TramiteProcessoValidacaoEnvioTest.php | 5 + ...ProcessosComDevolucaoAmbosAnexadosTest.php | 3 + ...teProcessosComDevolucoesEAnexacoesTest.php | 3 + ...TramiteRecebimentoDocumentoAnexadoTest.php | 4 + .../TramiteRecebimentoDocumentoAvulsoTest.php | 4 + ...eRecebimentoInteressadosDuplicadosTest.php | 4 + ...ecebimentoMultiplosComponentesDigitais.php | 4 + 108 files changed, 1783 insertions(+), 41 deletions(-) create mode 100644 jenkins/01-Teste-Unico-ou-Grupo.groovy create mode 100644 jenkins/02-Teste-Todos-os-Grupos.groovy create mode 100644 jenkins/03-Teste-Todos-os-Grupos-em-Serie.groovy rename jenkins/{ => oldJobs}/01-Simples.groovy (100%) rename jenkins/{ => oldJobs}/02-TodasBases.groovy (100%) rename jenkins/{ => oldJobs}/03-TodasVersoes.groovy (100%) rename tests_sei4/funcional/tests/{TramiteProcessoContendoDocumentoMovidoDestino.php => TramiteProcessoContendoDocumentoMovidoDestinoTest.php} (99%) create mode 100755 tests_sei41/funcional/assets/arquivos/arquivo_pequeno.txt create mode 100755 tests_sei41/funcional/assets/arquivos/arquivo_pequeno_A.pdf create mode 100755 tests_sei41/funcional/assets/arquivos/arquivo_pequeno_B.pdf create mode 100755 tests_sei41/funcional/assets/arquivos/arquivo_pequeno_C.pdf create mode 100755 tests_sei41/funcional/assets/arquivos/test_files_index.txt diff --git a/Makefile b/Makefile index d5e53b86f..a5552fed0 100755 --- a/Makefile +++ b/Makefile @@ -42,8 +42,8 @@ CMD_INSTALACAO_SIP_MODULO = echo -ne '$(SIP_DATABASE_USER)\n$(SIP_DATABASE_PASSW CMD_COMPOSE_UNIT = $(CMD_DOCKER_COMPOSE) -f $(PEN_TEST_UNIT)/docker-compose.yml --env-file $(PEN_TEST_UNIT)/.env CMD_COMPOSE_FUNC = $(CMD_DOCKER_COMPOSE) -f $(PEN_TEST_FUNC)/docker-compose.yml --env-file $(PEN_TEST_FUNC)/.env CMD_COMPOSE_FUNC_EXEC = $(CMD_COMPOSE_FUNC) exec -T -CMD_CURL_LOGIN_ORG1 = $(CMD_COMPOSE_FUNC_EXEC) org1-http bash -c 'curl -s -L $${HOST_URL:-$$SEI_HOST_URL}/sei | grep -q ""' -CMD_CURL_LOGIN_ORG2 = $(CMD_COMPOSE_FUNC_EXEC) org2-http bash -c 'curl -s -L $${HOST_URL:-$$SEI_HOST_URL}/sei | grep -q ""' +CMD_CURL_LOGIN_ORG1 = $(CMD_COMPOSE_FUNC_EXEC) org1-http bash -c 'curl -s -L $${HOST_URL:-$$SEI_HOST_URL}/sei | grep -q "input.*txtUsuario.*"' +CMD_CURL_LOGIN_ORG2 = $(CMD_COMPOSE_FUNC_EXEC) org2-http bash -c 'curl -s -L $${HOST_URL:-$$SEI_HOST_URL}/sei | grep -q "input.*txtUsuario.*"' FILE_VENDOR_FUNCIONAL = $(PEN_TEST_FUNC)/vendor/bin/phpunit FILE_VENDOR_UNITARIO = $(PEN_TEST_UNIT)/vendor/bin/phpunit diff --git a/jenkins/01-Teste-Unico-ou-Grupo.groovy b/jenkins/01-Teste-Unico-ou-Grupo.groovy new file mode 100644 index 000000000..7caba210d --- /dev/null +++ b/jenkins/01-Teste-Unico-ou-Grupo.groovy @@ -0,0 +1,683 @@ +\/* + +Usuario jenkins precisa ter permissao de sudo +Jenkins minimo em 2.332 +criar secrets: +- credentialGitSpe +- org1CertSecret - secret file no jenkins com o cert all em formato pem para o orgao 1 +- org2CertSecret - secret file no jenkins com o cert all em formato pem para o orgao 2 +Obrigatorio que ele seja cadastrado no jenkins como um projeto apontando para um repo git +Nao subir direto o script no jenkins pois ele precisa do checkout inicial do repo +Nao rode ao mesmo tempo duas instancias da execucao no mesmo agente jenkins, +pois o projeto mod-sei-pen n suporta isso + +Setar os agentes com a label MOD-SEI-PEN e colocar a qtd de alocadores apenas em 1 +(para negar mais de um mesmo job ao mesmo tempo no mesmo agente, caso contrario um anula o outro) +O job 02 vai paralelizar esse job aqui portanto cd instancia deve executar em agentes separadas +e cada instancia deve usar orgas diferentes apontando para o barramento +*/ + +pipeline { + agent { + node{ + label "MOD-SEI-PEN" + } + } + + parameters { + string( + name: 'versaoModulo', + defaultValue:"master", + description: "branch/versao do modulo a executar os testes") + choice( + name: 'database', + choices: "mysql\noracle\nsqlserver", + description: 'Qual o banco de dados' ) + string( + name: 'urlGitSpe', + defaultValue:"github.com:supergovbr/super.git", + description: "Url do git onde encontra-se o Sistema de Processo Eletrônico a instalar o modulo") + string( + name: 'credentialGitSpe', + defaultValue:"gitcredsuper", + description: "Jenkins Credencial do git onde encontra-se o Spe") + string( + name: 'branchGitSpe', + defaultValue:"4.0.3", + description: "Branch/Tag do git onde encontra-se o Spe") + string( + name: 'folderSpe', + defaultValue:"/home/jenkins/spe", + description: "Pasta onde vai clonar o SPE") + choice( + name: 'sistema', + choices: "sei4\nsei41\nsei3\nsuper", + description: 'Qual o Sistema de Processo Eletrônico será utilizado nos testes?' ) + string( + name: 'folderModulo', + defaultValue:"/home/jenkins/modulomodseipen", + description: "Pasta onde vai copiar o modulo depois de clonado e rodar o make a partir dela. Necessario para n travar exec pois o compose ainda usa root") + booleanParam( + defaultValue: false, + name: 'bolFolderModuloDelete', + description: 'Deleta a pasta do módulo anterior. Limpa o cache do phpunit vendor e os arquivos temporarios. Aumenta o tempo de execucao') + string( + name: 'org1CertSecret', + defaultValue:"credModSeiPenOrg1Cert", + description: "Certificado de conexao ao tramita do orgao 1") + string( + name: 'passCertOrg1', + defaultValue:"VLnYTwTSXdvU83sS", + description: "Password do certificado de conexao ao tramita do orgao 1") + string( + name: 'org2CertSecret', + defaultValue:"credModSeiPenOrg2Cert", + description: "Certificado de conexao ao tramita do orgao 2") + string( + name: 'passCertOrg2', + defaultValue:"LUisD2wEtpDc6cIj", + description: "Password do certificado de conexao ao tramita do orgao 2") + string( + name: 'testParallel', + defaultValue:"3", + description: "Quantos processos simultaneos") + string( + name: 'testRetryCount', + defaultValue:"5", + description: "Quantas vezes deve repetir o teste caso o mesmo falhe") + string( + name: 'CONTEXTO_ORGAO_A_NUMERO_SEI', + defaultValue:"951") + string( + name: 'CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS', + defaultValue:"1") + string( + name: 'CONTEXTO_ORGAO_A_REP_ESTRUTURAS', + defaultValue:"Poder Executivo Federal") + string( + name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA', + defaultValue:"307") + string( + name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA', + defaultValue:"STF / PJ") + string( + name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE', + defaultValue:"Supremo Tribunal Federal") + string( + name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA', + defaultValue:"318") + string( + name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA', + defaultValue:"Edital") + string( + name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA', + defaultValue:"ED") + string( + name: 'CONTEXTO_ORGAO_B_NUMERO_SEI', + defaultValue:"159") + string( + name: 'CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS', + defaultValue:"1") + string( + name: 'CONTEXTO_ORGAO_B_REP_ESTRUTURAS', + defaultValue:"Poder Executivo Federal") + string( + name: 'CONTEXTO_ORGAO_B_ID_ESTRUTURA', + defaultValue:"79116") + string( + name: 'CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA', + defaultValue:"PRODASEN") + string( + name: 'CONTEXTO_ORGAO_B_NOME_UNIDADE', + defaultValue:"Prodasen") + choice( + name: 'grupos_executar', + choices: "execute_without_receiving+execute_parallel_with_two_group1\nexecute_parallel_group1+execute_parallel_group3\nexecute_parallel_group2+execute_alone_group1\nexecute_alone_group2\nexecute_alone_group3\nexecute_alone_group4\nexecute_alone_group5\nexecute_alone_group6", + description: 'Selecione os grupos de testes a executar' ) + text( + name: 'testes', + defaultValue:"", + description: "Passe aqui os testes para rodar em uma nova suite. Caso em branco vai rodar o grupo selecionado acima. Passe em cada linha no seguinte formato: tests/RecebimentoRecusaJustificativaGrandeTest.php\ntests/TramiteProcessoComDevolucaoTest.php") + + } + + stages { + + stage('Inicializar'){ + + steps { + + script{ + DATABASE = params.database + GITURL = params.urlGitSpe + GITCRED = params.credentialGitSpe + GITBRANCH = params.branchGitSpe + + VERSAOMODULO = params.versaoModulo + + FOLDERSPE = params.folderSpe + SISTEMA = params.sistema + FOLDERMODULO = params.folderModulo + BOLFOLDERMODULODEL = params.bolFolderModuloDelete + ORG1_CERT = params.org1CertSecret + ORG1_CERT_PASS= params.passCertOrg1 + ORG2_CERT = params.org2CertSecret + ORG2_CERT_PASS= params.passCertOrg2 + + TESTE_PARALLEL = params.testParallel + TEST_RETRY_COUNT = params.testRetryCount + + CONTEXTO_ORGAO_A_NUMERO_SEI = params.CONTEXTO_ORGAO_A_NUMERO_SEI + CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS = params.CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS + CONTEXTO_ORGAO_A_REP_ESTRUTURAS = params.CONTEXTO_ORGAO_A_REP_ESTRUTURAS + CONTEXTO_ORGAO_A_ID_ESTRUTURA = params.CONTEXTO_ORGAO_A_ID_ESTRUTURA + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA = params.CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA + CONTEXTO_ORGAO_A_NOME_UNIDADE = params.CONTEXTO_ORGAO_A_NOME_UNIDADE + CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA = params.CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA + CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA = params.CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA = params.CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA + CONTEXTO_ORGAO_B_NUMERO_SEI = params.CONTEXTO_ORGAO_B_NUMERO_SEI + CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS = params.CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS + CONTEXTO_ORGAO_B_REP_ESTRUTURAS = params.CONTEXTO_ORGAO_B_REP_ESTRUTURAS + CONTEXTO_ORGAO_B_ID_ESTRUTURA = params.CONTEXTO_ORGAO_B_ID_ESTRUTURA + CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA = params.CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA + CONTEXTO_ORGAO_B_NOME_UNIDADE = params.CONTEXTO_ORGAO_B_NOME_UNIDADE + + FOLDER_FUNCIONAIS = "tests_${SISTEMA}/funcional" + + GRUPOS_SELECIONADOS = params.grupos_executar + TESTES = "" + if(params.testes){ + testesarray = params.testes.split("\n") + for (i=0; i< testesarray.length; i++){ + TESTES += "" + testesarray[i] + "" + } + } + + if ( env.BUILD_NUMBER == '1' ){ + currentBuild.result = 'ABORTED' + warning('Informe os valores de parametro iniciais. Caso eles n tenham aparecido faça login novamente') + } + } + + script { + s = "${SISTEMA}: ${GITBRANCH} / ${DATABASE} / Mod: ${VERSAOMODULO} Executed @ ${NODE_NAME}" + if (TESTES == ''){ + s = s + " Grupos: ${GRUPOS_SELECIONADOS}" + } + } + //buildName "${SISTEMA}: ${GITBRANCH} / ${DATABASE} / Mod: ${VERSAOMODULO}" + buildDescription s + + sh """ + ifconfig || true + if [ -f ${FOLDERMODULO}/Makefile ]; then + make destroy || true + fi + + mkdir -p ${FOLDERMODULO} + sudo chown -R jenkins ${FOLDERMODULO} || true + sudo chmod +w -R ${FOLDERMODULO} || true + + if [ "${BOLFOLDERMODULODEL}" = "true" ]; then + rm -rf ${FOLDERMODULO} + mkdir -p ${FOLDERMODULO} + fi + """ + + dir("${FOLDERSPE}"){ + + sh """ + sudo rm -rf ${FOLDERSPE}/* || true + + git config --global http.sslVerify false + """ + + git branch: 'main', + credentialsId: GITCRED, + url: GITURL + + sh """ + git checkout ${GITBRANCH} + ls -l + + if [ -f ${FOLDERSPE}/src/sei/web/SEI.php ]; then + rm -rf sei sip infra + mv src/sei src/sip src/infra . + fi + """ + + } + + } + } + + stage('Checkout Modulo'){ + + steps { + + sh """ + git config --global http.sslVerify false + """ + + git branch: 'master', + //credentialsId: GITCRED, + url: "https://github.com/supergovbr/mod-sei-pen" + + sh """ + git checkout ${VERSAOMODULO} + git pull || true + ls -l + """ + + sh """ + ifconfig || true + if [ -f ${FOLDERMODULO}/Makefile ]; then + cd ${FOLDERMODULO} + make destroy || true + cd - + fi + + mkdir -p ${FOLDERMODULO} + sudo chown -R jenkins ${FOLDERMODULO} || true + sudo chmod +w -R ${FOLDERMODULO} || true + + if [ "${BOLFOLDERMODULODEL}" = "true" ]; then + sudo rm -rf ${FOLDERMODULO} + sudo mkdir -p ${FOLDERMODULO} + fi + + sudo \\cp -R * ${FOLDERMODULO} + sudo chown -R jenkins ${FOLDERMODULO} || true + sudo chmod +w -R ${FOLDERMODULO} || true + + """ + + dir("${FOLDERMODULO}"){ + + withCredentials([file(credentialsId: "${ORG1_CERT}", variable: 'ORG1CERT'), + file(credentialsId: "${ORG2_CERT}", variable: 'ORG2CERT')]) { + sh "cp \$ORG1CERT ${FOLDER_FUNCIONAIS}/assets/config/certificado_org1.pem" + sh "cp \$ORG2CERT ${FOLDER_FUNCIONAIS}/assets/config/certificado_org2.pem" + } + + sh script: """ + make destroy || true + + sudo chmod +r ${FOLDER_FUNCIONAIS}/assets/config/certificado_org1.pem + sudo chmod +r ${FOLDER_FUNCIONAIS}/assets/config/certificado_org2.pem + sudo rm -rf ${FOLDERSPE}/sei/config/mod-pen + sudo rm -rf ${FOLDERSPE}/sei/scripts/mod-pen + sudo rm -rf ${FOLDERSPE}/sei/web/modulos/pen + sudo rm -rf ${FOLDERSPE}/sip/config/mod-pen + sudo rm -rf ${FOLDERSPE}/sei/scripts/mod-pen + sudo rm -rf ${FOLDERSPE}/sei/config/ConfiguracaoSEI.php* + sudo rm -rf ${FOLDERSPE}/sip/config/ConfiguracaoSip.php* + + """, label: "Destroi ambiente e Remove Antigos" + + } + + } + } + + stage('Subir Sistema - Instalar Modulo'){ + + steps { + retry(3){ + dir("${FOLDERMODULO}"){ + sh script: """#!/bin/bash + + make destroy || true + sed -i "s|sistema=.*|sistema=${SISTEMA}|g" Makefile + sed -i "s|PARALLEL_TEST_NODES =.*|PARALLEL_TEST_NODES = ${TESTE_PARALLEL}|g" Makefile + rm -rf ${FOLDER_FUNCIONAIS}/.env + \\cp ${FOLDER_FUNCIONAIS}/env_${DATABASE} ${FOLDER_FUNCIONAIS}/.env + sed -i "s|SEI_PATH=.*|SEI_PATH=${FOLDERSPE}|g" ${FOLDER_FUNCIONAIS}/.env + sed -i "s|ORG1_CERTIFICADO_SENHA=.*|ORG1_CERTIFICADO_SENHA=$ORG1_CERT_PASS|g" ${FOLDER_FUNCIONAIS}/.env + sed -i "s|ORG2_CERTIFICADO_SENHA=.*|ORG2_CERTIFICADO_SENHA=$ORG2_CERT_PASS|g" ${FOLDER_FUNCIONAIS}/.env + + \\cp tests_sei4/funcional/phpunit.xml ${FOLDER_FUNCIONAIS}/phpunit.xml || true + + #sed -i "s|.*PEN_WAIT_TIMEOUT\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*PEN_WAIT_TIMEOUT_ARQUIVOS_GRANDES\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + + sed -i "s|.*CONTEXTO_ORGAO_A_NUMERO_SEI\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_A_SIGLA_UNIDADE\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_A_REP_ESTRUTURAS\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_A_ID_ESTRUTURA\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_A_NOME_UNIDADE\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + + sed -i "s|.*CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + + sed -i "s|.*CONTEXTO_ORGAO_B_NUMERO_SEI\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_B_REP_ESTRUTURAS\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_B_SIGLA_UNIDADE\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_B_ID_ESTRUTURA\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s|.*CONTEXTO_ORGAO_B_NOME_UNIDADE\\".*||g" ${FOLDER_FUNCIONAIS}/phpunit.xml + + sed -i "s/\\[INFORME A SIGLA DE ESTRUTURA UTILIZADO PARA TESTE ORG1\\]//g" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "s/\\[INFORME A SIGLA DE ESTRUTURA UTILIZADO PARA TESTE ORG2\\]//g" ${FOLDER_FUNCIONAIS}/phpunit.xml + + sed -i "/INFORME O ID DE ESTRUTURA UTILIZADO PARA TESTE ORG1/d" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "/INFORME O NOME DA ESTRUTURA UTILIZADO PARA TESTE ORG1/d" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "/INFORME O ID DE ESTRUTURA UTILIZADO PARA TESTE ORG 1.11/d" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "/INFORME O NOME DA ESTRUTURA UTILIZADO PARA TESTE ORG 1.1/d" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "/INFORME O ID DE ESTRUTURA UTILIZADO PARA TESTE ORG 2/d" ${FOLDER_FUNCIONAIS}/phpunit.xml + sed -i "/INFORME O NOME DA ESTRUTURA UTILIZADO PARA TESTE ORG 2/d" ${FOLDER_FUNCIONAIS}/phpunit.xml + + + cp ${FOLDER_FUNCIONAIS}/phpunit.xml phpunitoriginal.xml + + + make destroy + make up + + # apenas teste, lembrar de retirar ao final + sleep 5 + make check-isalive + + echo "" + echo "Vamos instalar o modulo. A saida n sera mostrada aqui. Apenas se houver erro..." + set +e + make install 2>&1 > tempinstall.txt + es=\$? + set -e + if [ "\$es" = "0" ]; then + echo "Instalado sem erro" + else + cat tempinstall.txt + exit 1 + fi + rm -rf tempinstall.txt + + # apenas teste, lembrar de retirar ao final + docker-compose -f tests_${SISTEMA}/funcional/docker-compose.yml --env-file tests_${SISTEMA}/funcional/.env exec org1-http bash -c "> /etc/cron.d/sei; > /etc/cron.d/sip" + docker-compose -f tests_${SISTEMA}/funcional/docker-compose.yml --env-file tests_${SISTEMA}/funcional/.env exec org2-http bash -c "> /etc/cron.d/sei; > /etc/cron.d/sip" + + pwd + """, label: "Configura sobe ambiente e instala modulo" + + script{ + if(TESTES){ + sh """ + cp phpunitoriginal.xml phpunitsubstituir.xml + sed -i "s||${TESTES}|g" phpunitsubstituir.xml + cp phpunitsubstituir.xml ${FOLDER_FUNCIONAIS}/phpunit.xml + + sed -i "s|TEST_SUIT = funcional.*|TEST_SUIT = rodarnovamente|g" Makefile + """ + } + } + } + } + + } + } + + + stage('Testes Unitarios'){ + + steps{ + dir("${FOLDERMODULO}"){ + sh script: """ + + make test-unit + + """, label: "Roda as Suites de Testes Unitarios" + } + } + + } + + + stage('Rodar Testes Funcionais'){ + + + parallel { + + stage('Funcionais') { + steps { + dir("${FOLDERMODULO}"){ + + script{ + + sh "rm -rf resultado_todos.txt monitoramento_liberado.ok;" + + GRUPOS = [ "execute_without_receiving", "execute_parallel_group1", "execute_parallel_group2", "execute_parallel_group3", "execute_parallel_with_two_group1", "execute_alone_group1", "execute_alone_group2", "execute_alone_group3", "execute_alone_group4", "execute_alone_group5", "execute_alone_group6",] + if (GRUPOS_SELECIONADOS == "execute_without_receiving+execute_parallel_with_two_group1"){ + GRUPOS = [ "execute_without_receiving", "execute_parallel_with_two_group1" ] + } + if (GRUPOS_SELECIONADOS == "execute_parallel_group1+execute_parallel_group3"){ + GRUPOS = [ "execute_parallel_group1", "execute_parallel_group3"] + } + if (GRUPOS_SELECIONADOS == "execute_parallel_group2+execute_alone_group1"){ + GRUPOS = [ "execute_parallel_group2", "execute_alone_group1"] + } + if (GRUPOS_SELECIONADOS == "execute_alone_group2"){ + GRUPOS = [ "execute_alone_group2" ] + } + if (GRUPOS_SELECIONADOS == "execute_alone_group3"){ + GRUPOS = [ "execute_alone_group3" ] + } + if (GRUPOS_SELECIONADOS == "execute_alone_group4"){ + GRUPOS = [ "execute_alone_group4" ] + } + if (GRUPOS_SELECIONADOS == "execute_alone_group5"){ + GRUPOS = [ "execute_alone_group5" ] + } + if (GRUPOS_SELECIONADOS == "execute_alone_group6"){ + GRUPOS = [ "execute_alone_group6" ] + } + + if (TESTES) { + GRUPOS = [""] + } + + for (G in GRUPOS){ + + if (G == ""){ SUITE = "TEST_SUIT=rodarnovamente" } else { SUITE = "TEST_SUIT=funcional" } + + TEST_GROUP_INCLUIR = "" + + if(G != ""){ + TEST_GROUP_INCLUIR = """TEST_GROUP_INCLUIR="--group ${G} --verbose=1" """ + } + if(G == 'execute_without_receiving' || G == 'execute_alone_group1' || G == 'execute_alone_group2' || G == 'execute_alone_group3' || G == 'execute_alone_group4' || G == 'execute_alone_group5' || G == 'execute_alone_group6'){ + sh """ sed -i "s|PARALLEL_TEST_NODES =.*|PARALLEL_TEST_NODES = 1|g" Makefile """ + + }else if(G == 'execute_parallel_with_two_group1'){ + sh """ sed -i "s|PARALLEL_TEST_NODES =.*|PARALLEL_TEST_NODES = 2|g" Makefile """ + }else{ + sh """ sed -i "s|PARALLEL_TEST_NODES =.*|PARALLEL_TEST_NODES = ${TESTE_PARALLEL}|g" Makefile """ + } + + if(G != "execute_without_receiving"){ + sh "touch monitoramento_liberado.ok;" + }else{ + sh "rm -rf monitoramento_liberado.ok;" + } + + timestamps { + + sh script: """#!/bin/bash + + + + EXECUTAR_TESTES="true" + ERRCOUNT=0 + SUITE_ATUAL=${SUITE} + + while [ "\$EXECUTAR_TESTES" = "true" ]; do + + EXECUTAR_TESTES="false" + rm -rf resultado.txt + + set -o pipefail + set +e + echo "Executando Testes Funcionais..." + RESULTMAKE=\$? + make \$SUITE_ATUAL ${TEST_GROUP_INCLUIR} test-functional-parallel | tee resultado.txt + RESULTMAKE=\$? + set -e + set +o pipefail + + cat resultado.txt >> resultado_todos.txt + + grep -o -E "[0-9]\\) .*::" resultado.txt | sed "s|::||g" | cut -d\\ -f2 | uniq > rodarnovamente.txt + + s="" + for t in \$(cat rodarnovamente.txt); do + + s="\$stests/\$t.php" + + done + + if [ ! "\$s" = "" ]; then + + ERRCOUNT=\$((ERRCOUNT+1)) + if [ \$ERRCOUNT -le ${TEST_RETRY_COUNT} ]; then + EXECUTAR_TESTES="true" + + cp phpunitoriginal.xml phpunitsubstituir.xml + sed -i "s||\$s|g" phpunitsubstituir.xml + cp phpunitsubstituir.xml ${FOLDER_FUNCIONAIS}/phpunit.xml + + SUITE_ATUAL="TEST_SUIT=rodarnovamente" + + + fi + else + rm -rf rodarnovamente.txt + fi + + + done + + if [ -f "rodarnovamente.txt" ]; then + exit 1 + + fi; + + if [ ! "\$RESULTMAKE" = "0" ]; then + #vamos tentar achar erro + if [ "\$s" = "" ]; then + set +e + grep "OK" resultado.txt + RESULTMAKE=\$? + set -e + if [ ! "\$RESULTMAKE" = "0" ]; then + exit 1 + fi + + else + exit 1 + fi + + fi; + + + """, label: "Roda as Suites de Testes Funcionais" + + } + + + + } + + + + + + } // script + + + } + + + } + post { + + failure { + dir("${FOLDERMODULO}"){ + sh script: """ + cat rodarnovamente.txt; + """, label: "Testes que falharam" + + sh script: """ + cat resultado.txt; + """, label: "Stack de Erros do PHPUNIT" + } + } + + always { + dir("${FOLDERMODULO}"){ + sh """ + sleep 30; + touch testesfinalizados.ok + cat resultado_todos.txt + """ + + } + } + } + + } + stage('Recebimento de Processos') { + steps { + dir("${FOLDERMODULO}"){ + sh script: """ + while [ ! -f testesfinalizados.ok ] + do + while [ ! -f monitoramento_liberado.ok ] + do + echo "Aguardando liberação para monitoramento" + sleep 10 + + if [ -f testesfinalizados.ok ]; then + exit 0 + fi; + + done + + sleep 2 + make tramitar-pendencias-simples || true + done + """, label: "Tramitar Pendencias" + } + } + post { + always { + dir("${FOLDERMODULO}"){ + sh "rm testesfinalizados.ok" + } + } + } + } + + } + + } + + } + post { + always { + dir("${FOLDERMODULO}"){ + sh script: """ + rm -rf testesfinalizados.ok + #sudo chown -R root:jenkins ${FOLDER_FUNCIONAIS}/assets/cron.d + make destroy || true + #sudo chown -R root:jenkins ${FOLDER_FUNCIONAIS}/assets/cron.d + """, label: "Destroi Ambiente" + } + } + } +} diff --git a/jenkins/02-Teste-Todos-os-Grupos.groovy b/jenkins/02-Teste-Todos-os-Grupos.groovy new file mode 100644 index 000000000..365be5f3a --- /dev/null +++ b/jenkins/02-Teste-Todos-os-Grupos.groovy @@ -0,0 +1,585 @@ +/* + +Usuario jenkins precisa ter permissao de sudo +Jenkins minimo em 2.332 +usa o pipeline utility plugin + +chama o job 01 de forma serializada +crie as credenciais instanciamysql, instanciasqlserver e oracle de acordo com o +modelo na pasta jenkins/assets + +*/ + +pipeline { + agent { + node{ + label "master" + } + } + + options { + disableConcurrentBuilds() + } + + parameters { + + string( + name: 'versaoModulo', + defaultValue:"master", + description: "Branch/Tag do git onde encontra-se o Modulo") + string( + name: 'branchGitSpe', + defaultValue:"4.0.11", + description: "Branch/Tag do git onde encontra-se o Sistema") + choice( + name: 'sistema', + choices: "sei4\nsei3\nsuper", + description: 'Qual o Sistema de Processo Eletrônico será utilizado nos testes?' ) + choice( + name: 'database', + choices: "mysql\noracle\nsqlserver", + description: 'Qual o banco de dados' ) + + + } + + stages { + + + + stage("Preparar execucao"){ + + steps{ + + + script{ + + if ( env.BUILD_NUMBER == '1' ){ + currentBuild.result = 'ABORTED' + warning('Informe os valores de parametro iniciais. Caso eles n tenham aparecido faça login novamente') + } + + BRANCHGITSPE = params.branchGitSpe + SISTEMA = params.sistema + VERSAOMODULO = params.versaoModulo + DATABASE = params.database + + withCredentials([file(credentialsId: "instanciamysql", variable: 'INSTANCIA_MYSQL'), + file(credentialsId: "instanciasqlserver", variable: 'INSTANCIA_SQLSERVER'), + file(credentialsId: "instanciaoracle", variable: 'INSTANCIA_ORACLE'), + file(credentialsId: "instanciaorgao7_8.txt", variable: 'INSTANCIA_ORGAO7_8'), + file(credentialsId: "instanciaorgao9_10.txt", variable: 'INSTANCIA_ORGAO9_10'), + file(credentialsId: "instanciaorgao11_12.txt", variable: 'INSTANCIA_ORGAO11_12'), + file(credentialsId: "instanciaorgao13_14.txt", variable: 'INSTANCIA_ORGAO13_14'), + file(credentialsId: "instanciaorgao15_16.txt", variable: 'INSTANCIA_ORGAO15_16'), + ]) { + sh "cp \$INSTANCIA_MYSQL instanciamysql.props" + sh "cp \$INSTANCIA_SQLSERVER instanciasqlserver.props" + sh "cp \$INSTANCIA_ORACLE instanciaoracle.props" + sh "cp \$INSTANCIA_ORGAO7_8 instanciaorgao7_8.props" + sh "cp \$INSTANCIA_ORGAO9_10 instanciaorgao9_10.props" + sh "cp \$INSTANCIA_ORGAO11_12 instanciaorgao11_12.props" + sh "cp \$INSTANCIA_ORGAO13_14 instanciaorgao13_14.props" + sh "cp \$INSTANCIA_ORGAO15_16 instanciaorgao15_16.props" + } + + s = "${SISTEMA}: ${BRANCHGITSPE} / ${DATABASE} / Mod: ${VERSAOMODULO}" + + //buildName "${SISTEMA}: ${GITBRANCH} / ${DATABASE} / Mod: ${VERSAOMODULO}" + buildDescription s + + } + + } + + } + + stage("Executar nas Bases"){ + + parallel { + stage("Grupo de Testes 1"){ + steps{ + script{ + + + def props = readProperties file: 'instanciamysql.props' + database = DATABASE + org1CertSecret = props['org1CertSecret'] + passCertOrg1 = props['passCertOrg1'] + org2CertSecret = props['org2CertSecret'] + passCertOrg2 = props['passCertOrg2'] + CONTEXTO_ORGAO_A_NUMERO_SEI = props['CONTEXTO_ORGAO_A_NUMERO_SEI'] + CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE = props['CONTEXTO_ORGAO_A_NOME_UNIDADE'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA = props['CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA'] + CONTEXTO_ORGAO_B_NUMERO_SEI = props['CONTEXTO_ORGAO_B_NUMERO_SEI'] + CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_ID_ESTRUTURA = props['CONTEXTO_ORGAO_B_ID_ESTRUTURA'] + CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_B_NOME_UNIDADE = props['CONTEXTO_ORGAO_B_NOME_UNIDADE'] + + build job: '01-Teste-Unico-ou-Grupo.groovy', + parameters: + [ + string(name: 'database', value: database), + string(name: 'org1CertSecret', value: org1CertSecret), + string(name: 'passCertOrg1', value: passCertOrg1), + string(name: 'org2CertSecret', value: org2CertSecret), + string(name: 'passCertOrg2', value: passCertOrg2), + string(name: 'CONTEXTO_ORGAO_A_NUMERO_SEI', value: CONTEXTO_ORGAO_A_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE', value: CONTEXTO_ORGAO_A_NOME_UNIDADE), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA', value: CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NUMERO_SEI', value: CONTEXTO_ORGAO_B_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_ID_ESTRUTURA', value: CONTEXTO_ORGAO_B_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NOME_UNIDADE', value: CONTEXTO_ORGAO_B_NOME_UNIDADE), + string(name: 'branchGitSpe', value: BRANCHGITSPE), + string(name: 'sistema', value: SISTEMA), + string(name: 'versaoModulo', value: VERSAOMODULO), + string(name: 'grupos_executar', value: "execute_without_receiving+execute_parallel_with_two_group1"), + + + ], wait: true + }} + + } + + stage("Grupo de Testes 2"){ + + steps{ + script{ + + + def props = readProperties file: 'instanciasqlserver.props' + database = DATABASE + org1CertSecret = props['org1CertSecret'] + passCertOrg1 = props['passCertOrg1'] + org2CertSecret = props['org2CertSecret'] + passCertOrg2 = props['passCertOrg2'] + CONTEXTO_ORGAO_A_NUMERO_SEI = props['CONTEXTO_ORGAO_A_NUMERO_SEI'] + CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE = props['CONTEXTO_ORGAO_A_NOME_UNIDADE'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA = props['CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA'] + CONTEXTO_ORGAO_B_NUMERO_SEI = props['CONTEXTO_ORGAO_B_NUMERO_SEI'] + CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_ID_ESTRUTURA = props['CONTEXTO_ORGAO_B_ID_ESTRUTURA'] + CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_B_NOME_UNIDADE = props['CONTEXTO_ORGAO_B_NOME_UNIDADE'] + + build job: '01-Teste-Unico-ou-Grupo.groovy', + parameters: + [ + string(name: 'database', value: database), + string(name: 'org1CertSecret', value: org1CertSecret), + string(name: 'passCertOrg1', value: passCertOrg1), + string(name: 'org2CertSecret', value: org2CertSecret), + string(name: 'passCertOrg2', value: passCertOrg2), + string(name: 'CONTEXTO_ORGAO_A_NUMERO_SEI', value: CONTEXTO_ORGAO_A_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE', value: CONTEXTO_ORGAO_A_NOME_UNIDADE), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA', value: CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NUMERO_SEI', value: CONTEXTO_ORGAO_B_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_ID_ESTRUTURA', value: CONTEXTO_ORGAO_B_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NOME_UNIDADE', value: CONTEXTO_ORGAO_B_NOME_UNIDADE), + string(name: 'branchGitSpe', value: BRANCHGITSPE), + string(name: 'sistema', value: SISTEMA), + string(name: 'versaoModulo', value: VERSAOMODULO), + string(name: 'grupos_executar', value: "execute_parallel_group1+execute_parallel_group3"), + ], wait: true + }} + + } + + stage("Grupo de Testes 3"){ + + steps{ + script{ + + def props = readProperties file: 'instanciaoracle.props' + database = DATABASE + org1CertSecret = props['org1CertSecret'] + passCertOrg1 = props['passCertOrg1'] + org2CertSecret = props['org2CertSecret'] + passCertOrg2 = props['passCertOrg2'] + CONTEXTO_ORGAO_A_NUMERO_SEI = props['CONTEXTO_ORGAO_A_NUMERO_SEI'] + CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE = props['CONTEXTO_ORGAO_A_NOME_UNIDADE'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA = props['CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA'] + CONTEXTO_ORGAO_B_NUMERO_SEI = props['CONTEXTO_ORGAO_B_NUMERO_SEI'] + CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_ID_ESTRUTURA = props['CONTEXTO_ORGAO_B_ID_ESTRUTURA'] + CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_B_NOME_UNIDADE = props['CONTEXTO_ORGAO_B_NOME_UNIDADE'] + + build job: '01-Teste-Unico-ou-Grupo.groovy', + parameters: + [ + string(name: 'database', value: database), + string(name: 'org1CertSecret', value: org1CertSecret), + string(name: 'passCertOrg1', value: passCertOrg1), + string(name: 'org2CertSecret', value: org2CertSecret), + string(name: 'passCertOrg2', value: passCertOrg2), + string(name: 'CONTEXTO_ORGAO_A_NUMERO_SEI', value: CONTEXTO_ORGAO_A_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE', value: CONTEXTO_ORGAO_A_NOME_UNIDADE), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA', value: CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NUMERO_SEI', value: CONTEXTO_ORGAO_B_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_ID_ESTRUTURA', value: CONTEXTO_ORGAO_B_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NOME_UNIDADE', value: CONTEXTO_ORGAO_B_NOME_UNIDADE), + string(name: 'branchGitSpe', value: BRANCHGITSPE), + string(name: 'sistema', value: SISTEMA), + string(name: 'versaoModulo', value: VERSAOMODULO), + string(name: 'grupos_executar', value: "execute_parallel_group2+execute_alone_group1"), + ], wait: true + }} + + } + + stage("Grupo de Testes 4"){ + + steps{ + script{ + + def props = readProperties file: 'instanciaorgao7_8.props' + database = DATABASE + org1CertSecret = props['org1CertSecret'] + passCertOrg1 = props['passCertOrg1'] + org2CertSecret = props['org2CertSecret'] + passCertOrg2 = props['passCertOrg2'] + CONTEXTO_ORGAO_A_NUMERO_SEI = props['CONTEXTO_ORGAO_A_NUMERO_SEI'] + CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE = props['CONTEXTO_ORGAO_A_NOME_UNIDADE'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA = props['CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA'] + CONTEXTO_ORGAO_B_NUMERO_SEI = props['CONTEXTO_ORGAO_B_NUMERO_SEI'] + CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_ID_ESTRUTURA = props['CONTEXTO_ORGAO_B_ID_ESTRUTURA'] + CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_B_NOME_UNIDADE = props['CONTEXTO_ORGAO_B_NOME_UNIDADE'] + + build job: '01-Teste-Unico-ou-Grupo.groovy', + parameters: + [ + string(name: 'database', value: database), + string(name: 'org1CertSecret', value: org1CertSecret), + string(name: 'passCertOrg1', value: passCertOrg1), + string(name: 'org2CertSecret', value: org2CertSecret), + string(name: 'passCertOrg2', value: passCertOrg2), + string(name: 'CONTEXTO_ORGAO_A_NUMERO_SEI', value: CONTEXTO_ORGAO_A_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE', value: CONTEXTO_ORGAO_A_NOME_UNIDADE), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA', value: CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NUMERO_SEI', value: CONTEXTO_ORGAO_B_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_ID_ESTRUTURA', value: CONTEXTO_ORGAO_B_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NOME_UNIDADE', value: CONTEXTO_ORGAO_B_NOME_UNIDADE), + string(name: 'branchGitSpe', value: BRANCHGITSPE), + string(name: 'sistema', value: SISTEMA), + string(name: 'versaoModulo', value: VERSAOMODULO), + string(name: 'grupos_executar', value: "execute_alone_group2"), + ], wait: true + }} + + } + + stage("Grupo de Testes 5"){ + + steps{ + script{ + + def props = readProperties file: 'instanciaorgao9_10.props' + database = DATABASE + org1CertSecret = props['org1CertSecret'] + passCertOrg1 = props['passCertOrg1'] + org2CertSecret = props['org2CertSecret'] + passCertOrg2 = props['passCertOrg2'] + CONTEXTO_ORGAO_A_NUMERO_SEI = props['CONTEXTO_ORGAO_A_NUMERO_SEI'] + CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE = props['CONTEXTO_ORGAO_A_NOME_UNIDADE'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA = props['CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA'] + CONTEXTO_ORGAO_B_NUMERO_SEI = props['CONTEXTO_ORGAO_B_NUMERO_SEI'] + CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_ID_ESTRUTURA = props['CONTEXTO_ORGAO_B_ID_ESTRUTURA'] + CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_B_NOME_UNIDADE = props['CONTEXTO_ORGAO_B_NOME_UNIDADE'] + + build job: '01-Teste-Unico-ou-Grupo.groovy', + parameters: + [ + string(name: 'database', value: database), + string(name: 'org1CertSecret', value: org1CertSecret), + string(name: 'passCertOrg1', value: passCertOrg1), + string(name: 'org2CertSecret', value: org2CertSecret), + string(name: 'passCertOrg2', value: passCertOrg2), + string(name: 'CONTEXTO_ORGAO_A_NUMERO_SEI', value: CONTEXTO_ORGAO_A_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE', value: CONTEXTO_ORGAO_A_NOME_UNIDADE), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA', value: CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NUMERO_SEI', value: CONTEXTO_ORGAO_B_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_ID_ESTRUTURA', value: CONTEXTO_ORGAO_B_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NOME_UNIDADE', value: CONTEXTO_ORGAO_B_NOME_UNIDADE), + string(name: 'branchGitSpe', value: BRANCHGITSPE), + string(name: 'sistema', value: SISTEMA), + string(name: 'versaoModulo', value: VERSAOMODULO), + string(name: 'grupos_executar', value: "execute_alone_group3"), + ], wait: true + }} + + } + + stage("Grupo de Testes 6"){ + + steps{ + script{ + + def props = readProperties file: 'instanciaorgao11_12.props' + database = DATABASE + org1CertSecret = props['org1CertSecret'] + passCertOrg1 = props['passCertOrg1'] + org2CertSecret = props['org2CertSecret'] + passCertOrg2 = props['passCertOrg2'] + CONTEXTO_ORGAO_A_NUMERO_SEI = props['CONTEXTO_ORGAO_A_NUMERO_SEI'] + CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE = props['CONTEXTO_ORGAO_A_NOME_UNIDADE'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA = props['CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA'] + CONTEXTO_ORGAO_B_NUMERO_SEI = props['CONTEXTO_ORGAO_B_NUMERO_SEI'] + CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_ID_ESTRUTURA = props['CONTEXTO_ORGAO_B_ID_ESTRUTURA'] + CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_B_NOME_UNIDADE = props['CONTEXTO_ORGAO_B_NOME_UNIDADE'] + + build job: '01-Teste-Unico-ou-Grupo.groovy', + parameters: + [ + string(name: 'database', value: database), + string(name: 'org1CertSecret', value: org1CertSecret), + string(name: 'passCertOrg1', value: passCertOrg1), + string(name: 'org2CertSecret', value: org2CertSecret), + string(name: 'passCertOrg2', value: passCertOrg2), + string(name: 'CONTEXTO_ORGAO_A_NUMERO_SEI', value: CONTEXTO_ORGAO_A_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE', value: CONTEXTO_ORGAO_A_NOME_UNIDADE), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA', value: CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NUMERO_SEI', value: CONTEXTO_ORGAO_B_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_ID_ESTRUTURA', value: CONTEXTO_ORGAO_B_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NOME_UNIDADE', value: CONTEXTO_ORGAO_B_NOME_UNIDADE), + string(name: 'branchGitSpe', value: BRANCHGITSPE), + string(name: 'sistema', value: SISTEMA), + string(name: 'versaoModulo', value: VERSAOMODULO), + string(name: 'grupos_executar', value: "execute_alone_group4"), + ], wait: true + }} + + } + + stage("Grupo de Testes 7"){ + + steps{ + script{ + + def props = readProperties file: 'instanciaorgao13_14.props' + database = DATABASE + org1CertSecret = props['org1CertSecret'] + passCertOrg1 = props['passCertOrg1'] + org2CertSecret = props['org2CertSecret'] + passCertOrg2 = props['passCertOrg2'] + CONTEXTO_ORGAO_A_NUMERO_SEI = props['CONTEXTO_ORGAO_A_NUMERO_SEI'] + CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE = props['CONTEXTO_ORGAO_A_NOME_UNIDADE'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA = props['CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA'] + CONTEXTO_ORGAO_B_NUMERO_SEI = props['CONTEXTO_ORGAO_B_NUMERO_SEI'] + CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_ID_ESTRUTURA = props['CONTEXTO_ORGAO_B_ID_ESTRUTURA'] + CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_B_NOME_UNIDADE = props['CONTEXTO_ORGAO_B_NOME_UNIDADE'] + + build job: '01-Teste-Unico-ou-Grupo.groovy', + parameters: + [ + string(name: 'database', value: database), + string(name: 'org1CertSecret', value: org1CertSecret), + string(name: 'passCertOrg1', value: passCertOrg1), + string(name: 'org2CertSecret', value: org2CertSecret), + string(name: 'passCertOrg2', value: passCertOrg2), + string(name: 'CONTEXTO_ORGAO_A_NUMERO_SEI', value: CONTEXTO_ORGAO_A_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE', value: CONTEXTO_ORGAO_A_NOME_UNIDADE), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA', value: CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NUMERO_SEI', value: CONTEXTO_ORGAO_B_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_ID_ESTRUTURA', value: CONTEXTO_ORGAO_B_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NOME_UNIDADE', value: CONTEXTO_ORGAO_B_NOME_UNIDADE), + string(name: 'branchGitSpe', value: BRANCHGITSPE), + string(name: 'sistema', value: SISTEMA), + string(name: 'versaoModulo', value: VERSAOMODULO), + string(name: 'grupos_executar', value: "execute_alone_group5"), + ], wait: true + }} + + } + + stage("Grupo de Testes 8"){ + + steps{ + script{ + + def props = readProperties file: 'instanciaorgao15_16.props' + database = DATABASE + org1CertSecret = props['org1CertSecret'] + passCertOrg1 = props['passCertOrg1'] + org2CertSecret = props['org2CertSecret'] + passCertOrg2 = props['passCertOrg2'] + CONTEXTO_ORGAO_A_NUMERO_SEI = props['CONTEXTO_ORGAO_A_NUMERO_SEI'] + CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_A_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE = props['CONTEXTO_ORGAO_A_NOME_UNIDADE'] + CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA = props['CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA'] + CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA = props['CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA'] + CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA = props['CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA'] + CONTEXTO_ORGAO_B_NUMERO_SEI = props['CONTEXTO_ORGAO_B_NUMERO_SEI'] + CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_REP_ESTRUTURAS = props['CONTEXTO_ORGAO_B_REP_ESTRUTURAS'] + CONTEXTO_ORGAO_B_ID_ESTRUTURA = props['CONTEXTO_ORGAO_B_ID_ESTRUTURA'] + CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA = props['CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA'] + CONTEXTO_ORGAO_B_NOME_UNIDADE = props['CONTEXTO_ORGAO_B_NOME_UNIDADE'] + + build job: '01-Teste-Unico-ou-Grupo.groovy', + parameters: + [ + string(name: 'database', value: database), + string(name: 'org1CertSecret', value: org1CertSecret), + string(name: 'passCertOrg1', value: passCertOrg1), + string(name: 'org2CertSecret', value: org2CertSecret), + string(name: 'passCertOrg2', value: passCertOrg2), + string(name: 'CONTEXTO_ORGAO_A_NUMERO_SEI', value: CONTEXTO_ORGAO_A_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_A_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE', value: CONTEXTO_ORGAO_A_NOME_UNIDADE), + string(name: 'CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA', value: CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA', value: CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA), + string(name: 'CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA', value: CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NUMERO_SEI', value: CONTEXTO_ORGAO_B_NUMERO_SEI), + string(name: 'CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_ID_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_REP_ESTRUTURAS', value: CONTEXTO_ORGAO_B_REP_ESTRUTURAS), + string(name: 'CONTEXTO_ORGAO_B_ID_ESTRUTURA', value: CONTEXTO_ORGAO_B_ID_ESTRUTURA), + string(name: 'CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA', value: CONTEXTO_ORGAO_B_SIGLA_UNIDADE_HIERARQUIA), + string(name: 'CONTEXTO_ORGAO_B_NOME_UNIDADE', value: CONTEXTO_ORGAO_B_NOME_UNIDADE), + string(name: 'branchGitSpe', value: BRANCHGITSPE), + string(name: 'sistema', value: SISTEMA), + string(name: 'versaoModulo', value: VERSAOMODULO), + string(name: 'grupos_executar', value: "execute_alone_group6"), + ], wait: true + }} + + } + + + + } + + } + + + + } + +} diff --git a/jenkins/03-Teste-Todos-os-Grupos-em-Serie.groovy b/jenkins/03-Teste-Todos-os-Grupos-em-Serie.groovy new file mode 100644 index 000000000..7ca34f767 --- /dev/null +++ b/jenkins/03-Teste-Todos-os-Grupos-em-Serie.groovy @@ -0,0 +1,104 @@ +/* + +Usuario jenkins precisa ter permissao de sudo +Jenkins minimo em 2.332 + +chama o job 02 de forma serializada + +*/ + +pipeline { + agent { + node{ + label "master" + } + } + + options { + disableConcurrentBuilds() + } + + parameters { + + string( + name: 'versoes', + defaultValue:"SPE=4.0.11,NOME_SPE=sei4,VERSAO_MODULO=master,BASE=mysql;SPE=4.0.12.15,NOME_SPE=sei4,VERSAO_MODULO=master,BASE=mysql;", + description: "Lista de versoes do SPE e modulo no formato como exemplo acima, separados por ;") + + + } + + stages { + + + + stage("Preparar execucao"){ + + steps{ + + script{ + + if ( env.BUILD_NUMBER == '1' ){ + currentBuild.result = 'ABORTED' + warning('Informe os valores de parametro iniciais. Caso eles n tenham aparecido faça login novamente') + } + + QTDTENTATIVAS=0 + VERSOES_STRING = params.versoes + arrGeneral = VERSOES_STRING.split(';') + + buildDescription "Versoes: ${VERSOES_STRING}" + + } + + } + + } + + stage("Executar nas Bases"){ + steps { + script { + + def paramValue + def spe_branch + def spe_controle_versao + def modulo_versao + def database + + for (int i = 0; i < arrGeneral.length; i++) { + paramValue = arrGeneral[i].split(',') + spe_branch = paramValue[0].split('=')[1] + spe_nome = paramValue[1].split('=')[1] + modulo_versao = paramValue[2].split('=')[1] + database = paramValue[3].split('=')[1] + + stage("Montando Ambiente Rodando Testes ${paramValue[0]} / ${paramValue[1]} / ${paramValue[2]}" ) { + + warnError('Erro no build!'){ + + retry(QTDTENTATIVAS){ + + + build job: '02-Teste-Todos-os-Grupos.groovy', + parameters: + [ + string(name: 'branchGitSpe', value: spe_branch), + string(name: 'sistema', value: spe_nome), + string(name: 'versaoModulo', value: modulo_versao), + ], wait: true + } + + } + + } + + + } + + } + } + + } + } + +} diff --git a/jenkins/01-Simples.groovy b/jenkins/oldJobs/01-Simples.groovy similarity index 100% rename from jenkins/01-Simples.groovy rename to jenkins/oldJobs/01-Simples.groovy diff --git a/jenkins/02-TodasBases.groovy b/jenkins/oldJobs/02-TodasBases.groovy similarity index 100% rename from jenkins/02-TodasBases.groovy rename to jenkins/oldJobs/02-TodasBases.groovy diff --git a/jenkins/03-TodasVersoes.groovy b/jenkins/oldJobs/03-TodasVersoes.groovy similarity index 100% rename from jenkins/03-TodasVersoes.groovy rename to jenkins/oldJobs/03-TodasVersoes.groovy diff --git a/tests_sei4/funcional/src/paginas/PaginaProcesso.php b/tests_sei4/funcional/src/paginas/PaginaProcesso.php index 2b9c8294d..659dd2921 100755 --- a/tests_sei4/funcional/src/paginas/PaginaProcesso.php +++ b/tests_sei4/funcional/src/paginas/PaginaProcesso.php @@ -174,6 +174,8 @@ public function ehDocumentoCancelado($nomeDocumentoArvore) { try { + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); $this->test->frame(null); $this->test->frame("ifrArvore"); $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_cancelado.svg?')]"); @@ -182,13 +184,17 @@ public function ehDocumentoCancelado($nomeDocumentoArvore) catch(Exception $e) { return false; - } + }finally{ + $this->test->timeouts()->implicitWait($to); + } } public function ehDocumentoMovido($nomeDocumentoArvore) { try { + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); $this->test->frame(null); $this->test->frame("ifrArvore"); $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_movido.svg?')]"); @@ -197,7 +203,9 @@ public function ehDocumentoMovido($nomeDocumentoArvore) catch(Exception $e) { return false; - } + }finally{ + $this->test->timeouts()->implicitWait($to); + } } private function selecionarItemArvore($nomeArvore) diff --git a/tests_sei4/funcional/src/paginas/PaginaReciboTramite.php b/tests_sei4/funcional/src/paginas/PaginaReciboTramite.php index 07ffb156d..451bd858d 100755 --- a/tests_sei4/funcional/src/paginas/PaginaReciboTramite.php +++ b/tests_sei4/funcional/src/paginas/PaginaReciboTramite.php @@ -26,17 +26,23 @@ public function contemTramite($mensagemTramite, $verificaReciboEnvio=false, $ver //Verifica se recibo de envio do processo foi localizado if($result && $verificaReciboEnvio) { try{ + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); $colunas[1]->element($this->test->using('css selector')->value(utf8_encode('a > img[title=\'Recibo de Confirmação de Envio\']'))); } catch(Exception $e){ $result = false; } + finally{ $this->test->timeouts()->implicitWait($to); } } //Verifica se recibo de conclusão do trâmite processo foi localizado if($result && $verificaReciboConclusao) { try{ + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); $colunas[1]->element($this->test->using('css selector')->value(utf8_encode('a > img[title=\'Recibo de Conclusão de Trâmite\']'))); } catch(Exception $e){ $result = false; } + finally{ $this->test->timeouts()->implicitWait($to); } } if($result) { diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php index 77bb55e7b..6aac207c1 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -3,6 +3,9 @@ /** * Testes de mapeamento de tipos de processo e relacionamento entre orgãos * Desativar e reativar mapeamento entre orgãos + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoDesativarReativarTest extends CenarioBaseTestCase { diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php index aeceb96fb..ddbcf101e 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -3,6 +3,9 @@ /** * Testes de mapeamento de tipos de processo e relacionamento entre orgãos * Excluir mapeamento entre orgãos + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoExcluirTest extends CenarioBaseTestCase { diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php index 4c237b093..cdc81f23a 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -4,6 +4,9 @@ * Testes de mapeamento de tipos de processo e relacionamento entre orgãos * Exportar tipos de processos * Pesquisar tipos de processos + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoExportarTest extends CenarioBaseTestCase { diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php index 9543d181c..1ff853313 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -3,6 +3,9 @@ /** * Testes de mapeamento de tipos de processo reativar * Reativar tipos de processos + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoReativarTest extends CenarioBaseTestCase { diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php index 638ef3559..c307a93ea 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -3,6 +3,9 @@ /** * Testes de mapeamento de tipos de processo e relacionamento entre orgãos * Cadastro mapeamento de orgãos + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest extends CenarioBaseTestCase { diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php index 8b5be9979..00dd0b47c 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -4,6 +4,9 @@ * Testes de mapeamento de tipos de processo e relacionamento entre orgãos * Listar mapeamento entre orgãos * Importar tipos de processo para relacionamento + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest extends CenarioBaseTestCase { diff --git a/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php b/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php index bbe6bda67..4c7247049 100755 --- a/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php +++ b/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php @@ -2,13 +2,17 @@ use \utilphp\util; +/** + * Execution Groups + * @group execute_alone_group4 + */ class RecebimentoRecusaJustificativaGrandeTest extends CenarioBaseTestCase { protected $destinatarioWs; protected $servicoPEN; public static $remetente; - public static $destinatario; + public static $destinatario; public static $processoTeste; public static $documentoTeste; public static $protocoloTeste; @@ -54,7 +58,7 @@ public function test_tramitar_processo_da_origem() }else{ $id_tramite=$id_tramite[0]["ID_TRAMITE"]; } - $this->recusarTramite($this->servicoPEN, $id_tramite); + $this->recusarTramite($this->servicoPEN, $id_tramite); } /** @@ -85,7 +89,7 @@ public function test_verificar_destino_processo_para_devolucao() $this->assertTrue($this->paginaControleProcesso->contemAlertaProcessoRecusado(self::$protocoloTeste)); } - + private function recusarTramite($servicoPEN, $id_tramite) { $justificativa = "An exception occurred while executing 'INSERT INTO juntadas (numeracao_sequencial, movimento, ativo, vinculada, criado_em, atualizado_em, id, uuid, documentos_juntado_id, volumes_id, atividades_id, tarefas_id, comunicacoes_id, origem_dados_id, criado_por, atualizado_por) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [1, 'DOCUMENTO RECEBIDO VIA INTEGRA\u00c7\u00c3O COM O BARRAMENTO', 1, 0, '2021-12-02 14:21:48', '2021-12-02 14:21:48', 1317074776, '06ba31e8-75ad-4111-82dc-6f451f51825e', 1333864526, null, null, null, null, 3534979787, null, null]: ORA-00001: restrição exclusiva (SAPIENS.UNIQ_867686DHDKJ97876) violada"; diff --git a/tests_sei4/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php b/tests_sei4/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php index 7a66ca7a6..e9604e732 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php @@ -2,6 +2,8 @@ /** * Testes de trâmite de processos anexado considerando a devolução do mesmo para a entidade de origem + * Execution Groups + * @group execute_alone_group4 */ class TramiteProcessoAnexadoComDevolucaoTest extends CenarioBaseTestCase { diff --git a/tests_sei4/funcional/tests/TramiteProcessoAnexadoTest.php b/tests_sei4/funcional/tests/TramiteProcessoAnexadoTest.php index f1e997482..5ebaa1cfc 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoAnexadoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoAnexadoTest.php @@ -2,6 +2,9 @@ /** * Testes de trâmite de processos anexado + * + * Execution Groups + * @group execute_parallel_group2 */ class TramiteProcessoAnexadoTest extends CenarioBaseTestCase { diff --git a/tests_sei4/funcional/tests/TramiteProcessoComCancelamentoTest.php b/tests_sei4/funcional/tests/TramiteProcessoComCancelamentoTest.php index 05f9c24c4..aa8c96d79 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoComCancelamentoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoComCancelamentoTest.php @@ -1,5 +1,11 @@ execute("update infra_parametro set valor = ? where nome = ?", array(70, 'SEI_TAM_MB_DOC_EXTERNO')); diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php index 9dc56b13e..aa9e8a006 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoExternoTest.php @@ -1,5 +1,10 @@ setParameter('PEN_ESPECIE_DOCUMENTAL_PADRAO_ENVIO', null); diff --git a/tests_sei4/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php b/tests_sei4/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php index 46d697583..b78f0954c 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php @@ -1,9 +1,9 @@ execute("update infra_parametro set valor = ? where nome = ?", array(2, 'SEI_TAM_MB_DOC_EXTERNO')); diff --git a/tests_sei4/funcional/tests/TramiteProcessoValidacaoEnvioTest.php b/tests_sei4/funcional/tests/TramiteProcessoValidacaoEnvioTest.php index 0cc1fbfe1..7db3e345d 100755 --- a/tests_sei4/funcional/tests/TramiteProcessoValidacaoEnvioTest.php +++ b/tests_sei4/funcional/tests/TramiteProcessoValidacaoEnvioTest.php @@ -1,5 +1,10 @@ $localCertificado , 'passphrase' => $senhaCertificado , 'resolve_wsdl_remote_includes' => true + , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE , 'connection_timeout' => $connectionTimeout , CURLOPT_TIMEOUT => $connectionTimeout , CURLOPT_CONNECTTIMEOUT => $connectionTimeout @@ -123,6 +128,7 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) ); return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); + } diff --git a/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php b/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php index 8a9f92473..026e45bab 100755 --- a/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php +++ b/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php @@ -2,6 +2,10 @@ use \utilphp\util; +/** + * Execution Groups + * @group execute_alone_group4 + */ class TramiteRecebimentoDocumentoAvulsoTest extends CenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; @@ -23,7 +27,7 @@ class TramiteRecebimentoDocumentoAvulsoTest extends CenarioBaseTestCase /** * Teste preparatório (setUp()). Definição de contextos e instanciação da api de integração - * + * * @Depends CenarioBaseTestCase::setUpBeforeClass * * @return void diff --git a/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php b/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php index c10d2ee49..9160f0d96 100755 --- a/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php +++ b/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php @@ -2,6 +2,10 @@ use \utilphp\util; +/** + * Execution Groups + * @group execute_parallel_group3 + */ class TramiteRecebimentoInteressadosDuplicadosTest extends CenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; @@ -19,9 +23,9 @@ class TramiteRecebimentoInteressadosDuplicadosTest extends CenarioBaseTestCase * Teste de envio de metadados do processo contendo interessados duplicados * * Inicialmente são enviados 2 interessados com o mesmo nome - * + * * @group envio - * + * * @Depends CenarioBaseTestCase::setUpBeforeClass * * @return void @@ -69,6 +73,7 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) , 'local_cert' => $localCertificado , 'passphrase' => $senhaCertificado , 'resolve_wsdl_remote_includes' => true + , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE , 'connection_timeout' => $connectionTimeout , CURLOPT_TIMEOUT => $connectionTimeout , CURLOPT_CONNECTTIMEOUT => $connectionTimeout @@ -80,6 +85,7 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) ); return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); + } @@ -170,7 +176,7 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest $arrInteressados = array_map(function($item) { return array('nome' => utf8_encode($item)); - }, + }, $processoTeste['INTERESSADOS']); return array( diff --git a/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php b/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php index 5e27cf5f9..d506307f3 100755 --- a/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php +++ b/tests_sei4/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php @@ -2,6 +2,10 @@ use \utilphp\util; +/** + * Execution Groups + * @group execute_alone_group1 + */ class TramiteRecebimentoMultiplosComponentesDigitais extends CenarioBaseTestCase { const ALGORITMO_HASH_DOCUMENTO = 'SHA256'; @@ -22,7 +26,7 @@ class TramiteRecebimentoMultiplosComponentesDigitais extends CenarioBaseTestCase /** * Teste de recebimento dedocumento avulso com 2 componentes digitais - * + * * @Depends CenarioBaseTestCase::setUpBeforeClass * * @return void @@ -43,7 +47,7 @@ public function setUp(): void /** * Teste de recebimento processo contendo documento com 3 componentes digitais - * + * * @return void */ public function test_recebimento_processo_com_3_componentes_digitais() @@ -61,7 +65,7 @@ public function test_recebimento_processo_com_3_componentes_digitais() self::CONTEUDO_DOCUMENTO_B, self::CONTEUDO_DOCUMENTO_C, self::CONTEUDO_DOCUMENTO_A, self::CONTEUDO_DOCUMENTO_A, self::CONTEUDO_DOCUMENTO_B, self::CONTEUDO_DOCUMENTO_C, )); - + // Simular um trâmite chamando a API do Barramento diretamente $metadadosProcessoTeste = $this->construirMetadadosProcessoTeste(self::$processoTeste, array(self::$documentoZip)); $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, $remetente, $destinatario, $metadadosProcessoTeste); @@ -135,7 +139,7 @@ private function receberReciboEnvioDocumentoAvulso($servicoPEN, $novoTramite) $parametros->IDT = $dadosTramite->tramite->IDT; return $servicoPEN->receberReciboDeEnvio($parametros); } - + private function receberReciboEnvioProcesso($servicoPEN, $novoTramite) { $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; @@ -150,7 +154,7 @@ private function receberReciboTramite($servicoPEN, $novoTramite) $parametros = new StdClass(); $parametros->IDT = $dadosTramite->IDT; return $servicoPEN->receberReciboDeTramite($parametros); - } + } private function enviarMetadadosProcesso($servicoPEN, $remetente, $destinatario, $processoTeste) { diff --git a/tests_sei41/funcional/assets/arquivos/arquivo_pequeno.txt b/tests_sei41/funcional/assets/arquivos/arquivo_pequeno.txt new file mode 100755 index 000000000..376b92666 --- /dev/null +++ b/tests_sei41/funcional/assets/arquivos/arquivo_pequeno.txt @@ -0,0 +1 @@ +arquivo pequeno diff --git a/tests_sei41/funcional/assets/arquivos/arquivo_pequeno_A.pdf b/tests_sei41/funcional/assets/arquivos/arquivo_pequeno_A.pdf new file mode 100755 index 0000000000000000000000000000000000000000..2f19792f936d1e300cb1f538cfa17ea005b58542 GIT binary patch literal 15058 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 E0$7IA5dZ)H literal 0 HcmV?d00001 diff --git a/tests_sei41/funcional/assets/arquivos/arquivo_pequeno_B.pdf b/tests_sei41/funcional/assets/arquivos/arquivo_pequeno_B.pdf new file mode 100755 index 0000000000000000000000000000000000000000..1d1d62b3501a72a89b16e1289bf897b6cfdba287 GIT binary patch literal 21877 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 ztest->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); $this->test->frame(null); $this->test->frame("ifrArvore"); $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_cancelado.svg?')]"); @@ -192,13 +194,17 @@ public function ehDocumentoCancelado($nomeDocumentoArvore) catch(Exception $e) { return false; - } + }finally{ + $this->test->timeouts()->implicitWait($to); + } } public function ehDocumentoMovido($nomeDocumentoArvore) { try { + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); $this->test->frame(null); $this->test->frame("ifrArvore"); $this->test->byLinkText($nomeDocumentoArvore)->byXPath(".//preceding-sibling::a[1]/img[contains(@src,'svg/documento_movido.svg?')]"); @@ -207,7 +213,9 @@ public function ehDocumentoMovido($nomeDocumentoArvore) catch(Exception $e) { return false; - } + }finally{ + $this->test->timeouts()->implicitWait($to); + } } private function selecionarItemArvore($nomeArvore) diff --git a/tests_sei41/funcional/src/paginas/PaginaReciboTramite.php b/tests_sei41/funcional/src/paginas/PaginaReciboTramite.php index d2d517870..412a64f86 100755 --- a/tests_sei41/funcional/src/paginas/PaginaReciboTramite.php +++ b/tests_sei41/funcional/src/paginas/PaginaReciboTramite.php @@ -27,17 +27,23 @@ public function contemTramite($mensagemTramite, $verificaReciboEnvio=false, $ver //Verifica se recibo de envio do processo foi localizado if($result && $verificaReciboEnvio) { try{ + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); $colunas[1]->element($this->test->using('css selector')->value(utf8_encode('a > img[title=\'Recibo de Confirmação de Envio\']'))); } catch(Exception $e){ $result = false; } + finally{ $this->test->timeouts()->implicitWait($to); } } //Verifica se recibo de conclusão do trâmite processo foi localizado if($result && $verificaReciboConclusao) { try{ + $to = $this->test->timeouts()->getLastImplicitWaitValue(); + $this->test->timeouts()->implicitWait(300); $colunas[1]->element($this->test->using('css selector')->value(utf8_encode('a > img[title=\'Recibo de Conclusão de Trâmite\']'))); } catch(Exception $e){ $result = false; } + finally{ $this->test->timeouts()->implicitWait($to); } } if($result) { diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php index 77bb55e7b..6aac207c1 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -3,6 +3,9 @@ /** * Testes de mapeamento de tipos de processo e relacionamento entre orgãos * Desativar e reativar mapeamento entre orgãos + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoDesativarReativarTest extends CenarioBaseTestCase { diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoExcluirTest.php index aeceb96fb..ddbcf101e 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoExcluirTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -3,6 +3,9 @@ /** * Testes de mapeamento de tipos de processo e relacionamento entre orgãos * Excluir mapeamento entre orgãos + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoExcluirTest extends CenarioBaseTestCase { diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoExportarTest.php index 4c237b093..cdc81f23a 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoExportarTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -4,6 +4,9 @@ * Testes de mapeamento de tipos de processo e relacionamento entre orgãos * Exportar tipos de processos * Pesquisar tipos de processos + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoExportarTest extends CenarioBaseTestCase { diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoReativarTest.php index 9543d181c..1ff853313 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoReativarTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -3,6 +3,9 @@ /** * Testes de mapeamento de tipos de processo reativar * Reativar tipos de processos + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoReativarTest extends CenarioBaseTestCase { diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php index 638ef3559..c307a93ea 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -3,6 +3,9 @@ /** * Testes de mapeamento de tipos de processo e relacionamento entre orgãos * Cadastro mapeamento de orgãos + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest extends CenarioBaseTestCase { diff --git a/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php index 8b5be9979..00dd0b47c 100644 --- a/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php +++ b/tests_sei41/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -4,6 +4,9 @@ * Testes de mapeamento de tipos de processo e relacionamento entre orgãos * Listar mapeamento entre orgãos * Importar tipos de processo para relacionamento + * + * Execution Groups + * @group execute_alone_group1 */ class MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest extends CenarioBaseTestCase { diff --git a/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php b/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php index bbe6bda67..dfe3006c0 100755 --- a/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php +++ b/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php @@ -2,6 +2,10 @@ use \utilphp\util; +/** + * Execution Groups + * @group execute_alone_group4 + */ class RecebimentoRecusaJustificativaGrandeTest extends CenarioBaseTestCase { diff --git a/tests_sei41/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php b/tests_sei41/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php index 7a66ca7a6..e9604e732 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoAnexadoComDevolucaoTest.php @@ -2,6 +2,8 @@ /** * Testes de trâmite de processos anexado considerando a devolução do mesmo para a entidade de origem + * Execution Groups + * @group execute_alone_group4 */ class TramiteProcessoAnexadoComDevolucaoTest extends CenarioBaseTestCase { diff --git a/tests_sei41/funcional/tests/TramiteProcessoAnexadoTest.php b/tests_sei41/funcional/tests/TramiteProcessoAnexadoTest.php index f1e997482..5ebaa1cfc 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoAnexadoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoAnexadoTest.php @@ -2,6 +2,9 @@ /** * Testes de trâmite de processos anexado + * + * Execution Groups + * @group execute_parallel_group2 */ class TramiteProcessoAnexadoTest extends CenarioBaseTestCase { diff --git a/tests_sei41/funcional/tests/TramiteProcessoComCancelamentoTest.php b/tests_sei41/funcional/tests/TramiteProcessoComCancelamentoTest.php index 05f9c24c4..aa8c96d79 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComCancelamentoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComCancelamentoTest.php @@ -1,5 +1,11 @@