public void testHandleEmptyFile() throws Exception { MockCachedUrlSetSpec mspec = new MockCachedUrlSetSpec("http://www.example.com", null); CachedUrlSet mcus = new MockCachedUrlSet(mau, mspec); NodeStateImpl nodeState = new NodeStateImpl(mcus, -1, null, null, repository); nodeState.setPollHistoryList(new ArrayList()); // storing empty vector repository.storePollHistories(nodeState); String filePath = LockssRepositoryImpl.mapAuToFileLocation(tempDirPath, mau); filePath = LockssRepositoryImpl.mapUrlToFileLocation( filePath, "http://www.example.com/" + HistoryRepositoryImpl.HISTORY_FILE_NAME); File xmlFile = new File(filePath); assertTrue(xmlFile.exists()); nodeState.setPollHistoryList(new ArrayList()); repository.loadPollHistories(nodeState); assertEquals(0, nodeState.pollHistories.size()); mspec = new MockCachedUrlSetSpec("http://www.example2.com", null); mcus = new MockCachedUrlSet(mau, mspec); nodeState = new NodeStateImpl(mcus, -1, null, null, repository); filePath = LockssRepositoryImpl.mapAuToFileLocation(tempDirPath, mau); filePath = LockssRepositoryImpl.mapUrlToFileLocation(filePath, "http://www.example2.com/"); xmlFile = new File(filePath); assertFalse(xmlFile.exists()); xmlFile.mkdirs(); filePath += HistoryRepositoryImpl.HISTORY_FILE_NAME; xmlFile = new File(filePath); OutputStream os = new BufferedOutputStream(new FileOutputStream(xmlFile)); os.write(new byte[0]); os.close(); assertTrue(xmlFile.exists()); nodeState.setPollHistoryList(new ArrayList()); repository.loadPollHistories(nodeState); assertEquals(0, nodeState.pollHistories.size()); assertFalse(xmlFile.exists()); xmlFile = new File( filePath + CurrentConfig.getParam( ObjectSerializer.PARAM_FAILED_DESERIALIZATION_EXTENSION, ObjectSerializer.DEFAULT_FAILED_DESERIALIZATION_EXTENSION)); assertTrue(xmlFile.exists()); }
public void testGetNodeLocation() throws Exception { MockCachedUrlSetSpec mspec = new MockCachedUrlSetSpec("http://www.example.com", null); MockCachedUrlSet mcus = new MockCachedUrlSet(mau, mspec); String location = repository.getNodeLocation(mcus); String expected = LockssRepositoryImpl.mapAuToFileLocation(tempDirPath, mau); expected = LockssRepositoryImpl.mapUrlToFileLocation(expected, "http://www.example.com"); assertEquals(expected, location); }
public void testDotUrlHandling() throws Exception { // testing correction of nodes with bad '..'-including urls, // filtering the first '..' but resolving the second // should filter out the first '..' line but resolve the second MockCachedUrlSetSpec mspec = new MockCachedUrlSetSpec("http://www.example.com/branch/test/../test2", null); MockCachedUrlSet mcus = new MockCachedUrlSet(mau, mspec); String location = repository.getNodeLocation(mcus); String expectedStart = LockssRepositoryImpl.mapAuToFileLocation(tempDirPath, mau); String expected = LockssRepositoryImpl.mapUrlToFileLocation( expectedStart, "http://www.example.com/branch/test2"); assertEquals(expected, location); mspec = new MockCachedUrlSetSpec("http://www.example.com/branch/./test", null); mcus = new MockCachedUrlSet(mau, mspec); location = repository.getNodeLocation(mcus); expected = LockssRepositoryImpl.mapUrlToFileLocation( expectedStart, "http://www.example.com/branch/test"); assertEquals(expected, location); try { mspec = new MockCachedUrlSetSpec("http://www.example.com/..", null); mcus = new MockCachedUrlSet(mau, mspec); location = repository.getNodeLocation(mcus); fail("Should have thrown MalformedURLException."); } catch (MalformedURLException mue) { } try { mspec = new MockCachedUrlSetSpec("http://www.example.com/test/../../test2", null); mcus = new MockCachedUrlSet(mau, mspec); location = repository.getNodeLocation(mcus); fail("Should have thrown MalformedURLException."); } catch (MalformedURLException mue) { } }
public void testStoreNodeState() throws Exception { TimeBase.setSimulated(100); CachedUrlSet mcus = new MockCachedUrlSet(mau, new RangeCachedUrlSetSpec("http://www.example.com")); CrawlState crawl = new CrawlState(1, 2, 123); List polls = new ArrayList(2); PollState poll1 = new PollState(1, "sdf", "jkl", 2, 123, Deadline.at(456), false); PollState poll2 = new PollState(2, "abc", "def", 3, 321, Deadline.at(654), false); polls.add(poll1); polls.add(poll2); NodeState nodeState = new NodeStateImpl(mcus, 123321, crawl, polls, repository); ((NodeStateImpl) nodeState).setState(NodeState.DAMAGE_AT_OR_BELOW); repository.storeNodeState(nodeState); String filePath = LockssRepositoryImpl.mapAuToFileLocation(tempDirPath, mau); filePath = LockssRepositoryImpl.mapUrlToFileLocation( filePath, "http://www.example.com/" + HistoryRepositoryImpl.NODE_FILE_NAME); File xmlFile = new File(filePath); assertTrue(xmlFile.exists()); nodeState = null; nodeState = repository.loadNodeState(mcus); assertSame(mcus, nodeState.getCachedUrlSet()); assertEquals(123321, nodeState.getAverageHashDuration()); assertEquals(1, nodeState.getCrawlState().getType()); assertEquals(2, nodeState.getCrawlState().getStatus()); assertEquals(123, nodeState.getCrawlState().getStartTime()); assertEquals(NodeState.DAMAGE_AT_OR_BELOW, nodeState.getState()); Iterator pollIt = nodeState.getActivePolls(); assertTrue(pollIt.hasNext()); PollState loadedPoll = (PollState) pollIt.next(); assertEquals(1, loadedPoll.getType()); assertEquals("sdf", loadedPoll.getLwrBound()); assertEquals("jkl", loadedPoll.getUprBound()); assertEquals(2, loadedPoll.getStatus()); assertEquals(123, loadedPoll.getStartTime()); assertEquals(456, loadedPoll.getDeadline().getExpirationTime()); assertTrue(pollIt.hasNext()); loadedPoll = (PollState) pollIt.next(); assertEquals(2, loadedPoll.getType()); assertEquals("abc", loadedPoll.getLwrBound()); assertEquals("def", loadedPoll.getUprBound()); assertEquals(3, loadedPoll.getStatus()); assertEquals(321, loadedPoll.getStartTime()); assertEquals(654, loadedPoll.getDeadline().getExpirationTime()); assertFalse(pollIt.hasNext()); TimeBase.setReal(); }
public void testStorePollHistories() throws Exception { TimeBase.setSimulated(123321); MockCachedUrlSetSpec mspec = new MockCachedUrlSetSpec("http://www.example.com", null); CachedUrlSet mcus = new MockCachedUrlSet(mau, mspec); NodeStateImpl nodeState = new NodeStateImpl(mcus, -1, null, null, repository); List histories = ListUtil.list( createPollHistoryBean(3), createPollHistoryBean(3), createPollHistoryBean(3), createPollHistoryBean(3), createPollHistoryBean(3)); /* * CASTOR: [summary] Rewrite test in non-Castor way * This is obviously not an appropriate way of writing this test, * Right now it creates sample data in Castor format, from legacy * code back when Castor was the built-in serialization engine. * TODO: Rewrite test in non-Castor way */ // nodeState.setPollHistoryBeanList(histories); nodeState.setPollHistoryList(NodeHistoryBean.fromBeanListToList(histories)); repository.storePollHistories(nodeState); String filePath = LockssRepositoryImpl.mapAuToFileLocation(tempDirPath, mau); filePath = LockssRepositoryImpl.mapUrlToFileLocation( filePath, "http://www.example.com/" + HistoryRepositoryImpl.HISTORY_FILE_NAME); File xmlFile = new File(filePath); assertTrue(xmlFile.exists()); nodeState.setPollHistoryList(new ArrayList()); repository.loadPollHistories(nodeState); List loadedHistory = nodeState.getPollHistoryList(); assertEquals(histories.size(), loadedHistory.size()); // CASTOR: some Castor-tailored stuff here // PollHistoryBean expect1 = (PollHistoryBean)histories.get(0); // PollHistoryBean elem1 = (PollHistoryBean)loadedHistory.get(0); PollHistory expect1 = (PollHistory) histories.get(0); PollHistory elem1 = (PollHistory) loadedHistory.get(0); assertEquals(expect1.type, elem1.type); assertEquals(expect1.lwrBound, elem1.lwrBound); assertEquals(expect1.uprBound, elem1.uprBound); assertEquals(expect1.status, elem1.status); assertEquals(expect1.startTime, elem1.startTime); assertEquals(expect1.duration, elem1.duration); // CASTOR: some Castor-tailored stuff here // List expectBeans = (List)expect1.getVoteBeans(); // List elemBeans = (List)elem1.getVoteBeans(); Iterator expectIter = (Iterator) expect1.getVotes(); Iterator elemIter = (Iterator) elem1.getVotes(); while (expectIter.hasNext() && elemIter.hasNext()) { Vote expectVote = (Vote) expectIter.next(); Vote elemVote = (Vote) elemIter.next(); assertEquals( expectVote.getVoterIdentity().getIdString(), elemVote.getVoterIdentity().getIdString()); assertEquals(expectVote.isAgreeVote(), elemVote.isAgreeVote()); assertEquals(expectVote.getChallengeString(), elemVote.getChallengeString()); assertEquals(expectVote.getVerifierString(), elemVote.getVerifierString()); assertEquals(expectVote.getHashString(), elemVote.getHashString()); } assertFalse(expectIter.hasNext()); assertFalse(expectIter.hasNext()); TimeBase.setReal(); }