====================================== Procedimento para executar os testes ====================================== ********************* OBSERVAÇÕES GERAIS ********************* --> Este procedimento de testes é temporário e vai ser atualizado assim que automatizarmos coisas consideradas como pré-condições e a resolução de problemas encontrados. O ideal, ao invés de diferentes mensagens de sucesso é termos uma espécie de barrinha verde. Além disso, muitos desses testes precisam ser melhorados. --> Descrições detalhadas sobre os testes estão nos comentários de cada teste ou no arquivo: $MGROOT/tests/README-TEST --> Antes de todos os testes: * Mudar permissões dos scripts, permitindo execução * Colocar arquivos .jar do diretorio /lib e o "mygrid.jar" no classpath * Ver se a sua própria máquina não está sendo usada em algum grid dos testes. * Configurar o MG.properties -->Para todo teste que envolva Globus é necessário que o ambiente de segurança esteja configurado e no shell onde o teste está sendo rodado é necessário que seja configurado o ambiente do globus: * segurança: source $GLOBUS_LOCATION/setenv.sh source $GLOBUS_LOCATION/etc/globus-user-env.sh grid-proxy-init ( será requisitada a pem-pass-phrase ) * ambiente globus (classpath, etc): source $GLOBUS_LOCATION/setenv.sh source $GLOBUS_LOCATION/etc/globus-user-env.sh Ver com Gustavo mais detalhes do tipo: - a senha depende da máquina - o usuário usado deverá ser "gustavo" - normalmente as máquinas usadas são "lambari" para "argos" --> Outros Detalhes para testes usando Globus --------------------------------------------------- Teste da GlobusGridMachine (independente do MyGrid) --------------------------------------------------- Passos: 1 - Iniciar o Globus numa máquina remota: ssh {eliane,hugo}@%MACHINE(argus, violinha); startGlobus 2 - Configurando o ambiente de segurança na máquina base(onde serão realizados os testes): cd $GLOBUS_LOCATION source setenv.sh source etc/globus-user-env.sh grid-proxy-init (se a máquina base for lambari, a senha é lambari) 3 - Configurar o arquivo de properties para conter a máquina remota Globus: vi /src/mygrid/gridservices/gridmachines/globus/globusTest.properties alterar as configurações 4 - Testando a GlobusGridMachine: javamg mygrid.gridservices.gridmachines.globus.GlobusGridMachineAppTest ----------------------------- Testando o Globus com MyGrid: ----------------------------- 0 - Importante: verificar se as bibliotecas estÃo no classpath. 1 - cd $MGROOT/test 2 - colocar no arquivo gridGlobusTestDefault a máquina remota onde está o globus 3 - globus-test ********************* TESTES ********************* ===> Teste1:testAll * Descrição: Corresponde a execução de todos os testes de unidade. A partir do eclipse, executar a classe: "testAll" * Caminho_teste: $MGROOT/util/testAll.java * Pré-condições: Eclipse aberto e bibliotecas do /lib carregadas e o teste TestAll configurado com os seguintes parâmetros para a máquina virtual: -DMGROOT= -Dtest_type=UNIT -Dclass_root=. Deve-se fazer um ant build antes para gerar os stubs. * Condição para o sucesso: Barra verde do JUnit * Possíveis problemas e como tentar resolvê-los: - PROB_SOL_[1A]: Embora apareça a barrinha verde, é possível que alguma mensagem de erro vermelha seja mostrada, referente a "mock objects". Por enquanto se está admitindo esse erro, mas ele deve ser investigado melhor. PROB_SOL_[1B]Um outro problema, é que o teste do workqueue às vezes falha. Deve-se tentar executar ele sozinho, pra ver se isso continua acontecendo. * (TODO): Corrigir o problema dessas mensagens. Uma possível solução temporária será retirar os testes que estão gerando isso, pois parecem não ser relevantes. Outra solução é ver se as expectativas do mock não precisam ser atualizadas. Melhorar o teste do workqueue usando a idéia do "waitForJob" pra o teste não falhar. ===> Teste2:gs-test * Descrição: Executar o script entrando como parâmetro opcional a "grid description file" (A opção default é usar o arquivo $MGROOT/test/gridGsTestDefault) * Caminho_teste: $MGROOT/test/gs-test * Condição para o sucesso: O script escreve a mensagem "Grid Script is working well..." ===> Teste3:ua-test * Descrição: Executar o script entrando como parâmetro opcional a "grid description file" (A opção default é usar o arquivo $MGROOT/test/gridUaTestDefault). * Caminho_teste:$MGROOT/test/ua-test * Pré-condições: Iniciar os Uas manualmente ou com o /bin/script mg-ua-factory * Condição para o sucesso: "User Agent is working well..." * (TODO): Checar script de Aliandro que parece fazer a mesma coisa que o gm-uafactory, mas parece que ele demora mais pois sempre reiniciar o UserAgent. Tentar integrar esse teste com o Teste2, configurando antes o grid das duas redes, checando se a própria máquina de quem vai testar não está no Grid. ===> Teste4:globus-test * Descrição: * Caminho_teste:$MGROOT/test/globus-test * Pré-condições: * Condição para o sucesso: Mensagem "GlobusGridMachine is working well..." * Possíveis problemas e como tentar resolvê-los: * (TODO): Ver problema do $HOME. Fazer esse teste. Criar mais logins para o globus. ===> Teste5:baseMachineTest * Descrição: Executar o script * Caminho_teste:$MGROOT/test/misc/baseMachineTest * Condição para o sucesso: O script escreve a mensagem: "baseMachineTest ok!!" * (TODO???): (Fazer um mg-stop antes) Ver problema do caso em que o endereço está em uso pra saber se a mensagem deve ser mostrada para o usuário. ===> Teste6:uafactory-test * Descrição: Executar o script * Caminho_teste:$MGROOT/test/misc/uafactory-test * Condição para o sucesso: O script escreve a mensagem: "Finished with all tests ok!" * Possíveis problemas e como tentar resolvê-los: - PROB_SOL_[6A]: Caso o teste falhe, mostrando a mensagem "Test aborted", tentar remover os arquivos $MGROOT/var/GMCache.ser, $MGROOT/var/LocalGMP.ser e $MGROOT/var/*.dat. Ver se apagando só o LocalGMP.ser funciona. * (TODO): Esse teste deve ser revisto, e tentar apagar esses arquivos no próprio teste. ==> Teste7:contactgm-test * Descrição: Executar o script passando o arquivo $MGROOT/test/misc/gridContactgm-test como parametro * Caminho_teste: $MGROOT/test/misc/contactgm-test * Condição para o sucesso: É impressa a mensagem "Finished ..." * Possíveis problemas e como tentar resolvê-los: PROB_SOL_[7A]: As vezes aparece a mensagem "Killed". Isso indica que com o mg-stop, além do processo do my-grid, o próprio processo referente ao teste foi terminado. Nesse caso o teste foi "Ok", mas precisamos resolver esse problema. * (TODO): Resolver o problema do mg-stop que acaba matando o próprio teste. ==> Teste8: rodaTestes * Descrição: Executar o script e ir fechando as janelinhas do JUnit a medida em que aparecem. * Caminho_teste: $MGROOT/test/ui/rodaTestes * Condição para o sucesso: Green bars em todas as janelas abertas e finalização do teste. * Possíveis problemas e como tentar resolvê-los: PROB_SOL_[8A]: Na máquina de Aliandro, dois testes falham porque o teste não consegue copiar o arquivo MG.defaults. * (TODO): Mandar para background o processo que vai abrindo as janelas do JUnit, mas de forma que o próximo só comece depois de acabar o último (usar o waitForJob). Checar esse problema da cópia do MG.defaults. ===> Teste9:gateway-test * Descrição: Executar o script passando o arquivo $MGROOT/test/gateway/gridGatewayTest. Após o teste deve-se desbloquear * Caminho_teste: $MGROOT/test/gateway/gateway-test * Pré-condições: Criar o diretório $MGROOT/sample/output caso ele não exista. Utilizar o script $MGROOT/test/gateway/bloqueiaAcesso para criar um firewall e simular o gateway. Testar se realmente o acesso foi bloqueado. * Condição para o sucesso: O script imprime a mensagem "The Gateway is working well..." * (TODO): Automatizar as pré-condições. ===> Teste10:mg-gftest-es [TODO] * Descrição: Executar o script. * Caminho_teste: $MGROOT/test/gateway/mg-gftest-es * Pré-condições: Deve-se ter acesso às máquinas do ES * Condição para o sucesso: O script imprime a mensagem "The Gateway is working well..." * Possíveis problemas e como tentar resolvê-los: PROB_SOL_[10A]:Esse teste está apresentando alguns problemas. * (TODO): Verificá-los e corrigir. Tentar fazer esse teste com nossa rede simulada. ===> Teste11A e Teste 11B:mg-mirrortest com gridScript(A) e com User Agent (B) * Descrição: Executar o script passando alguns parâmetros. Sem nenhum parâmetro, o mirror testado é "memba.ucsd.edu" * Caminho_teste: $MGROOT/test/mirror/mg-mirrortest * Pré-condições: Deve ser possível acessar a máquina utilizada como mirror. A classe MirrorTest.java deve estar compilada no diretório do teste. * Condição para o sucesso: O script imprime a mensagem "Test OK!" * Possíveis problemas e como tentar resolvê-los: PROB_SOL_[11A]: O teste utilizando San Diego estava apontando "permission denied" na hora de iniciar o user agent, de acordo com o server.log. Nesse caso, tem-se de apagar os scripts de lá e reenviar, ou pode-se checar o "masc" de lá que está sendo usado. * (TODO): Ver no script antmg build como fazer o .class ir direto para o diretório do teste. Ver se o script está matando o mygrid quando ele é abortado. ===> Teste12:wqrtest sem replicação * Descrição: Executar o script e e verificar a distribuição das tarefas na GUI. Após o término do teste, matar as tarefas nas máquinas utilizadas. * Caminho_teste: $MGROOT/test/wqr/wqrtest * Pré-condições: Alterar no MG.properties o número de réplicas para 1. * Condição para o sucesso: Observar na GUI o escalonamento. Como o teste não para, é preciso matar as tarefas que são executadas nas máquinas do grid (melhorar). O script mataLSD mata todos. * Possíveis problemas e como tentar resolvê-los: PROB_SOL_[12A]: Quando se dá um mg-stop, o log não está mostrando isso. * (TODO): Ver esse problema do mg-stop ===> Teste13:wqrtest2 sem replicação * Descrição: Executar o script e observar o escalonamento. * Caminho_teste: $MGROOT/test/wqr/wqrtest2 * Pré-condições: Ver se no MG.properties o número de réplicas é 1. * Condição para o sucesso: Observar na gui se o escalonamento foi OK. * Possíveis problemas e como tentar resolvê-los: PROB_SOL_[13A]: Se as tarefas estiverem falhando muito, ver permissões do arquivo "init" do diretório "wqr" ===> Teste14:wqrtest3 sem replicação * Descrição: Executar o script e observar o escalonamento. * Caminho_teste: $MGROOT/test/wqr/wqrtest3 * Pré-condições: Ver se no MG.properties o número de réplicas é 1. * Condição para o sucesso: Observar na gui se o escalonamento foi OK. ===> Teste15:wqrtestdeadlock sem replicação * Descrição: Executar o script e observar o escalonamento.São submetidas várias tarefas que ficam falhando rapidamente devido a falta de permissão. * Caminho_teste: $MGROOT/test/wqr/wqrtestdeadlock * Pré-condições: Ver se no MG.properties o número de réplicas é 1. * Condição para o sucesso: O teste termina até a última tarefa sem travar. ===> Teste16:wqrtestLoop sem replicação * Descrição: Executar o script e observar o escalonamento.São submetidas várias tarefas de tamanhos variados e é usado todo o grid do lsd. * Caminho_teste: $MGROOT/test/wqr/wqrtestLoop * Pré-condições: Ver se no MG.properties o número de réplicas é 1. Tirar sua própria máquina do grid. * Condição para o sucesso: O teste termina até a última tarefa terminar, na GUI não fica NONE numa máquina por muito tempo e nem as tarefas falham muito. * Possíveis problemas e como tentar resolvê-los: PROB_SOL_[16A]: Caso o teste termine sem escalonar todas as tarefas, havendo um erro de conexão, verificar se a máquina local não está incluída no grid. ===> Teste17:wqrtest ===> Teste18:wqrtest2 ===> Teste19:wqrtest3 ===> Teste20:wqrtestdeadlock ===> Teste21:wqrtestLoop São semelhantes aos testes 12-21, sendo que se deve observar além do escalonamento, a replicação das tarefas. Além disso, como pré-condição, no MG.properties o número de réplicas tem de ser maior que 1. Um possível problema que está sendo investigado é que tarefas replicadas não estão aparecendo na aba de Jobs da GUI. ===> Teste22:gs-test com storageaffinity * Descrição: Executar o script * Caminho_teste: $MGROOT/test/storageaffinity/gs-test * Pré-condições: Alterar no MG.properties o tipo do escalonador para * Condição para o sucesso: O script escreve a mensagem "Grid Script is working well..." * (TODO): Fazer melhorias para otimizar o tempo do teste (ver mg-uafactory) ===> Teste23:ua-test com storageaffinity * Descrição: Executar o script * Caminho_teste:$MGROOT/test/storageaffinity/ua-test * Pré-condições: [ver] * Condição para o sucesso: Para cada um dos 8 casos de teste, se funcionar, o script escreve: "nth Storage Affinity User Agent test OK!", e o próximo caso de teste vai iniciar. * Possíveis problemas e como tentar resolvê-los: PROB_SOL[23A]:No segundo caso de teste, ele para e não prossegue o teste (TODO). * (TODO): Resolver o problema anterior, usar mg-uafactory ao invés do outro script. Ver o problema que ele tem de mesmo falhando, seguir para o próximo caso de teste. Organizar o backup, pois nem sempre os arquivos são trazidos de volta. Ver exemplo de replicação. Rever o oitavo caso de teste que apresenta problemas devido ao mg-stop. ===> Teste23:replication-test com storageaffinity * Descrição: Executar o script * Caminho_teste:$MGROOT/test/storageaffinity/replication-test * [TODO]: Descrever esse teste melhor ===> Teste25:globus-test com storageaffinity[TODO] * Descrição: * Caminho_teste:$MGROOT/test/storageaffinity/globus-test * Pré-condições: * Condição para o sucesso: Mensagem "GlobusGridMachine is working well..." * Possíveis problemas e como tentar resolvê-los: ===> Teste26:globusGridMachineAppTest * Descrição: Executar javamg globusGridMachineAppTest * Caminho_teste:$MGROOT/test/storageaffinity/globus-test * Pré-condições: * Condição para o sucesso: Mensagem "GlobusGridMachine is working well..." * Possíveis problemas e como tentar resolvê-los: - teste com ourgrid (futuro) --------------------------------------------------------------------------------------------------------- ============================== TODO GERAL DE TESTES ============================== - Transformar problemas e possíveis soluções em pré-condiçoes que o teste automático pode testar - Quando ocorrer tudo OK colocar nos scripts maneiras de identificar mais facilmente a mensagem como =============> SUCCESS!!!! - Passar descrições de README-TEST para cada teste usado no roteiro(talvez) - No teste "rodaTestes" da "ui" seria bom mandar abrir em background as janelas. - Deixar homogeneas as mensagens ou utilizar esquema de green bar. - Tentar fazer integrações em conjunto, pra evitar overhead relativo ao tempo dos testes. - Idéia para o mg-stop: No UserAgent deve haver um método que faça System.exit(). Na classe Main do MyGrid, deve haver um método chamado stop() que também faça System.exit() e que faça o mesmo com as threads de lá. O próprio LocalGMP poderia matar os UserAgents. --------------------------------------------------------------------------------------------------- =============================================================================== Template para um passo de Teste -> Usado em "/docs/tests/novoRoteiroTestes.txt" =============================================================================== ===> Teste[x]:[testName] * Descrição: * Caminho_teste: * Pré-condições: * Condição para o sucesso: * Possíveis problemas e como tentar resolvê-los: PROB_SOL_[Y]:[Descrição, caso não já tenha sido explicada antes] Obs: As pré-condições e os problemas são optativos.