forked from pellepl/spiffs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsp_test.py
executable file
·70 lines (52 loc) · 2.06 KB
/
sp_test.py
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
#!/usr/bin/python
"Test spiffs filesystem with a range of parameters"
import spiffs
class SpiffsInstr(spiffs.SpiffsCharsBack):
"Keeps count of issued reads / writes / erases"
def __init__(self, *args, **kwargs):
self.reset_counters()
supe = super(SpiffsInstr, self)
self.super_read = supe.on_read
self.super_write = supe.on_write
self.super_erase = supe.on_erase
supe.__init__(*args, **kwargs)
def reset_counters(self):
self.read_requests = []
self.write_requests = []
self.erase_requests = []
def on_read(self, addr, size):
self.read_requests.append([addr, size])
return self.super_read(addr, size)
def on_write(self, addr, data):
self.write_requests.append([addr, len(data)])
return self.super_write(addr, data)
def on_erase(self, addr, size):
self.erase_requests.append([addr, size])
return self.super_erase(addr, size)
# Physical parameters
flash_size = 8*1024*1024
erase_size = 256
print "filesystem size =",flash_size
header = "log_block_size","log_page_size","reads","read_bytes","writes","written_bytes"
print '| %s |'%(' | '.join(header))
header2 = ['-'*len(x) for x in header]
print '| %s |'%(' | '.join(header2))
for log2_log_block_size in range(14,19):
log_block_size = 1<<log2_log_block_size
for log2_log_page_size in range(8,11):
log_page_size = 1<<log2_log_page_size
backing = ['\xff']*flash_size
s = SpiffsInstr(backing,
0,
erase_size,
log_page_size,
log_block_size)
s.dir()
#for i in range(100):
# with s.open("Test File %d.txt"%i,"w") as fd:
# fd.write('.'*1024*10)
s.unmount()
result = (log_block_size,log_page_size,
len(s.read_requests), sum(size for block,size in s.read_requests),
len(s.write_requests), sum(size for block,size in s.write_requests))
print '| %s |'%(' | '.join(map(str,result)))