[sheepdog] [PATCH v2] tests: add a DynamoRIO client for testing the jounaling mechanism

Hitoshi Mitake mitake.hitoshi at gmail.com
Mon Jul 1 11:18:10 CEST 2013


At Mon, 1 Jul 2013 16:35:22 +0800,
Liu Yuan wrote:
> 
> On Mon, Jul 01, 2013 at 04:58:48PM +0900, Hitoshi Mitake wrote:
> > At Mon, 1 Jul 2013 15:53:22 +0800,
> > Liu Yuan wrote:
> > > 
> > > On Mon, Jul 01, 2013 at 03:36:03AM +0900, Hitoshi Mitake wrote:
> > > > From: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
> > > > 
> > > > This patch adds a DynamoRIO (often called DR) client for testing the
> > > > jounaling mechanism. Because of its nature, the recoverying path is
> > > > the most important and hard to test part of the journaling
> > > > mechanism. They need to be tested well.
> > > > 
> > > > But testing targetted recovery paths with traditional tests/ stuff is
> > > > hard because:
> > > > 1. killing sheeps with kill commands doesn't take into account the
> > > >    internal state
> > > > 2. inserting exit()s into sheep manually is a painful work
> > > > 
> > > > So this patch implements a fault injection mechanism with DR. DR
> > > > provides rich functionalities of transparent dynamic
> > > > instrumentation. One of the functionalities makes inserting function
> > > > calls before and after system calls possible. With this mechanism, the
> > > > fault injection mechanism lets sheep exit at suitable timings for
> > > > testing recovery paths of the journaling.
> > > > 
> > > > How to use:
> > > > 0. preparation
> > > >    $ cd
> > > >    $ svn checkout http://dynamorio.googlecode.com/svn/trunk/ dynamorio
> > > >    $ cd dynamorio
> > > >    $ mkdir build
> > > >    $ cd build
> > > >    $ cmake ..
> > > >    $ make
> > > > 
> > > > (This patch assumes the source code of DR is store in $HOME/dynamorio,
> > > > and the build is done in $HOME/dynamorio/build)
> > > > 
> > > > 1. build the DR client
> > > >    $ cd tests/fi/journaling/
> > > 
> > > what does fi stand for? It is better make it more descriptive.
> > 
> > This fi stands for "Fault Injection". I thought a directory name like
> > "fault_injection" is too long. How do you think? If you like the
> > longer one, I'll rename it.
> 
> name it as dynamorio is okay. Will usual make fail if I don't install dynamorio?

OK, I'll rename it as dynamorio. The scripts under functional/ also do
some sort of fault injection, the previous name is not so good.

And you need to install DR. The way of installation is described in
the commit log. It seems that I have to prepare a document for it on
github wiki.

Thanks,
Hitoshi




More information about the sheepdog mailing list