Ambiente Distribuído de Injeção de Falhas de Comunicação para Teste de Aplicações Java de Rede
Resumo
Sistemas de alta disponibilidade representam um desafio para a meta de garantia de qualidade em seu projeto. Nestes casos, as estratégias implementadas para detecção de erros e recuperação de falhas devem ser criteriosamente testadas. Falhas comuns a ambientes de rede que afetem a troca de mensagens ou provoquem particionamento da rede podem ser emuladas em um ambiente de teste, no qual é executada a aplicação. A observação do comportamento da aplicação sob falhas permite refinar as estratégias de tolerância a falhas implementadas e antecipar a maneira como a aplicação reage a falhas em uma situação real. FIONA é uma ferramenta desenvolvida para o teste de aplicações distribuídas de rede escritas em Java e implementadas sob o protocolo UDP. Falhas de comunicação são injetadas através da instrumentação de classes de sistema, carregadas pela máquina virtual Java na inicialização da aplicação, sem alterar seu código. FIONA pode ser aplicada em um único nodo da rede ou operar de forma distribuída, facilitando assim o teste de aplicações de larga escala.
Referências
Ban, B. (1998). JavaGroups group communication patterns in Java. Technical report, Department of Computer Science, Cornell University.
Birman, K. P. (1996). Building Secure and Reliable Network Applications. Manning Publications, Co, Greenwich.
Carreira, J. e Silva, J. G. (1998). Why do some (weird) people inject faults? ACM SIGSOFT Software Engineering Notes, 23(1):42-43.
Chandra, R., Lefever, R. M., Joshi, K. R., Cukier, M., e Sanders, W. H. (2004). A globalstate-triggered fault injector for distributed system evaluation. IEEE Transactions on Parallel and Distributed Systems, 15(7):593-605.
Dawson, S., Jahanian, F., e Mitton, T. (1997). Experiments on six commercial TCP implementations using a software fault injection tool. Software - Practice and Experience, 27(12):1385-1410.
Drebes, R. J., Leite, F. O., Jacques-Silva, G., Mobus, F., e Weber, T. S. (2005). ComFIRM: a communication fault injector for protocol testing and validation. In Digest of Papers, The 6th IEEE LATW, páginas 115-120, Salvador, Bahia, Brazil.
Feldman, S. (2005). Quality assurance: Much more than testing. Queue, 3(1):26-29.
Hanna, S., Kadansky, M., e Rosenzweig, P. (1998). The Java Reliable Multicast Service: A reliable multicast library. Technical report, Sun Microsystems. Disponível em: [link].
Hsueh, M.-C., Tsai, T. K., e Iyer, R. K. (1997). Fault injection techniques and tools. IEEE Computer, 30(4):75-82.
Jacques-Silva, G., Drebes, R. J., Gerchman, J., e Weber, T. S. (2004a). FIONA: A fault injector for dependability evaluation of Java-based network applications. In Proc. of the 3rd IEEE Intl. Symposium on Network Computing and Applications, páginas 303-308, Cambridge, MA. IEEE Computer Society Press.
Jacques-Silva, G., Moraes, R. L. O., Weber, T. S., e Martins, E. (2004b). Validando sistemas distribuídos desenvolvidos em Java utilizando injeção de falhas de comunicação 19º Simpósio Brasileiro de Engenharia de Software 259 245 por software. In Anais do V Workshop de Testes e Tolerância a Falhas, páginas 53-64, Gramado, Brasil.
Kickzales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., e Irwin, J. (1997). Aspect-oriented programming. In Proceedings of the ECOOP'97, Jyväskylä, Finland.
Maillet, E. e Tron, C. (1995). On efficiently implementing global time for performance evaluation on multiprocessor systems. Journal of Parallel and Distributed Computing, 28(1):84-93.
Martins, E., Rubira, C. M. F., e Leme, N. G. M. (2002). Jaca: A reflective fault injection tool based on patterns. In Proceedings of DSN 2002, páginas 483-487, Washington, USA.
Massie, M. L., Chun, B. N., e Culler, D. E. (2003). The Ganglia distributed monitoring system: Design, implementation, and experience. Technical report, University of California, Berkeley.
Schneider, F. B. (1993). What good are models and what models are good? In Mullender, S., editor, Distributed Systems, páginas 17-26. Addison-Wesley, Workingham, 2nd edition.
Silveira, K. K. e Weber, T. S. (2005). Um injetor de falhas de comunicação construído usando programação orientada a aspectos. In Anais do V Workshop de Testes e Tolerância a Falhas, páginas 55-66, Fortaleza, CE.
Stott, D. T., Floering, B., Burke, D., Kalbarczyk, Z., e Iyer, R. K. (2000). NFTAPE: A framework for assessing dependability in distributed systems with lightweight fault injectors. In Proceedings of IPDS 2000, páginas 91-100, Chicago, USA.
Sun Microsystems (2004). Java Virtual Machine Tool Interface. Disponível em: <http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/>.
Wiesmann, M., Défago, X., e Schiper, A. (2003). Group communication based on standard interfaces. In Proceedings of NCA'03, Cambridge, MA.