def test_9_readdir(self): val, dirs = hw3.readdir("/") self.assertTrue(val == 0) self.assertTrue(dirs[0].name == "file.1k") self.assertTrue(dirs[1].name == "file.10") self.assertTrue(dirs[2].name == "dir-with-long-name") self.assertTrue(dirs[3].name == "dir2") self.assertTrue(dirs[4].name == "dir3") self.assertTrue(dirs[5].name == "file.12k+") self.assertTrue(dirs[6].name == "file.8k+")
def test_3_mkdir_wide(self): num = 500 hw3.mkdir("/hello", 0) for i in range(num): v = hw3.mkdir("/hello/" + str(i), i) self.assertEqual(v, 0) n, entries = hw3.readdir("/hello") self.assertEqual(n, num)
def test_1_mkdir(self): print "Test 1 - mkdir:" table = [('/dir1', 0o000755), ('/dir1/dir2', 0o000755)] for path, mode in table: v = hw3.mkdir(path, mode) self.assertTrue(v == 0) v, sb = hw3.getattr(path) self.assertTrue(v == 0) self.assertTrue(sb.st_mode == hw3.S_IFDIR | mode) v, dirents = hw3.readdir(path) self.assertTrue(v == 0) self.assertTrue(len(dirents) == 0)
def test_9_readdir(self): # print('Test 9 - Test for readdir()') v, dirents = hw3.readdir("/") names = set([d.name.decode('utf-8') for d in dirents]) self.assertEqual(names, set(('file.A', 'dir1', 'file.7', 'file.10'))) table = [('/dir1', 0o040755, 1024, 0x50000190), ('/file.A', 0o100777, 1000, 0x500000C8), ('/file.7', 0o100777, 6644, 0x5000012C), ('/file.10', 0o100777, 10234, 0x5000012C)] for path, mode, size, ctime in table: v, sb = hw3.getattr(path) self.assertEqual(sb.st_mode, mode) self.assertEqual(sb.st_size, size) self.assertEqual(sb.st_ctime, ctime)
def test_rmdir_valid(self): hw3.mkdir("/hello", 0) v, attr = hw3.getattr("/hello") self.assertEqual(v, 0) v = hw3.rmdir("/hello") self.assertEqual(v, 0) v, attr = hw3.getattr("/hello") self.assertEqual(v, -hw3.ENOENT) v, dirs = hw3.readdir("/hello") self.assertEqual(v, -hw3.ENOENT)
def test_2_create(self): print "Test 2a - create:" table = [('/file.B', 0o100777), ('/dir1/file.A', 0o100777)] for path, mode in table: v = hw3.create(path, mode) self.assertTrue(v == 0) v, sb = hw3.getattr(path) self.assertTrue(v == 0) self.assertTrue(sb.st_mode == hw3.S_IFREG | mode) self.assertTrue(sb.st_size == 0) print "Test 2b - create wired filename:" hw3.create('/thisisatwenty-eight-byte-name', 0o100777) v, dirents = hw3.readdir('/') for item in dirents: print item.name self.fsck()
def test_1_mkdir(self): # print('Test 1 - Mkdir on good path') attrs = [("/dir2", 0), ("/dir2/hello", 0o777), ("/dir2/hello/world", 0o744)] for path, perm in attrs: self.assertEqual(0, hw3.mkdir(path, perm)) for path, perm in attrs: v, attr = hw3.getattr(path) self.assertEqual(v, 0) self.assertEqual(attr.st_mode, perm | hw3.S_IFDIR) v, entries = hw3.readdir(path) numents = 0 if perm == 0o744 else 1 self.assertEqual(v, numents) self.assertEqual(numents, len(entries), path)
def test_create_write_concurrent(self): self.assertEqual(hw3.create("/", 0), -hw3.EEXIST) big_file = 512 * 1024 self.assertEqual(hw3.mkdir("/dir2", 0), 0) self.assertEqual(hw3.create("/dir2/.file", 0), 0) self.assertEqual(hw3.write("/dir2/.file", bytes("Hello, world", 'utf-8'), 0), 12) self.assertEqual(hw3.create("/dir2/file.2", 0), 0) self.assertEqual(hw3.write("/dir2/file.2", b'M' * big_file, 0), big_file) self.assertEqual(hw3.create("/dir2/.file", 0), -hw3.EEXIST) self.run_fsck() v, data = hw3.read("/dir2/.file", 1000, 7) self.assertEqual(v, 5) self.assertEqual(data.decode('utf-8'), "world") self.run_fsck() v, data = hw3.read("/dir2/file.2", big_file, 0) self.assertEqual(v, big_file) self.assertEqual(data, b'M' * big_file) self.run_fsck() self.assertEqual(hw3.unlink("/dir2/file.2"), 0) self.run_fsck() self.assertEqual(hw3.unlink("/dir2/.file"), 0) self.run_fsck() v, data = hw3.readdir("/dir2") self.assertEqual(v, 0) self.assertEqual(data, []) self.run_fsck() self.assertEqual(hw3.rmdir("/dir2"), 0)
def test_long_name(self): files = {"Hello, world", "12345678901234567890", "123456789012345678901234567", "1" * 28, "2" * 35} endfiles = {f[0:27] for f in files} for file in files: v = hw3.create("/" + file, 0) self.assertEqual(v, 0) v, attr = hw3.getattr(file) self.assertEqual(v, 0) v, rd = hw3.readdir("/") self.assertEqual({s.name.decode("utf-8") for s in rd}, endfiles) for efile in endfiles: v, attr = hw3.getattr("/" + efile) self.assertEqual(v, 0) self.assertEqual(hw3.create("2" * 44, 0), -hw3.EEXIST)
def test_11_readdir(self): val, dirs = hw3.readdir("/file.1k") self.assertTrue(val == -hw3.ENOTDIR)
def test_10_readdir(self): val, dirs = hw3.readdir("/dir2") self.assertTrue(val == 0) self.assertTrue(dirs[0].name == "twenty-seven-byte-file-name") self.assertTrue(dirs[1].name == "file.4k+")
def test_28_readdir(self): val, dirs = hw3.readdir("/") self.assertTrue(val == 0) self.assertTrue(dirs[3].name == "dir2")
def test_23_readdir(self): val, dirs = hw3.readdir("/dir3") self.assertTrue(val == 0) self.assertTrue(dirs[0].name == "subdir2")
def test_20_readdir(self): val, dirs = hw3.readdir("/dir2") self.assertTrue(val == 0) self.assertTrue(dirs[1].name == "file.3k+")
def test_17_readdir(self): val, dirs = hw3.readdir("/") self.assertTrue(val == 0) self.assertTrue(dirs[0].name == "file.11k+")
def test_12_readdir(self): val, dirs = hw3.readdir("/file.2k") self.assertTrue(val == -hw3.ENOENT)
def test_4_readdir(self): print "Test 4 - readdir:" v, dirents = hw3.readdir("/") names = set([d.name for d in dirents]) self.assertTrue(names == set(('file.A', 'dir1', 'file.7')))
def test_7_unlink(self): # print('Test 7 - Unlink a file') v = hw3.unlink('/file.A') self.assertEqual(v, 0) v, dirents = hw3.readdir("/file.A") self.assertEqual(v, - hw3.ENOENT)
def test_6_truncate(self): # print('Test 6 - Truncate a file') hw3.truncate('/dir1/file.2', 0) v, dirents = hw3.readdir("/dir1/file.2") self.assertEqual(v, - hw3.ENOTDIR)