https://github.com/agroce/testfs
DeepState testing for TestFS, a user level toy file system that is similar to ext3
https://github.com/agroce/testfs
Last synced: about 1 year ago
JSON representation
DeepState testing for TestFS, a user level toy file system that is similar to ext3
- Host: GitHub
- URL: https://github.com/agroce/testfs
- Owner: agroce
- Created: 2018-06-25T16:20:59.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2023-04-14T16:41:07.000Z (about 3 years ago)
- Last Synced: 2025-03-23T20:43:27.960Z (about 1 year ago)
- Language: C
- Homepage:
- Size: 160 KB
- Stars: 6
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
testfs
======
This is a DeepState test harness for TestFS, which is a user level toy file system that is similar to ext3.
TestFS comes out of U. Toronto file system research:
J. Sun, D. Fryer, A. Goel, and A. D. Brown, “Using declarative invariants for protecting file-system integrity,” in Proceedings of the 6th Workshop on Programming Languages and Operating Systems. 2011. http://www.sigops.org/sosp/sosp11/workshops/plos/06-sun.pdf
This version is based on a series of implementations, first adapted to DeepState by Peter Goodman (https://github.com/pgoodman/testfs), now maintained by Alex Groce. The primary change is that a broken (undefined behavior causing) inode hash table has been disabled, with inode lookups always going to "disk." Disk here is a block-device emulated with a Big Old Array. Also, this adds a semi-POSIX layer on top of the low-level interface to TestFS.
Tests.cpp shows what a DeepState harness for a POSIX-like interface looks like.
The tests check that resets at inopportune times do not make the file system unmountable (which does not hold).
Usage
=====
Easiest way to play with this is to use the [DeepState docker](https://github.com/trailofbits/deepstate#DOCKER), and:
1. clone this repo
2. `cd testfs; make`
You then have a binary you can fuzz with Eclipser, a binary you can fuzz with libFuzzer, a binary you can fuzz with AFL, and a binary that collects code coverage information.