-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathtest_subsystem_filesystem.py
More file actions
257 lines (215 loc) · 9.35 KB
/
test_subsystem_filesystem.py
File metadata and controls
257 lines (215 loc) · 9.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
# -*- coding: utf-8 -*-
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
import unittest
import gdb
import crash.subsystem.filesystem as fs
class TestSubsystemFilesystem(unittest.TestCase):
def get_bits(self, mode):
v = gdb.Value(mode)
return fs.inode_mode_permission_bits(v)
def test_mode_regular_file(self):
mode = fs.S_IFREG
self.assertFalse(fs.S_ISLNK(mode))
self.assertTrue(fs.S_ISREG(mode))
self.assertFalse(fs.S_ISDIR(mode))
self.assertFalse(fs.S_ISCHR(mode))
self.assertFalse(fs.S_ISBLK(mode))
self.assertFalse(fs.S_ISFIFO(mode))
self.assertFalse(fs.S_ISSOCK(mode))
def test_mode_symbolic_link(self):
mode = fs.S_IFLNK
self.assertTrue(fs.S_ISLNK(mode))
self.assertFalse(fs.S_ISREG(mode))
self.assertFalse(fs.S_ISDIR(mode))
self.assertFalse(fs.S_ISCHR(mode))
self.assertFalse(fs.S_ISBLK(mode))
self.assertFalse(fs.S_ISFIFO(mode))
self.assertFalse(fs.S_ISSOCK(mode))
def test_mode_directory(self):
mode = fs.S_IFDIR
self.assertFalse(fs.S_ISLNK(mode))
self.assertFalse(fs.S_ISREG(mode))
self.assertTrue(fs.S_ISDIR(mode))
self.assertFalse(fs.S_ISCHR(mode))
self.assertFalse(fs.S_ISBLK(mode))
self.assertFalse(fs.S_ISFIFO(mode))
self.assertFalse(fs.S_ISSOCK(mode))
def test_mode_chardev(self):
mode = fs.S_IFCHR
self.assertFalse(fs.S_ISLNK(mode))
self.assertFalse(fs.S_ISREG(mode))
self.assertFalse(fs.S_ISDIR(mode))
self.assertTrue(fs.S_ISCHR(mode))
self.assertFalse(fs.S_ISBLK(mode))
self.assertFalse(fs.S_ISFIFO(mode))
self.assertFalse(fs.S_ISSOCK(mode))
def test_mode_blockdev(self):
mode = fs.S_IFBLK
self.assertFalse(fs.S_ISLNK(mode))
self.assertFalse(fs.S_ISREG(mode))
self.assertFalse(fs.S_ISDIR(mode))
self.assertFalse(fs.S_ISCHR(mode))
self.assertTrue(fs.S_ISBLK(mode))
self.assertFalse(fs.S_ISFIFO(mode))
self.assertFalse(fs.S_ISSOCK(mode))
def test_mode_fifo(self):
mode = fs.S_IFIFO
self.assertFalse(fs.S_ISLNK(mode))
self.assertFalse(fs.S_ISREG(mode))
self.assertFalse(fs.S_ISDIR(mode))
self.assertFalse(fs.S_ISCHR(mode))
self.assertFalse(fs.S_ISBLK(mode))
self.assertTrue(fs.S_ISFIFO(mode))
self.assertFalse(fs.S_ISSOCK(mode))
def test_mode_socket(self):
mode = fs.S_IFSOCK
self.assertFalse(fs.S_ISLNK(mode))
self.assertFalse(fs.S_ISREG(mode))
self.assertFalse(fs.S_ISDIR(mode))
self.assertFalse(fs.S_ISCHR(mode))
self.assertFalse(fs.S_ISBLK(mode))
self.assertFalse(fs.S_ISFIFO(mode))
self.assertTrue(fs.S_ISSOCK(mode))
def test_inode_permission_bits_0________(self):
mode = 0
perms = self.get_bits(mode)
self.assertTrue(perms == '?---------')
def test_inode_permission_bits__________(self):
mode = fs.S_IFREG
perms = self.get_bits(mode)
self.assertTrue(perms == '----------')
def test_inode_permission_bits__r________(self):
mode = fs.S_IFREG|fs.S_IRUSR
perms = self.get_bits(mode)
self.assertTrue(perms == '-r--------')
def test_inode_permission_bits___w_______(self):
mode = fs.S_IFREG|fs.S_IWUSR
perms = self.get_bits(mode)
self.assertTrue(perms == '--w-------')
def test_inode_permission_bits___x______(self):
mode = fs.S_IFREG|fs.S_IXUSR
perms = self.get_bits(mode)
self.assertTrue(perms == '---x------')
def test_inode_permission_bits__rw_______(self):
mode = fs.S_IFREG|fs.S_IRUSR|fs.S_IWUSR
perms = self.get_bits(mode)
self.assertTrue(perms == '-rw-------')
def test_inode_permission_bits__r_x______(self):
mode = fs.S_IFREG|fs.S_IRUSR|fs.S_IXUSR
perms = self.get_bits(mode)
self.assertTrue(perms == '-r-x------')
def test_inode_permission_bits__rwx______(self):
mode = fs.S_IFREG|fs.S_IRUSR|fs.S_IWUSR|fs.S_IXUSR
perms = self.get_bits(mode)
self.assertTrue(perms == '-rwx------')
def test_inode_permission_bits_____r_____(self):
mode = fs.S_IFREG|fs.S_IRGRP
perms = self.get_bits(mode)
self.assertTrue(perms == '----r-----')
def test_inode_permission_bits______w____(self):
mode = fs.S_IFREG|fs.S_IWGRP
perms = self.get_bits(mode)
self.assertTrue(perms == '-----w----')
def test_inode_permission_bits______x___(self):
mode = fs.S_IFREG|fs.S_IXGRP
perms = self.get_bits(mode)
self.assertTrue(perms == '------x---')
def test_inode_permission_bits_____rw____(self):
mode = fs.S_IFREG|fs.S_IRGRP|fs.S_IWGRP
perms = self.get_bits(mode)
self.assertTrue(perms == '----rw----')
def test_inode_permission_bits_____r_x___(self):
mode = fs.S_IFREG|fs.S_IRGRP|fs.S_IXGRP
perms = self.get_bits(mode)
self.assertTrue(perms == '----r-x---')
def test_inode_permission_bits_____rwx___(self):
mode = fs.S_IFREG|fs.S_IRGRP|fs.S_IWGRP|fs.S_IXGRP
perms = self.get_bits(mode)
self.assertTrue(perms == '----rwx---')
def test_inode_permission_bits________r__(self):
mode = fs.S_IFREG|fs.S_IROTH
perms = self.get_bits(mode)
self.assertTrue(perms == '-------r--')
def test_inode_permission_bits_________w_(self):
mode = fs.S_IFREG|fs.S_IWOTH
perms = self.get_bits(mode)
self.assertTrue(perms == '--------w-')
def test_inode_permission_bits_________x(self):
mode = fs.S_IFREG|fs.S_IXOTH
perms = self.get_bits(mode)
self.assertTrue(perms == '---------x')
def test_inode_permission_bits________rw_(self):
mode = fs.S_IFREG|fs.S_IROTH|fs.S_IWOTH
perms = self.get_bits(mode)
self.assertTrue(perms == '-------rw-')
def test_inode_permission_bits________r_x(self):
mode = fs.S_IFREG|fs.S_IROTH|fs.S_IXOTH
perms = self.get_bits(mode)
self.assertTrue(perms == '-------r-x')
def test_inode_permission_bits________rwx(self):
mode = fs.S_IFREG|fs.S_IROTH|fs.S_IWOTH|fs.S_IXOTH
perms = self.get_bits(mode)
self.assertTrue(perms == '-------rwx')
def test_inode_permission_bits__rw_r__r__(self):
mode = fs.S_IFREG|fs.S_IRUSR|fs.S_IWUSR|fs.S_IRGRP|fs.S_IROTH
perms = self.get_bits(mode)
self.assertTrue(perms == '-rw-r--r--')
def test_inode_permission_bits_drw_r__r__(self):
mode = fs.S_IFDIR|fs.S_IRUSR|fs.S_IWUSR|fs.S_IXUSR
mode |= fs.S_IRGRP|fs.S_IXGRP|fs.S_IROTH|fs.S_IXOTH
perms = self.get_bits(mode)
self.assertTrue(perms == 'drwxr-xr-x')
def test_inode_permission_bits_srw_r__r__(self):
mode = fs.S_IFSOCK|fs.S_IRUSR|fs.S_IWUSR|fs.S_IRGRP|fs.S_IROTH
perms = self.get_bits(mode)
self.assertTrue(perms == 'srw-r--r--')
def test_inode_permission_bits_brw_r__r__(self):
mode = fs.S_IFBLK|fs.S_IRUSR|fs.S_IWUSR|fs.S_IRGRP|fs.S_IROTH
perms = self.get_bits(mode)
self.assertTrue(perms == 'brw-r--r--')
def test_inode_permission_bits_crw_r__r__(self):
mode = fs.S_IFCHR|fs.S_IRUSR|fs.S_IWUSR|fs.S_IRGRP|fs.S_IROTH
perms = self.get_bits(mode)
self.assertTrue(perms == 'crw-r--r--')
def test_inode_permission_bits_lrwxrwxrwx(self):
mode = fs.S_IFLNK
mode |= fs.S_IRUSR|fs.S_IWUSR|fs.S_IXUSR
mode |= fs.S_IRGRP|fs.S_IWGRP|fs.S_IXGRP
mode |= fs.S_IROTH|fs.S_IWOTH|fs.S_IXOTH
perms = self.get_bits(mode)
self.assertTrue(perms == 'lrwxrwxrwx')
def test_inode_permission_bits_prw_r__r__(self):
mode = fs.S_IFIFO|fs.S_IRUSR|fs.S_IWUSR|fs.S_IRGRP|fs.S_IROTH
perms = self.get_bits(mode)
self.assertTrue(perms == 'prw-r--r--')
def test_inode_permission_bits__rwsr_xr_x(self):
mode = fs.S_IFREG|fs.S_IRUSR|fs.S_IWUSR|fs.S_IXUSR|fs.S_ISUID
mode |= fs.S_IRGRP|fs.S_IXGRP|fs.S_IROTH|fs.S_IXOTH
perms = self.get_bits(mode)
self.assertTrue(perms == '-rwsr-xr-x')
def test_inode_permission_bits__rwSr__r__(self):
mode = fs.S_IFREG|fs.S_IRUSR|fs.S_IWUSR|fs.S_ISUID
mode |= fs.S_IRGRP|fs.S_IROTH
perms = self.get_bits(mode)
self.assertTrue(perms == '-rwSr--r--')
def test_inode_permission_bits__rwxr_sr_x(self):
mode = fs.S_IFREG|fs.S_IRUSR|fs.S_IWUSR|fs.S_IXUSR
mode |= fs.S_IRGRP|fs.S_IXGRP|fs.S_ISGID|fs.S_IROTH|fs.S_IXOTH
perms = self.get_bits(mode)
self.assertTrue(perms == '-rwxr-sr-x')
def test_inode_permission_bits__rw_r_Sr__(self):
mode = fs.S_IFREG|fs.S_IRUSR|fs.S_IWUSR
mode |= fs.S_IRGRP|fs.S_ISGID|fs.S_IROTH
perms = self.get_bits(mode)
self.assertTrue(perms == '-rw-r-Sr--')
def test_inode_permission_bits_drwxrwxrwt(self):
mode = fs.S_IFDIR|fs.S_IRUSR|fs.S_IWUSR|fs.S_IXUSR
mode |= fs.S_IRGRP|fs.S_IWGRP|fs.S_IXGRP
mode |= fs.S_IROTH|fs.S_IWOTH|fs.S_IXOTH|fs.S_ISVTX
perms = self.get_bits(mode)
self.assertTrue(perms == 'drwxrwxrwt')
def test_inode_permission_bits__rw_r__r_T(self):
mode = fs.S_IFREG|fs.S_IRUSR|fs.S_IWUSR
mode |= fs.S_IRGRP|fs.S_IROTH|fs.S_ISVTX
perms = self.get_bits(mode)
self.assertTrue(perms == '-rw-r--r-T')