]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
stats: don't return booleans: it violates the schema. Add a test.
authorBrian Warner <warner@lothar.com>
Thu, 4 Dec 2008 22:01:24 +0000 (15:01 -0700)
committerBrian Warner <warner@lothar.com>
Thu, 4 Dec 2008 22:01:24 +0000 (15:01 -0700)
src/allmydata/storage.py
src/allmydata/test/test_system.py

index f3fd9836070d27688a992f40a91aac52de60a9fb..faf6b5bb89a3200fe5bd5668672d746811001994 100644 (file)
@@ -866,6 +866,8 @@ class StorageServer(service.MultiService, Referenceable):
         fileutil.rm_dir(self.incomingdir)
 
     def get_stats(self):
+        # remember: RIStatsProvider requires that our return dict
+        # contains numeric values.
         stats = { 'storage_server.allocated': self.allocated_size(), }
         for category,ld in self.get_latencies().items():
             for name,v in ld.items():
@@ -896,7 +898,7 @@ class StorageServer(service.MultiService, Referenceable):
         except AttributeError:
             # os.statvfs is only available on unix
             pass
-        stats["storage_server.accepting_immutable_shares"] = writeable
+        stats["storage_server.accepting_immutable_shares"] = int(writeable)
         return stats
 
 
index 942ffe4b7d0557a69bed45b4968d072015b2650e..02fd446ac4f6d886e95b41d760925170182b67f5 100644 (file)
@@ -403,6 +403,28 @@ class SystemTest(SystemTestMixin, unittest.TestCase):
             return d
         d.addCallback(_upload_resumable)
 
+        def _grab_stats(ignored):
+            # the StatsProvider doesn't normally publish a FURL:
+            # instead it passes a live reference to the StatsGatherer
+            # (if and when it connects). To exercise the remote stats
+            # interface, we manually publish client0's StatsProvider
+            # and use client1 to query it.
+            sp = self.clients[0].stats_provider
+            sp_furl = self.clients[0].tub.registerReference(sp)
+            d = self.clients[1].tub.getReference(sp_furl)
+            d.addCallback(lambda sp_rref: sp_rref.callRemote("get_stats"))
+            def _got_stats(stats):
+                #print "STATS"
+                #from pprint import pprint
+                #pprint(stats)
+                s = stats["stats"]
+                self.failUnlessEqual(s["storage_server.accepting_immutable_shares"], 1)
+                c = stats["counters"]
+                self.failUnlessEqual(c["storage_server.allocate"], 2)
+            d.addCallback(_got_stats)
+            return d
+        d.addCallback(_grab_stats)
+
         return d
 
     def _find_shares(self, basedir):