[Commits] (twl) Modularize tests

commits at osafoundation.org commits at osafoundation.org
Mon Feb 2 10:52:05 PST 2004


Commit by: twl
Modified files:
osaf/chandler/Chandler/repository/tests/TestPerfWithRSS.py 1.9 1.10

Log message:
Modularize tests
Add readback test
clean up sloppy path usages
Relocate profiling code


ViewCVS links:
http://cvs.osafoundation.org/index.cgi/osaf/chandler/Chandler/repository/tests/TestPerfWithRSS.py.diff?r1=text&tr1=1.9&r2=text&tr2=1.10

Index: osaf/chandler/Chandler/repository/tests/TestPerfWithRSS.py
diff -u osaf/chandler/Chandler/repository/tests/TestPerfWithRSS.py:1.9 osaf/chandler/Chandler/repository/tests/TestPerfWithRSS.py:1.10
--- osaf/chandler/Chandler/repository/tests/TestPerfWithRSS.py:1.9	Mon Jan 12 16:28:30 2004
+++ osaf/chandler/Chandler/repository/tests/TestPerfWithRSS.py	Mon Feb  2 10:51:35 2004
@@ -2,27 +2,28 @@
 Simple Performance tests for Chandler repository
 """
 
-__revision__  = "$Revision: 1.9 $"
-__date__      = "$Date: 2004/01/13 00:28:30 $"
+__revision__  = "$Revision: 1.10 $"
+__date__      = "$Date: 2004/02/02 18:51:35 $"
 __copyright__ = "Copyright (c) 2003 Open Source Applications Foundation"
 __license__   = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
 
 import os, os.path, sys, unittest
 
 from bsddb.db import DBNoSuchFileError
+from repository.item.Query import KindQuery
 from repository.persistence.XMLRepository import XMLRepository
 from repository.schema.DomainSchemaLoader import DomainSchemaLoader
 import repository.parcel.LoadParcels as LoadParcels
 import application.Globals as Globals
 
 # get Zaobao's feedparser
-_chandlerDir = os.environ['CHANDLERDIR']
-sys.path.append(os.path.join(_chandlerDir,'parcels','OSAF','examples','zaobao'))
+_chandlerDir = os.environ['CHANDLERHOME']
+sys.path.append(os.path.join(_chandlerDir,'Chandler','parcels','OSAF','examples','zaobao'))
 import feedparser
 
 # get all the RSS files in RSS_HOME (repository/tests/data/rssfeeds)
 # You can obtain the files from http://aloha.osafoundation.org/~twl/rssfeeds.tar.gz
-RSS_HOME=os.path.join(_chandlerDir,'repository','tests','data','rssfeeds/')
+RSS_HOME=os.path.join(_chandlerDir,'Chandler','repository','tests','data','rssfeeds/')
 if os.path.exists(RSS_HOME):
     _rssfiles = os.listdir(RSS_HOME)
 else:
@@ -38,13 +39,15 @@
 
     def setUp(self):
         self.rootdir = _chandlerDir
-        self.rep = XMLRepository('__repository__')
+        self.testdir = os.path.join(self.rootdir, 'Chandler', 'repository',
+                                    'tests')
+        self.rep = XMLRepository(os.path.join(self.testdir, '__repository__'))
         Globals.repository = self.rep # to keep indexer happy
         self.rep.create()
-        schemaPack = os.path.join(self.rootdir, 'repository', 'packs', 'schema.pack')
+        schemaPack = os.path.join(self.rootdir, 'Chandler', 'repository', 'packs', 'schema.pack')
         self.rep.loadPack(schemaPack)
 
-        parcelDir = os.path.join(self.rootdir,'parcels')
+        parcelDir = os.path.join(self.rootdir,'Chandler','parcels')
         sys.path.insert(1, parcelDir)
         LoadParcels.LoadParcel(os.path.join(parcelDir, 'OSAF', 'examples', 
          'zaobao'), '//parcels/OSAF/examples/zaobao', parcelDir, self.rep)
@@ -52,17 +55,24 @@
         self.rep.commit()
         self.rep.logger.debug("Going to try: ",len(_defaultBlogs)," feeds")
 
-    def test(self):
+    def _stressTest(self, commitInsideLoop=False):
         """ grab a bunch of RSS data from disk and insert into the repository """
         repository = self.rep
 
         itemCount = 0
         feeds = self.__getFeeds()
 
-        print 'got %d feeds' %(len(feeds)), '(running 20 for the demo)'
-        feeds = feeds[0:20]
+        if feeds == []:
+            self.rep.logger.info("got 0 feeds")
+            print "If you haven't installed the feed data, you can retreive it from"
+            print "http://aloha.osafoundation.org/~twl"
+            print "select a tarball, download it, and unpack it in repository/tests/data"
+            print "The data will be in a new directory called rssfeeds"
+            print "You can now run the tests"
+        else:
+            self.rep.logger.info('got %d feeds' %(len(feeds)))
 
-        for feed in feeds:
+        for feed in feeds[:]:
             self.rep.logger.debug(feed.url)
             etag = feed.getAttributeValue('etag', default=None)
             lastModified = feed.getAttributeValue('lastModified', default=None)
@@ -74,13 +84,20 @@
                 data = feedparser.parse(feed.url, etag, modified)
                 itemCount += len(data['items'])
                 feed.Update(data)
+                if commitInsideLoop:
+                    repository.commit()
             except Exception, e:
                 self.rep.logger.error("%s in %s" % (e,feed.url))
 
         try:
-            repository.commit()
+            import hotshot
+            profiler = hotshot.Profile('/tmp/TestPerfWithRss.stressTest.hotshot')
+            profiler.runcall(repository.commit)
+            profiler.close()
+#            repository.commit()
         except Exception, e:
-            self.rep.logger.error("Final commit:",e)
+            print e
+            self.rep.logger.error("Final commit:")
             self.fail()
         self.rep.logger.info("Processed %d items" % itemCount)
         self.assert_(True)
@@ -103,13 +120,34 @@
 
         return feeds
 
+    def testCommitAtEnd(self):
+        self._stressTest()
+
+    def testCommitInsideLoop(self):
+        self._stressTest(True)
+
+    def _readItems(self, kind):
+        items = KindQuery().run([kind]) 
+        for i in items:
+            assert(i.getItemName() is not None)
+
+    def testReadBackRSS(self):
+        self._stressTest()
+        self.rep.close()
+        self.rep = XMLRepository(os.path.join(self.testdir, '__repository__'))
+        self.rep.open()
+        RSSItem = self.rep.find('//parcels/OSAF/examples/zaobao/RSSItem')
+        profiler = hotshot.Profile('/tmp/TestPerfWithRss.readBack.hotshot')
+        profiler.runcall(TestPerfWithRSS._readItems, self, RSSItem.kind)
+        profiler.close()
+
     def tearDown(self):
         self.rep.close()
         self.rep.delete()
 
 if __name__ == "__main__":
 #    import hotshot
-#    profiler = hotshot.Profile('/tmp/TestItems.hotshot')
+#    profiler = hotshot.Profile('/tmp/TestPerfWithRss.hotshot')
 #    profiler.run('unittest.main()')
 #    profiler.close()
     unittest.main()



More information about the Commits mailing list