Ejemplo n.º 1
0
def mkfs_tests():
    print '***** Mkfs Tests *****'

    # Should create root directory with '.' and '..'
    issue('mkfs')
    issue('ls')

    # Should format disk, mount root directory, and init fd table
    issue('create f1 10')
    issue('open f2 3')
    issue('mkdir d1')
    issue('cd d1')
    issue('open f3 2')
    issue('link f3 f4')
    issue('create f5 10')
    issue('ls')
    issue('mkfs')
    issue('ls')
    issue('open f6 3')

    print do_exit()
    print '***********************'
    sys.stdout.flush()
Ejemplo n.º 2
0
def stat_tests():
    print '***** Stat Tests *****'
    issue('mkfs')

    # Try to stat non-existent directory (should fail)
    issue('stat fake')

    # Stat meta-directories
    issue('stat .')
    issue('stat ..')

    # Create a file and stat it
    issue('create a 10')
    issue('stat a')

    # Create link to existing file and stat both
    issue('link a b')
    issue('stat a')
    issue('stat b')

    # Unlink original and stat again
    issue('unlink a')
    issue('stat b')

    # Create a directory and stat it
    issue('mkdir c')
    issue('stat c')

    # Create a file spanning multiple blocks and stat it
    issue('create d 1024')
    issue('stat d')

    print do_exit()
    print '***********************'
    sys.stdout.flush()
Ejemplo n.º 3
0
def close_tests():
    print '***** Close Tests *****'
    issue('mkfs')

    # Try to close a non-existent fd (should fail)
    issue('close 0')

    # Try to close bad fd's (should fail)
    issue('close -1')
    issue('close a')
    issue('close 256')

    # Open a file and then close it
    issue('open a 3')
    issue('close 0')
    issue('ls')

    # Open a directory and then close it
    issue('open .. 1')
    issue('close 0')

    # Open two files and then close them
    issue('open a 1')
    issue('open b 2')
    issue('close 0')
    issue('close 1')

    print do_exit()
    print '***********************'
    sys.stdout.flush()
Ejemplo n.º 4
0
def open_tests():
    print '***** Open Tests *****'
    issue('mkfs')

    # Try to open new file read-only (should fail)
    issue('open fake 1')

    # Try to open file with bad flags (should fail)
    issue('open a 0')
    issue('open a 4')
    issue('open a -1')
    issue('open a FS_O_RDWR')

    # Create a file and then open it
    issue('create a 0')
    issue('open a 3')

    # Open new file write-only, then read-only
    issue('open b 2')
    issue('open b 1')
    issue('ls')

    # Close and reopen file
    issue('close 0')
    issue('open a 3')

    # Open a directory read-only, but not write-only or read-write
    issue('open . 1')
    issue('open . 2')
    issue('open . 3')

    print do_exit()
    print '***********************'
    sys.stdout.flush()
Ejemplo n.º 5
0
def unlink_tests():
    print '***** Unlink Tests *****'
    issue('mkfs')

    # Try to unlink non-existent file (should fail)
    issue('unlink fake')

    # Try to unlink a directory (should fail)
    issue('unlink .')

    # Create a file and unlink it
    issue('create a 0')
    issue('ls')
    issue('unlink a')
    issue('ls')

    # Create two links and unlink them
    issue('create a 0')
    issue('link a b')
    issue('ls')
    issue('unlink a')
    issue('ls')
    issue('unlink b')
    issue('ls')

    # Don't free data of unlinked file until fds are closed
    issue('create a 5')
    issue('open a 3')
    issue('unlink a')
    issue('read 0 5')
    issue('close 0')

    print do_exit()
    print '***********************'
    sys.stdout.flush()
Ejemplo n.º 6
0
def cd_tests():
    print '***** Cd Tests *****'
    issue('mkfs')
    issue('ls')

    # Try to cd to non-existent directory (should fail)
    issue('cd fake')

    # cd to self through meta-directories
    issue('cd .')
    issue('ls')
    issue('cd ..')
    issue('ls')

    # Follow directory a level down, self-link, and back up
    issue('mkdir a')
    issue('cd a')
    issue('ls')
    issue('cd .')
    issue('ls')
    issue('cd ..')
    issue('ls')

    print do_exit()
    print '***********************'
    sys.stdout.flush()
Ejemplo n.º 7
0
def link_tests():
    print '***** Link Tests *****'
    issue('mkfs')

    # Try to link non-existent file (should fail)
    issue('link fake fake2')

    # Try to link directory (should fail)
    issue('link . this')

    # Try to link a file to itself (should fail)
    issue('create f 0')
    issue('ls')
    issue('link f f')

    # Try to name link same as existing file (should fail)
    issue('create g 0')
    issue('ls')
    issue('link f g')

    # Create some links
    issue('link f f1')
    issue('link f1 f2')
    issue('link g g0')
    issue('link g gz')
    issue('ls')

    print do_exit()
    print '***********************'
    sys.stdout.flush()
