The FlakyIO project examines the ability of applications to
handle exceptions. We use callee-generated software
exception generation to determine an application's ability to
handle error conditions.
The concept of the FlakyIO architecture can be applied to any
subsystem or module that generates an exception for the caller to
handle. We chose to explore I/O because I/O has a well-known
standard for error generation. We are able to test a large number
of applications without having to customize the exception generation.
SOFTWARE
FlakyPOSIX: A Flaky Distributed Filesystem
[DEMO]
The fault model in one of our own uses of FlakyIO has been to
emulate network failures in a distributed filesystem. We tested
the open source GNU textutils and binutils. These utilities are
typically distributed as fundamental tools used in Linux. We used
the PARIS program
analysis tool as the basis for FlakyIO.
FlakyPalm: A Flaky Wireless Network
[DEMO]
A handheld device is the most suceptible to network failures. We
have used the FlakyIO architecture to inject controlled faults
into the networking of a wireless handheld device. In spite of a
wireless network being more apparently flaky than a wired one,
applications still fail to account for possible errors.
FlakyNet: A Flaky Network Server
[DEMO]
It is not just wireless handheld devices that have to account for
network failures. While a wired network may seem more reliable,
with denial of service attacks more likely the network is more
reliable but our servers are more flaky. We inject controlled
faults into distributed applications to determine their ability to
handle flaky servers.
FlakyPHP: Coming Soon!
FlakyCORBA: Coming Soon!
FlakyJava: Coming Soon!
FlakyDatabase: Coming Soon!
RELATED PROJECTS
Direct comments and questions to: bigrigg@ices.cmu.edu