jaca a reflective fault injection tool based on patterns n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Jaca: a Reflective Fault Injection Tool based on Patterns PowerPoint Presentation
Download Presentation
Jaca: a Reflective Fault Injection Tool based on Patterns

Loading in 2 Seconds...

play fullscreen
1 / 15

Jaca: a Reflective Fault Injection Tool based on Patterns - PowerPoint PPT Presentation


  • 85 Views
  • Uploaded on

Jaca: a Reflective Fault Injection Tool based on Patterns. Eliane Martins Cecilia Rubira Nelson Leme Institute of Computing State University of Campinas - Unicamp Brasil. International Performance and Dependability Symposium — IPDS’2002 Washington, D.C., USA • June 23 - 26, 2002. Contents.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Jaca: a Reflective Fault Injection Tool based on Patterns' - stone-caldwell


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
jaca a reflective fault injection tool based on patterns

Jaca: a Reflective Fault Injection Tool based on Patterns

Eliane Martins

Cecilia Rubira

Nelson Leme

Institute of Computing

State University of Campinas - Unicamp

Brasil

International Performance and Dependability Symposium — IPDS’2002

Washington, D.C., USA • June 23 - 26, 2002

contents
Contents
  • Context
  • Motivation and Objective
  • Jaca
  • Preliminary Experiments
  • Conclusions
  • Future Works
fault injection
Fault Injection
  • Deliberate introduction of faults into a system to observe its behavior
    • valuable approach to validate dependability properties
    • useful to evaluate impact of error recovery mechanisms into performance
  • Approaches:
    • simulation-based fault injection
    • hardware fault injection
    • software fault injection (SFI)
slide4

SFI Approaches

  • Static injection (compile-time)
    • source or Assembler code alteration
  • no extra code is needed
  • faults triggered when
  • altered code is accessed
  • Dynamic injection (runtime)
    • special process
    • interrupt routines
    • trace mode
    • code insertion
  • needs extra code: fault injector
  • and monitor
  • needs fault trigger mechanism
motivation
Motivation
  • Typical runtime SFI tools work at machine code level

ex.: corruption of CPU registers

    • useful to emulate consequences of hardware failures
    • low intrusion into the target application
    • great effort to emulate software faults

ex.: incorrect assignment of values to variables; incorrect array indexes; missing function

  • Why is it important to emulate software faults ?
    • software faults are major cause of system failures
    • COTS software components use is increasing, even for critical applications
our goals
Our Goals
  • Problem:
    • Runtime injection at source-code level, affecting objects’ attributes and methods
    • Separation of concerns: fault injection and monitoring code separated from application code
  • Approach used:
    • computational reflection
computational reflection
Computational Reflection
  • Capability of a system to reason about or act upon itself
  • Reflective systems manipulate
    • external data
    • meta information: data representing system’s aspects

structural reflection

manipulation of structural aspects

ex.: definition of a class or function

behavioral reflection

manipulation of system’s behavior

ex.: method invocation interception

  • Reflective systems’
  • architecture:
    • base level: system’s functions
    • meta level: interception and/or
    • alteration functions
behavioral reflection and oo

A

B

Behavioral Reflection and OO

object X : class

attribute A : type, value

method M1 : name, parameters

metaobject

meta-level

base-level

M1

object X

M2

M3

slide9
Jaca
  • Evolution of FIRE:
    • runtime fault injection tool for applications written in C++
    • showed feasibility of the approach
    • source code dependency
  • Main requirements:
    • validation of Java applications
    • high portability
    • source code independence
    • ability to incorporate new fault models
slide10

Development Aspects

  • Design based on the Fault Injection Pattern set:
    • reuse of architectural solutions already used to implement fault injection tools
  • Code is written in pure Java
  • Use of Javassist reflection library:
    • extends Java reflection API
    • requires no modification to the standard JVM
    • performs reflection at bytecode level during load time
  • modularity
  • extensibility
  • portability
  • source code
  • independence
jaca s architecture

Log File

Fault List

Class List

Jaca’s Architecture

Interface

Jaca

Controller

Injector

Manager

Monitor

Manager

Activator

Logical

Injector

Logical

Injector

Logical

Monitor

Logical

Monitor

Meta Level

Physical

Injector

Physical

Monitor

Target Application

Base Level

application instrumentation

Application’s Class Files

Metaobjects’ ClassFiles

Javassist library

Metaobject

Physical Injector

Physical Monitor

Application Instrumentation

byte code

byte code

Activator

(class loader)

byte code

+

hooks to metaobjects

preliminary experiments
Preliminary Experiments
  • Experiments to show Jaca’s extensibility:
    • Assembler-level fault injection
    • JNIEXPORT void JNICALL Java_LowLevelRoutine
    • (JNIEnv *param1, jobject param2)
    • {
    • int a, b, c, d, op, num ;
    • printf ( "\n###-> testing CPUID\n” ) ;
    • op = 1;
    • asm (
    • "cpuid"
    • : "=a" (a),
    • "=b" (b),
    • "=c" (c),
    • "=d" (d)
    • : "a" (op));
    • printf ( "\n###-> Register values: - EAX: %i, EBX: %i,
    • ECX: %i, EDX: %i\n\n", a, b, c, d ) ;
  • ... }

Physical

Injector

Low Level

Functions

LowLevelRoutine( )

conclusions and future works
Conclusions and Future Works
  • Jaca:
    • an extensible, portable software fault injector
    • faults affect attributes and methods of Java applications
    • fault injection uses computational reflection
    • source code independent but ...
    • dependent on reflection toolkit used
  • Further works:
    • validate real world applications
      • COTS ODBMS is being tested
    • extend Jaca’s functionalities
    • use of other reflection toolkits: Guaraná, Kava
    • explore Assembler-level fault injection features
thank you
Thank you !
  • Our emails:

eliane@ic.unicamp.br

cmrubira@ic.unicamp.br

nleme@post.com