Ejemplo n.º 8
0
def rmdir_tests():
    print '***** Rmdir Tests *****'
    issue('mkfs')

    # Try to remove non-existent directory (should fail)
    issue('rmdir fake')

    # Try to remove meta-directories (should fail)
    issue('rmdir .')
    issue('rmdir ..')

    # Make an empty directory and remove it
    issue('mkdir d')
    issue('ls')
    issue('rmdir d')
    issue('ls')

    issue('mkdir d')
    issue('cd d')
    issue('create a 0')
    issue('cd ..')
    issue('ls')
    issue('rmdir d')

    print do_exit()
    print '***********************'
    sys.stdout.flush()
Ejemplo n.º 9
0
def mkdir_tests():
    print '***** Mkdir Tests *****'
    issue('mkfs')

    # Try to make meta-directories (should fail)
    issue('mkdir .')
    issue('mkdir ..')

    # Make a new directories
    issue('mkdir d')
    issue('ls')

    # Try to make directory with same name (should fail)
    issue('mkdir d')

    # Make some more directories for lulz
    issue('mkdir ty_bit')
    issue('mkdir ected_edge')
    issue('mkdir ridkm')
    issue('ls')

    print do_exit()
    print '***********************'
    sys.stdout.flush()
Ejemplo n.º 10
0
def write_tests():
    print '***** Write Tests *****'
    issue('mkfs')

    # Try to write to unopened file descriptor (should fail)
    issue('write 0 x')

    # Try to write to a closed file descriptor (should fail)
    issue('create a 32')
    issue('open a 2')
    issue('close 0')
    issue('write 0 x')

    # Write to write-only and read-write files but not read-only
    issue('open a 1')
    issue('write 0 x')
    issue('close 0')
    issue('open a 2')
    issue('write 0 y')
    issue('close 0')
    issue('open a 3')
    issue('write 0 z')
    issue('close 0')

    # Write to two files twice each
    issue('open b1 3')
    issue('open b2 3')
    issue('write 0 hi,')
    issue('write 1 sup,')
    issue('write 0 nmhbu')
    issue('write 1 same')
    issue('cat b1')
    issue('cat b2')
    issue('close 0')
    issue('close 1')

    # Try writing past end of file
    issue('create s 0')
    issue('open s 3')
    issue('lseek 0 1')
    issue('write 0 *')
    issue('lseek 0 3')
    issue('write 0 do_you_wanna_have_a_bad_time?')
    issue('cat s')

    # Write to different points in file
    issue('lseek 0 7')
    issue('write 0 dirty')
    issue('lseek 0 31')
    issue('write 0 bit')
    issue('cat s')

    print do_exit()
    print '***********************'
    sys.stdout.flush()
Ejemplo n.º 11
0
def read_tests():
    print '***** Read Tests *****'
    issue('mkfs')
    issue('ls')

    # Try to read from unopened file descriptor (should fail)
    issue('read 0 1')

    # Read 0 bytes from unopened file descriptor
    issue('read 0 0')

    # Try to read from closed file descriptor (should fail)
    issue('create a 32')
    issue('open a 1')
    issue('close 0')
    issue('read 0 1')

    # Read from a directory
    issue('open . 1')
    issue('read 0 10')
    issue('close 0')

    # Read from read-only and read-write files but not write-only
    issue('open a 1')
    issue('read 0 1')
    issue('close 0')
    issue('open a 2')
    issue('read 0 1')
    issue('close 0')
    issue('open a 3')
    issue('read 0 1')
    issue('close 0')

    # Read from two files twice each
    issue('create b 16')
    issue('open a 3')
    issue('open b 3')
    issue('read 0 2')
    issue('read 1 2')
    issue('read 0 4')
    issue('read 1 3')
    issue('close 0')
    issue('close 1')

    # Try to read negative bytes (should fail)
    issue('open a 1')
    issue('read 0 -1')
    issue('read 0 -2')

    # Read whole contents of file
    issue('read 0 32')

    # Try reading past end of file
    issue('read 0 1')
    issue('read 0 10')

    # Read from different points in file
    issue('lseek 0 7')
    issue('read 0 2')
    issue('lseek 0 30')
    issue('read 0 1')
    issue('lseek 0 12')
    issue('read 0 1')
    issue('lseek 0 0')
    issue('read 0 1')
    issue('lseek 0 17')
    issue('read 0 1')
    issue('lseek 0 2')
    issue('read 0 1')

    print do_exit()
    print '***********************'
    sys.stdout.flush()
Ejemplo n.º 12
0
def misc_tests():
    print '***** Misc Tests *****'
    issue('mkfs')

    # Create a file with max name length and max size
    issue('create ' + ('.' * 32) + ' 4096')
    issue('ls')
    issue('cat ' + ('.' * 32))

    # Traverse deeply nested directory
    issue('mkfs')
    for i in xrange(256):
        issue('mkdir deeper')
        issue('cd deeper')
    for i in xrange(256):
        issue('cd ..')

    # Thrash on directory entry block boundary
    issue('mkfs')
    issue('create f 0')
    for i in xrange(6):
        issue('link f f' + str(i))
    issue('ls')

    for i in xrange(32):
        issue('unlink f' + str((i * 2) % 6))
        issue('link f f' + str((i * 2) % 6))
    issue('ls')

    print do_exit()
    print '***********************'
    sys.stdout.flush()