def testConcurrentCacheUpdate(self): clock = task.Clock() # create tree containing registry snippets d = os.path.join(self.regpath, 'flumotion') os.mkdir(d) f1 = writeComponent(os.path.join(d, 'first.xml'), 'first') f2 = writeComponent(os.path.join(d, 'second.xml'), 'second') self.mtime[d] = self.mtime[f1] = self.mtime[f2] = clock.seconds() # initialize registry reg = registry.ComponentRegistry( [self.regpath], 'flumotion', self.regcache, clock.seconds) # modify registry snippet clock.advance(1) f2 = writeComponent(os.path.join(d, 'second.xml'), 'second-new') self.mtime[f2] += clock.seconds() # another process updates the registry cache self.mtime[self.regcache] = clock.seconds() # the registry should be rebuilt anyway self.assert_(reg.rebuildNeeded()) reg.verify() types = sorted(c.getType() for c in reg.getComponents()) self.assertEquals(types, ['first', 'second-new'])
def _compareRegistryAfterDump(self, orig, expected, name=''): reg = registry.ComponentRegistry(paths=[]) reg.clean() reg.addFromString(orig) s = StringIO.StringIO() reg.dump(s) s.seek(0, 0) data = s.read() testsuite.diffStrings(data, expected, desc=name)
def testComponentTypeError(self): reg = registry.ComponentRegistry(paths=[]) xml = """ <registry> <components> <component type="bar" base="/" _description="A bar component"> </component> </components> </registry>""" reg.addFromString(xml)
def testAddXmlParseError(self): reg = registry.ComponentRegistry(paths=[]) xml = """ <registry> <components> <component _description="An unnamed component"></component> </components> </registry>""" self.assertRaises(fxml.ParserError, reg.addFromString, xml) xml = """<registry><components><foo></foo></components></registry>""" self.assertRaises(fxml.ParserError, reg.addFromString, xml)
def testClean(self): xml = """ <registry> <components> <component type="bar" base="/" _description="A bar component"> </component> </components> </registry>""" reg = registry.ComponentRegistry(paths=[]) reg.addFromString(xml) reg.clean() self.failUnless(reg.isEmpty())
def setUp(self): self.reg = registry.ComponentRegistry(paths=[]) self.reg.clean() # override the registry's filename so make distcheck works fd, self.reg.filename = tempfile.mkstemp() os.close(fd) os.unlink(self.reg.filename) self.tempdir = tempfile.mkdtemp() self.cwd = os.getcwd() os.chdir(self.tempdir) os.makedirs('subdir') os.makedirs('subdir/foo') os.makedirs('subdir/bar') writeComponent('subdir/first.xml', 'first') writeComponent('subdir/foo/second.xml', 'second') writeComponent('subdir/bar/third.xml', 'third')
def setUp(self): self.reg = registry.ComponentRegistry(paths=[]) self.reg.clean()