]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - misc/operations_helpers/find-share-anomalies.py
Merge pull request #236 from daira/2725.timezone-test.0
[tahoe-lafs/tahoe-lafs.git] / misc / operations_helpers / find-share-anomalies.py
1 #!/usr/bin/env python
2
3 # feed this the results of 'tahoe catalog-shares' for all servers
4
5 import sys
6
7 chk_encodings = {}
8 sdmf_encodings = {}
9 sdmf_versions = {}
10
11 for catalog in sys.argv[1:]:
12     for line in open(catalog, "r").readlines():
13         line = line.strip()
14         pieces = line.split()
15         if pieces[0] == "CHK":
16             ftype, si, kN, size, ueb_hash, expiration, filename = pieces
17             if si not in chk_encodings:
18                 chk_encodings[si] = (set(), set())
19             chk_encodings[si][0].add( (si, kN) )
20             chk_encodings[si][1].add( line )
21         if pieces[0] == "SDMF":
22             ftype, si, kN, size, ver, expiration, filename = pieces
23             if si not in sdmf_encodings:
24                 sdmf_encodings[si] = (set(), set())
25             sdmf_encodings[si][0].add( (si, kN) )
26             sdmf_encodings[si][1].add( line )
27             if si not in sdmf_versions:
28                 sdmf_versions[si] = (set(), set())
29             sdmf_versions[si][0].add( ver )
30             sdmf_versions[si][1].add( line )
31
32 del si
33 chk_multiple_encodings = [(si,lines)
34                           for si,(encodings,lines) in chk_encodings.items()
35                           if len(encodings) > 1]
36 chk_multiple_encodings.sort()
37 sdmf_multiple_encodings = [(si,lines)
38                            for si,(encodings,lines) in sdmf_encodings.items()
39                            if len(encodings) > 1
40                            ]
41 sdmf_multiple_encodings.sort()
42 sdmf_multiple_versions = [(si,lines)
43                           for si,(versions,lines) in sdmf_versions.items()
44                           if len(versions) > 1]
45 sdmf_multiple_versions.sort()
46
47 if chk_multiple_encodings:
48     print
49     print "CHK multiple encodings:"
50     for (si,lines) in chk_multiple_encodings:
51         print " " + si
52         for line in sorted(lines):
53             print "  " + line
54 if sdmf_multiple_encodings:
55     print
56     print "SDMF multiple encodings:"
57     for (si,lines) in sdmf_multiple_encodings:
58         print " " + si
59         for line in sorted(lines):
60             print "  " + line
61 if sdmf_multiple_versions:
62     print
63     print "SDMF multiple versions:"
64     for (si,lines) in sdmf_multiple_versions:
65         print " " + si
66         for line in sorted(lines):
67             print "  " + line