Changeset efa608a in trunk


Ignore:
Timestamp:
2009-07-15T07:51:09Z (16 years ago)
Author:
Brian Warner <warner@…>
Branches:
master
Children:
244fee1
Parents:
7950fc0
Message:

'tahoe stats': tolerate empty directories. Closes #693.

Location:
src/allmydata
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified src/allmydata/scripts/tahoe_manifest.py

    r7950fc0 refa608a  
    118118                else:
    119119                    print >>stdout, fmt % (k, data[k])
    120         print >>stdout, "Size Histogram:"
    121         prevmax = None
    122         maxlen = max([len(str(maxsize))
    123                       for (minsize, maxsize, count)
    124                       in data["size-files-histogram"]])
    125         maxcountlen = max([len(str(count))
    126                            for (minsize, maxsize, count)
    127                            in data["size-files-histogram"]])
    128         minfmt = "%" + str(maxlen) + "d"
    129         maxfmt = "%-" + str(maxlen) + "d"
    130         countfmt = "%-" + str(maxcountlen) + "d"
    131         linefmt = minfmt + "-" + maxfmt + " : " + countfmt + "    %s"
    132         for (minsize, maxsize, count) in data["size-files-histogram"]:
    133             if prevmax is not None and minsize != prevmax+1:
    134                 print >>stdout, " "*(maxlen-1) + "..."
    135             prevmax = maxsize
    136             print >>stdout, linefmt % (minsize, maxsize, count,
    137                                        abbreviate_space_both(maxsize))
     120        if data["size-files-histogram"]:
     121            print >>stdout, "Size Histogram:"
     122            prevmax = None
     123            maxlen = max([len(str(maxsize))
     124                          for (minsize, maxsize, count)
     125                          in data["size-files-histogram"]])
     126            maxcountlen = max([len(str(count))
     127                               for (minsize, maxsize, count)
     128                               in data["size-files-histogram"]])
     129            minfmt = "%" + str(maxlen) + "d"
     130            maxfmt = "%-" + str(maxlen) + "d"
     131            countfmt = "%-" + str(maxcountlen) + "d"
     132            linefmt = minfmt + "-" + maxfmt + " : " + countfmt + "    %s"
     133            for (minsize, maxsize, count) in data["size-files-histogram"]:
     134                if prevmax is not None and minsize != prevmax+1:
     135                    print >>stdout, " "*(maxlen-1) + "..."
     136                prevmax = maxsize
     137                print >>stdout, linefmt % (minsize, maxsize, count,
     138                                           abbreviate_space_both(maxsize))
    138139
    139140def stats(options):
  • TabularUnified src/allmydata/test/test_cli.py

    r7950fc0 refa608a  
    12691269        d.addCallback(_check2)
    12701270
     1271        d.addCallback(lambda ign: self.do_cli("stats", self.rooturi))
     1272        def _check_stats((rc, out, err)):
     1273            self.failUnlessEqual(err, "")
     1274            self.failUnlessEqual(rc, 0)
     1275            lines = out.splitlines()
     1276            self.failUnlessIn(" count-immutable-files: 1", lines)
     1277            self.failUnlessIn("   count-mutable-files: 1", lines)
     1278            self.failUnlessIn("   count-literal-files: 1", lines)
     1279            self.failUnlessIn("     count-directories: 1", lines)
     1280            self.failUnlessIn("  size-immutable-files: 400", lines)
     1281            self.failUnlessIn("Size Histogram:", lines)
     1282            self.failUnlessIn("   4-10   : 1    (10 B, 10 B)", lines)
     1283            self.failUnlessIn(" 317-1000 : 1    (1000 B, 1000 B)", lines)
     1284        d.addCallback(_check_stats)
     1285
    12711286        def _clobber_shares(ignored):
    12721287            shares = self.find_shares(self.uris["good"])
     
    14321447
    14331448        return d
     1449
     1450class Stats(GridTestMixin, CLITestMixin, unittest.TestCase):
     1451    def test_empty_directory(self):
     1452        self.basedir = "cli/Stats/empty_directory"
     1453        self.set_up_grid()
     1454        c0 = self.g.clients[0]
     1455        self.fileurls = {}
     1456        d = c0.create_empty_dirnode()
     1457        def _stash_root(n):
     1458            self.rootnode = n
     1459            self.rooturi = n.get_uri()
     1460        d.addCallback(_stash_root)
     1461
     1462        # make sure we can get stats on an empty directory too
     1463        d.addCallback(lambda ign: self.do_cli("stats", self.rooturi))
     1464        def _check_stats((rc, out, err)):
     1465            self.failUnlessEqual(err, "")
     1466            self.failUnlessEqual(rc, 0)
     1467            lines = out.splitlines()
     1468            self.failUnlessIn(" count-immutable-files: 0", lines)
     1469            self.failUnlessIn("   count-mutable-files: 0", lines)
     1470            self.failUnlessIn("   count-literal-files: 0", lines)
     1471            self.failUnlessIn("     count-directories: 1", lines)
     1472            self.failUnlessIn("  size-immutable-files: 0", lines)
     1473            self.failIfIn("Size Histogram:", lines)
     1474        d.addCallback(_check_stats)
     1475
     1476        return d
Note: See TracChangeset for help on using the changeset viewer.