Coder Social home page Coder Social logo

sigmund's Introduction

Sigmund is a non-regression utility designed to test filesystems

WRITE THE CONFIGURATION FILE
============================

In sigmund's root directory, edit the run_test.rc file
It will look like this:

 TEST_DIR=/mnt/sigmund
 BUILD_TEST_DIR=/tmp/sigmund

 ##### Variables to be used by module allfs #####
 # Path to cthon04 test's suite
 CTHON04_DIR=/opt/cthon04
 GIT_CLONE_URL=/opt/GANESHA/.git

 # Non-root user that will run part of the test
 TEST_USER=phil

 # Primary group for the TEST_USER
 GROUP1=users

 # One of the alternate group for TEST_USER
 GROUP2=ganesha

Important variables are
- TEST_USER: the user whose identity will be used to run the tests
- GROUP1: Primary group for TEST_USER
- GROUP2: one of the secondary groups (or alternate groups) for TEST_USER
- TEST_DIR: the directory, inside the mount point to be tested, were Sigmund will be run. Make sure that TEST_USERcan read and write in it
- BUILD_TEST_DIR: a temporary directory where a few C programs will be generated. Make sure that TEST_USERcan read and write in it
- CTHON04_DIR: the directory where ctho04 was installed. TEST_USER must be abe to read/execute in it.
- GIT_CLONE_URL : a git repository that TEST_USERcan read (even in a read-only way). I recommend a local repo for generating a bigger stress to the filesystem


BUILD THE ANCILLARY TESTS
=========================

Build tests's program by running ./build_test.sh


RUN THE TESTS
=============

--- Behaviour ---
Sigmund is designed to be run on top of various filesystems. Each type of FS to be tested is a "behavior". 
Behavior can be easily added to Sigmund by adding a file in the behavior/ directory in Sigmund's source tree.
Currently supported behaviors currently are:
- 9p
- ext4
- lustre
- nfs
Regarding the chose behavior, some tests will be run of not. For example, xattr tests won't run on nfs but will on 9p and lustre.

--- Running the tests ---
Running the tests can do it in three way:
- running it in verbose mode : use "./sigmund.sh behavior"
- running it in verbose mode with extra JUnit report. This is designed for integration in jenkins : "./sigmund.sh behavior -j"
- running it in quiet mode : use "./sigmund.sh behavior -q"

When in quiet mode, ouput will look like this:

 # ./sigmund.sh ext4 -q
 test1m :  ALLFS: copy file with 444 mode             [  OK  ]
 test1g :  ALLFS: traverse 700 dirs with altgroups    [  OK  ]
 test2r :  ALLFS: rm -rf of wide namespace            [  OK  ]
 test3b :  ALLFS: cthon04's basic tests               [  OK  ]
 test3g :  ALLFS: cthon04's general tests             [  OK  ]
 test3s :  ALLFS: cthon04's special tests             [  OK  ]
 test3l :  ALLFS: cthon04's lock tests                [  OK  ]
 test4g :  ALLFS: git clone a local repository        [  OK  ]
 test4s :  ALLFS: Tar calls utimes on symlink         [  OK  ]
 test4r :  ALLFS: Use mmap() to read a file           [  OK  ]
 test4w :  ALLFS: Use mmap() to write a file          [  OK  ]
 test21f : XATTR: simple xattr set/get : file         [  OK  ]
 test21d : XATTR: simple xattr set/get : directory    [  OK  ]
 test21s : XATTR: simple xattr set/get : symlink      [  OK  ]
 test22f : XATTR: xattr creation/deletion : file      [  OK  ]
 test22d : XATTR: xattr creation/deletion : directory [  OK  ]
 test22s : XATTR: xattr creation/deletion : symlink   [  OK  ]
 test23f : XATTR: mulitple sets + 1 check : file      [  OK  ]
 test23d : XATTR: mulitple sets + 1 check : directory [  OK  ]
 test23s : XATTR: mulitple sets + 1 check : symlink   [  OK  ]
 All tests passed (20 successful, 0 skipped)

You can restrict t a subset of the tests by setting the ONLY variable.

 # ONLY=1,3,4s ./sigmund.sh ext4 -q
 test1m :  ALLFS: copy file with 444 mode             [  OK  ]
 test1g :  ALLFS: traverse 700 dirs with altgroups    [  OK  ]
 test3b :  ALLFS: cthon04's basic tests               [  OK  ]
 test3g :  ALLFS: cthon04's general tests             [  OK  ]
 test3s :  ALLFS: cthon04's special tests             [  OK  ]
 test3l :  ALLFS: cthon04's lock tests                [  OK  ]
 test4s :  ALLFS: Tar calls utimes on symlink         [  OK  ]
 All tests passed (7 successful, 0 skipped)

The EXCLUDE variable can be used to selct tests as well. EXCLUDE is kind of "negative ONLY".
Tests listed in EXCLUDE won't be run.

Example : do not run test2 and test4w

 # EXCLUDE=2,4w  ./sigmund.sh ext4 -q
 test1m :  ALLFS: copy file with 444 mode             [  OK  ]
 test1g :  ALLFS: traverse 700 dirs with altgroups    [  OK  ]
 test3b :  ALLFS: cthon04's basic tests               [  OK  ]
 test3g :  ALLFS: cthon04's general tests             [  OK  ]
 test3s :  ALLFS: cthon04's special tests             [  OK  ]
 test3l :  ALLFS: cthon04's lock tests                [  OK  ]
 test4g :  ALLFS: git clone a local repository        [  OK  ]
 test4s :  ALLFS: Tar calls utimes on symlink         [  OK  ]
 test4r :  ALLFS: Use mmap() to read a file           [  OK  ]
 test21f : XATTR: simple xattr set/get : file         [  OK  ]
 test21d : XATTR: simple xattr set/get : directory    [  OK  ]
 test21s : XATTR: simple xattr set/get : symlink      [  OK  ]
 test22f : XATTR: xattr creation/deletion : file      [  OK  ]
 test22d : XATTR: xattr creation/deletion : directory [  OK  ]
 test22s : XATTR: xattr creation/deletion : symlink   [  OK  ]
 test23f : XATTR: mulitple sets + 1 check : file      [  OK  ]
 test23d : XATTR: mulitple sets + 1 check : directory [  OK  ]
 test23s : XATTR: mulitple sets + 1 check : symlink   [  OK  ]
 0 tests FAILED, 18 successful, 0 skipped



Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.