-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathverify_block.py
More file actions
executable file
·61 lines (52 loc) · 1.66 KB
/
Copy pathverify_block.py
File metadata and controls
executable file
·61 lines (52 loc) · 1.66 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
#!/usr/bin/env python3
import glob
import json
import sys
import fileinput
import surt
import gzip
import timeit
import time
from fixity import generate_current
BLKDIR = "/data/Fixity/blocks"
blkfs = sorted(glob.glob(f"{BLKDIR}/*.ors.gz"))
def lookup_in_block(surim, blk):
with gzip.open(blk) as f:
for line in f:
parts = line.strip().split(b" ", 1)
if surim.encode() == parts[0]:
return json.loads(parts[-1])
return None
def verify_block(urim):
surim = surt.surt(urim)
status = "FAILED"
blkct = 0
t2_b = timeit.default_timer()
for blk in blkfs:
blkct += 1
rec = lookup_in_block(surim, blk)
if not rec:
continue
t3_b = timeit.default_timer()
t2_diff = t3_b - t2_b
mfp = generate_current(urim)
t4_b = timeit.default_timer()
t3_diff = t4_b - t3_b
mf = json.load(open(mfp))
if rec["hash"] == mf["hash"]:
status = "VERIFIED"
t4_diff = timeit.default_timer() - t4_b
break
return {"status": status, "blkct": blkct, "lookupt": t2_diff, "gent": t3_diff, "verift": t4_diff}
if __name__ == "__main__":
print("SN\tStatus\tBlockIdx\tTotalT\tLookupT\tGenerationT\tVerifyT\tURIM")
i = 0
for line in fileinput.input():
i += 1
t1_b = timeit.default_timer()
urim = line.strip()
res = verify_block(urim)
t1_diff = timeit.default_timer() - t1_b
print(f"{i}\t{res['status']}\t{res['blkct']}\t{t1_diff}\t{res['lookupt']}\t{res['gent']}\t{res['verift']}\t{urim}")
print(f"[{i}] {res['status']}: {urim}", file=sys.stderr)
time.sleep(1)