def setUp(self): ActionTestCase.setUp(self) self.repo = Repository('domainId', 'rep') self.uploader = CallTrace('Uploader') self.repo.createUploader = lambda logger: self.uploader self.stateDir = self.tmp_path / 'state' self.logDir = self.tmp_path / 'log' self.state = State(self.stateDir, self.logDir, 'rep') self.smoothaction = SmoothAction(self.repo, self.state, NilEventLogger()) self.idfilename = join(self.stateDir, 'rep.ids') self.invalidIdsFilename = join(self.stateDir, 'rep_invalid.ids') self.old_idfilename = join(self.stateDir, 'rep.ids.old') self.statsfilename = join(self.stateDir,'rep.stats')
def setUp(self): self.repo = Repository('domainId','rep') self.repo._proxy = self self.logAndStateDir = os.path.join(tempfile.gettempdir(),'repositorytest') os.path.isdir(self.logAndStateDir) or os.mkdir(self.logAndStateDir)
class RepositoryTest(unittest.TestCase): def setUp(self): self.repo = Repository('domainId','rep') self.repo._proxy = self self.logAndStateDir = os.path.join(tempfile.gettempdir(),'repositorytest') os.path.isdir(self.logAndStateDir) or os.mkdir(self.logAndStateDir) def tearDown(self): shutil.rmtree(self.logAndStateDir) def testNoTimeslots(self): slots = self.repo.shopclosed self.assertEquals(None, slots) self.assertFalse(self.repo.shopClosed()) def testInitHarvestExclusionInterval(self): self.repo.fill(self, GETREPOSITORY) slots = self.repo.shopclosed self.assertEquals(2, len(slots)) self.assertEquals('*:*:10:30-*:*:11:45', slots[0]) self.assertEquals('*:5:5:59-*:5:23:00', slots[1]) def testShopClosed(self): self.repo.fill(self, GETREPOSITORY) self.repo.closedSlots() self.assertEquals(False, self.repo.shopClosed(dateTuple = (2006,1,1,11,50))) def testTimeslotInitialization(self): self.repo.fill(self, GETREPOSITORY) timeslots = self.repo.closedSlots() self.assertEquals(2, len(timeslots)) self.assertFalse(self.repo.shopClosed(dateTuple = (2006,1,1,11,50))) timeslots[1]._end = (Wildcard(), Wildcard(), Wildcard(), Wildcard()) self.assertTrue(self.repo.shopClosed(dateTuple = (2006,1,1,11,50))) def testShopNotClosedAndThenClosed(self): self.repo.fill(self, GETREPOSITORY) timeslots = self.repo.closedSlots() self.assertFalse(self.repo.shopClosed(dateTuple = (2006,1,1,11,50))) timeslots[0]._end = (Wildcard(), Wildcard(), Wildcard(), Wildcard()) self.assertTrue(self.repo.shopClosed(dateTuple = (2006,1,1,11,50))) def testDoNothing(self): self.repo.use = False self.repo.action = None action = MockAction() self.repo._createAction=lambda stateDir,logDir,generalHarvestLog: action result = self.repo.do(stateDir=self.logAndStateDir, logDir=self.logAndStateDir) self.assertEquals(('', False), result) self.assert_(action.called) self.assertEquals(False, self.repo.use) self.assertEquals(None, self.repo.action) def testHarvestWithBadResumptionToken(self): self.repo.use = True self.repo.action = None self.repo.complete = True action = CallTrace('Action') oaiError = OAIError('url', 'resumptionToken expired', 'badResumptionToken', 'lxmlResponse') action.exceptions['do'] = oaiError self.repo._createAction = lambda **kwargs: action message, again = self.repo.do(stateDir=self.logAndStateDir, logDir=self.logAndStateDir) self.assertTrue('resumptionToken expired' in message) self.assertEquals(['info', 'do', 'resetState'], [m.name for m in action.calledMethods]) self.assertTrue(again) def testDoHarvest(self): self.repo.use = True self.repo.action = None action = MockAction(DONE) self.repo._createAction=lambda stateDir,logDir,generalHarvestLog: action result = self.repo.do(stateDir=self.logAndStateDir, logDir=self.logAndStateDir) self.assertEquals((DONE, False), result) self.assert_(action.called) self.assertEquals(True, self.repo.use) self.assertEquals(None, self.repo.action) def testDoHarvestWithCompleteHarvestingEnabled(self): self.repo.use = True self.repo.action = None self.repo.complete = True action = MockAction(DONE, hasResumptionToken=True) self.repo._createAction=lambda stateDir,logDir,generalHarvestLog: action result = self.repo.do(stateDir=self.logAndStateDir, logDir=self.logAndStateDir) self.assertEquals((DONE, True), result) def testDoHarvestWithCompleteHarvestingDisabled(self): self.repo.use = True self.repo.action = None self.repo.complete = False action = MockAction(DONE, hasResumptionToken=True) self.repo._createAction=lambda stateDir,logDir,generalHarvestLog: action result = self.repo.do(stateDir=self.logAndStateDir, logDir=self.logAndStateDir) self.assertEquals((DONE, False), result) def testDoSomeAction(self): self.repo._saharaget = self self.repo.action = 'someaction' action = MockAction(DONE) self.repo._createAction=lambda stateDir,logDir,generalHarvestLog: action result = self.repo.do(stateDir=self.logAndStateDir, logDir=self.logAndStateDir) self.assertEquals((DONE, False), result) self.assert_(action.called) self.assertEquals(None, self.repo.action) self.assertEquals('domainId', self.mock_repositoryActionDone_domainId) self.assertEquals('rep', self.mock_repositoryActionDone_repositoryId) def testDoSomeActionThatMustBeRepeated(self): self.repo.use = True self.repo.action = 'someaction' action = MockAction('Not yet done!', False) self.repo._createAction=lambda stateDir,logDir,generalHarvestLog: action result, hasResumptionToken = self.repo.do(stateDir=self.logAndStateDir, logDir=self.logAndStateDir) self.assertEquals('Not yet done!', result) self.assert_(action.called) self.assertEquals(True, self.repo.use) self.assertEquals('someaction', self.repo.action) def _testAction(self, use, action, expectedTypeName): self.repo.use = use self.repo.action = action createdAction = self.repo._createAction(stateDir=self.logAndStateDir, logDir=self.logAndStateDir, generalHarvestLog=NilEventLogger()) self.assertEquals(expectedTypeName, createdAction.__class__.__name__) def testCreateAction(self): self._testAction(False, None, 'NoneAction') self._testAction(None, None, 'NoneAction') self._testAction(True, None, 'HarvestAction') self._testAction(False, 'clear', 'DeleteIdsAction') self._testAction(True, 'clear', 'DeleteIdsAction') self._testAction(False, 'refresh', 'SmoothAction') self._testAction(True, 'refresh', 'SmoothAction') try: self._testAction(True, 'nonexisting', 'ignored') self.fail() except ActionException, afe: self.assertEquals("Action 'nonexisting' not supported.", str(afe))
def getRepositoryObject(self, identifier, domainId): result = Repository(repositoryId=identifier, domainId=domainId) result.fill(self, self.getRepository(identifier, domainId)) return result