コード例 #1
0
 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+")
コード例 #2
0
    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)
コード例 #3
0
 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)
コード例 #4
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)
コード例 #5
0
    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)
コード例 #6
0
    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()
コード例 #7
0
    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)
コード例 #8
0
    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)
コード例 #9
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)
コード例 #10
0
 def test_11_readdir(self):
     val, dirs = hw3.readdir("/file.1k")
     self.assertTrue(val == -hw3.ENOTDIR)
コード例 #11
0
 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+")
コード例 #12
0
 def test_28_readdir(self):
     val, dirs = hw3.readdir("/")
     self.assertTrue(val == 0)
     self.assertTrue(dirs[3].name == "dir2")
コード例 #13
0
 def test_23_readdir(self):
     val, dirs = hw3.readdir("/dir3")
     self.assertTrue(val == 0)
     self.assertTrue(dirs[0].name == "subdir2")
コード例 #14
0
 def test_20_readdir(self):
     val, dirs = hw3.readdir("/dir2")
     self.assertTrue(val == 0)
     self.assertTrue(dirs[1].name == "file.3k+")
コード例 #15
0
 def test_17_readdir(self):
     val, dirs = hw3.readdir("/")
     self.assertTrue(val == 0)
     self.assertTrue(dirs[0].name == "file.11k+")
コード例 #16
0
 def test_12_readdir(self):
     val, dirs = hw3.readdir("/file.2k")
     self.assertTrue(val == -hw3.ENOENT)
コード例 #17
0
 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')))
コード例 #18
0
 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)
コード例 #19
0
 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)