Esempio n. 1
0
    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'])
Esempio n. 2
0
    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)
Esempio n. 3
0
    def testComponentTypeError(self):
        reg = registry.ComponentRegistry(paths=[])
        xml = """
<registry>
  <components>
    <component type="bar" base="/" _description="A bar component">
    </component>
  </components>
</registry>"""
        reg.addFromString(xml)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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())
Esempio n. 6
0
    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')
Esempio n. 7
0
 def setUp(self):
     self.reg = registry.ComponentRegistry(paths=[])
     self.reg.clean()