@Test public void testPrintChecksumErrorStateForReplica() throws IOException, NoSuchFieldException, IllegalAccessException { MockFileBasedActiveBitPreservation fbabp = new MockFileBasedActiveBitPreservation(); JspWriter jw = new MockJspWriter(); BitpreserveFileState.printChecksumErrorStateForReplica( jw, Replica.getReplicaFromId("ONE"), new Locale("da")); assertTrue( "Number of changed files should be called by a bitarchive replica", fbabp.calls.get(NUM_CHANGED_FILES).contains("ONE")); assertFalse( "Number of changed files should not be called by the Checksum replica.", fbabp .calls .get(NUM_CHANGED_FILES) .contains(Replica.getReplicaFromId("THREE").getType().name())); assertTrue( "Date for changed files should be called by replica ONE", fbabp.calls.get(DATE_CHANGED_FILES).contains("ONE")); assertFalse( "Date for changed files should not have been called by replica THREE", fbabp.calls.get(DATE_CHANGED_FILES).contains("THREE")); fbabp.calls.clear(); }
@Test public void testProcessChecksumRequest() throws NoSuchFieldException, IllegalAccessException { MockFileBasedActiveBitPreservation mockabp = new MockFileBasedActiveBitPreservation(); TestServletRequest request = new TestServletRequest(); Locale l = new Locale("da"); mockabp.calls.clear(); // Setup to neither run checksum nor find-missing-files. Map<String, String[]> parameters = new HashMap<String, String[]>(); parameters.put( dk.netarkivet.archive.webinterface.Constants.BITARCHIVE_NAME_PARAM, new String[] {Replica.getReplicaFromId("ONE").getName()}); parameters.put(dk.netarkivet.archive.webinterface.Constants.FILENAME_PARAM, (String[]) null); parameters.put( dk.netarkivet.archive.webinterface.Constants.FIX_ADMIN_CHECKSUM_PARAM, (String[]) null); parameters.put(dk.netarkivet.archive.webinterface.Constants.CREDENTIALS_PARAM, (String[]) null); parameters.put(dk.netarkivet.archive.webinterface.Constants.CHECKSUM_PARAM, (String[]) null); request.setParameterMap(parameters); StringBuilder res = new StringBuilder(); PageContext context = dk.netarkivet.common.webinterface.WebinterfaceTestCase.getDummyPageContext(l, request); PreservationState ps = BitpreserveFileState.processChecksumRequest(res, context); assertNull("Only null arguments, should give a null result.", ps); }
@Test // Tests both printFileName, printFileState public void testPrints() throws Exception { MockJspWriter jspout = new MockJspWriter(); Locale l = new Locale("da"); BitpreserveFileState.printFileName(jspout, "filename", 0, l); // jspout. }
@Test public void testPrintMissingFileStateForReplica() throws IOException, NoSuchFieldException, IllegalAccessException { MockFileBasedActiveBitPreservation fbabp = new MockFileBasedActiveBitPreservation(); JspWriter fw = new MockJspWriter(); BitpreserveFileState.printMissingFileStateForReplica( fw, Replica.getReplicaFromId("ONE"), new Locale("da")); BitpreserveFileState.printMissingFileStateForReplica( fw, Replica.getReplicaFromId("TWO"), new Locale("da")); assertTrue( "Number of missing files should be called by a bitarchive replica", fbabp .calls .get(NUM_MISSING_FILES) .contains(Replica.getReplicaFromId("ONE").getType().name())); assertFalse( "Number of missing files should not be called by the Checksum replica.", fbabp .calls .get(NUM_MISSING_FILES) .contains(Replica.getReplicaFromId("THREE").getType().name())); assertEquals( "Number of missing files should be put into the array 2 times", 2, fbabp.calls.get(NUM_MISSING_FILES).size()); assertTrue( "Number of files should be called by replica ONE", fbabp.calls.get(NUM_FILES).contains("ONE")); assertFalse( "Number of file should not have been called by replica THREE", fbabp.calls.get(NUM_FILES).contains("THREE")); assertTrue( "Date for missing files should be called by replica TWO", fbabp.calls.get(DATE_MISSING_FILES).contains("TWO")); assertFalse( "Date for missing files should not have been called by replica THREE", fbabp.calls.get(DATE_MISSING_FILES).contains("THREE")); fbabp.calls.clear(); }
@Test public void testMakeCheckbox() throws NoSuchFieldException, IllegalAccessException { String res = BitpreserveFileState.makeCheckbox("TEST-COMMAND", "TEST-ARG1", "TEST-ARG2"); assertTrue("Should contain the TEST-COMMAND", res.contains("name=\"TEST-COMMAND\"")); assertTrue( "Should contain TEST-ARG1 and TEST-ARG2 seperated by " + dk.netarkivet.archive.webinterface.Constants.STRING_FILENAME_SEPARATOR + " but the result was " + res, res.contains( "value=\"" + "TEST-ARG1" + dk.netarkivet.archive.webinterface.Constants.STRING_FILENAME_SEPARATOR + "TEST-ARG2" + "\"")); }
/** * FIXME fails after new threadbased implementation * * @throws NoSuchFieldException * @throws IllegalAccessException */ @Test public void testUpdateRequest() throws NoSuchFieldException, IllegalAccessException { MockFileBasedActiveBitPreservation mockabp = new MockFileBasedActiveBitPreservation(); MockHttpServletRequest request = new MockHttpServletRequest(); Locale l = new Locale("da"); mockabp.calls.clear(); // Setup to run find-missing-files request = new MockHttpServletRequest(); request.setupAddParameter( dk.netarkivet.archive.webinterface.Constants.BITARCHIVE_NAME_PARAM, new String[] {Replica.getReplicaFromId("ONE").getName()}); request.setupAddParameter( dk.netarkivet.archive.webinterface.Constants.UPDATE_TYPE_PARAM, new String[] {dk.netarkivet.archive.webinterface.Constants.FIND_MISSING_FILES_OPTION}); BitpreserveFileState.processUpdateRequest(WebinterfaceTestCase.getDummyPageContext(l, request)); // TODO something here to avoid the failure!! // assertTrue("One calls to Find Missing Files expected", // mockabp.calls.containsKey(FIND_MISSING_FILES)); // assertFalse("No calls to Find Checksum expected", // mockabp.calls.containsKey(FIND_CHECKSUM)); // mockabp.calls.clear(); // // // Setup to run find-checksum // request = new MockHttpServletRequest(); // request.setupAddParameter(dk.netarkivet.archive.webinterface.Constants.BITARCHIVE_NAME_PARAM, // new String[]{Replica.getReplicaFromId("ONE").getName()}); // request.setupAddParameter(dk.netarkivet.archive.webinterface.Constants.UPDATE_TYPE_PARAM, // new String[]{dk.netarkivet.archive.webinterface.Constants.CHECKSUM_OPTION}); // // BitpreserveFileState.processUpdateRequest(WebinterfaceTestCase.getDummyPageContext(l, // request)); // // assertFalse("No calls to Find Missing Files expected", // mockabp.calls.containsKey(FIND_MISSING_FILES)); // assertTrue("One calls to Find Checksum expected", // mockabp.calls.containsKey(FIND_CHECKSUM)); // mockabp.calls.clear(); }
@Test public void testProcessMissingRequest() throws Exception { Settings.set( ArchiveSettings.DIR_ARCREPOSITORY_BITPRESERVATION, TestInfo.WORKING_DIR.getAbsolutePath()); Settings.set(ArchiveSettings.DIRS_ARCREPOSITORY_ADMIN, TestInfo.WORKING_DIR.getAbsolutePath()); // Ensure that a admin data exists before we start. AdminData.getUpdateableInstance(); MockFileBasedActiveBitPreservation mockabp = new MockFileBasedActiveBitPreservation(); MockHttpServletRequest request = new MockHttpServletRequest(); String replicaID1 = "ONE"; String replicaID2 = "TWO"; String filename1 = "foo"; String filename2 = "bar"; Locale defaultLocale = new Locale("da"); // First test a working set of params Map<String, String[]> args = new HashMap<String, String[]>(); args.put( ADD_COMMAND, new String[] { Replica.getReplicaFromId(replicaID1).getName() + STRING_FILENAME_SEPARATOR + filename1 }); request.setupAddParameter( ADD_COMMAND, new String[] { Replica.getReplicaFromId(replicaID1).getName() + STRING_FILENAME_SEPARATOR + filename1 }); args.put(GET_INFO_COMMAND, new String[] {filename1}); request.setupAddParameter(GET_INFO_COMMAND, new String[] {filename1}); args.put(BITARCHIVE_NAME_PARAM, new String[] {Replica.getReplicaFromId(replicaID1).getName()}); request.setupAddParameter( BITARCHIVE_NAME_PARAM, new String[] {Replica.getReplicaFromId(replicaID1).getName()}); request.setupGetParameterMap(args); request.setupGetParameterNames(new Vector<String>(args.keySet()).elements()); Map<String, PreservationState> status = BitpreserveFileState.processMissingRequest( WebinterfaceTestCase.getDummyPageContext(defaultLocale, request), new StringBuilder()); assertEquals("Should have one call to reestablish", 1, mockabp.getCallCount(ADD_METHOD)); assertEquals( "Should have one call to getFilePreservationStatus", 1, mockabp.getCallCount(GET_INFO_METHOD)); assertEquals("Should have one info element (with mock results)", null, status.get(filename1)); // Check that we can call without any params mockabp.calls.clear(); request = new MockHttpServletRequest(); args.clear(); args.put(BITARCHIVE_NAME_PARAM, new String[] {Replica.getReplicaFromId(replicaID1).getName()}); request.setupAddParameter( BITARCHIVE_NAME_PARAM, new String[] {Replica.getReplicaFromId(replicaID1).getName()}); request.setupGetParameterMap(args); status = BitpreserveFileState.processMissingRequest( WebinterfaceTestCase.getDummyPageContext(defaultLocale, request), new StringBuilder()); assertEquals("Should have no call to restablish", 0, mockabp.getCallCount(ADD_METHOD)); assertEquals( "Should have no call to getFilePreservationStatus", 0, mockabp.getCallCount(GET_INFO_METHOD)); assertEquals("Should have no status", 0, status.size()); // Check that we can handle more than one call to each and that the // args are correct. mockabp.calls.clear(); request = new MockHttpServletRequest(); args.clear(); args.put(BITARCHIVE_NAME_PARAM, new String[] {Replica.getReplicaFromId(replicaID2).getName()}); request.setupAddParameter( BITARCHIVE_NAME_PARAM, new String[] {Replica.getReplicaFromId(replicaID2).getName()}); request.setupAddParameter( ADD_COMMAND, new String[] { Replica.getReplicaFromId(replicaID2).getName() + STRING_FILENAME_SEPARATOR + filename1, Replica.getReplicaFromId(replicaID2).getName() + STRING_FILENAME_SEPARATOR + filename1 }); args.put( ADD_COMMAND, new String[] { Replica.getReplicaFromId(replicaID2).getName() + STRING_FILENAME_SEPARATOR + filename1, Replica.getReplicaFromId(replicaID2).getName() + STRING_FILENAME_SEPARATOR + filename1 }); request.setupAddParameter(GET_INFO_COMMAND, new String[] {filename1, filename2, filename1}); args.put(GET_INFO_COMMAND, new String[] {filename1, filename2, filename1}); request.setupGetParameterMap(args); status = BitpreserveFileState.processMissingRequest( WebinterfaceTestCase.getDummyPageContext(defaultLocale, request), new StringBuilder()); assertEquals("Should have two calls to restablish", 2, mockabp.getCallCount(ADD_METHOD)); assertEquals( "Should have three calls to getFilePreservationStatus", 3, mockabp.getCallCount(GET_INFO_METHOD)); assertEquals("Should have two info elements", 2, status.size()); assertEquals("Should have info for filename1", null, status.get(filename1)); assertEquals("Should have info for filename2", null, status.get(filename2)); // Iterator<String> it = mockabp.calls.get(ADD_METHOD).iterator(); // while (it.hasNext()) { // System.out.println(it.next()); // } CollectionAsserts.assertIteratorEquals( "Should have the args given add", Arrays.asList(new String[] {filename1 + "," + replicaID2, filename1 + "," + replicaID2}) .iterator(), mockabp.calls.get(ADD_METHOD).iterator()); CollectionAsserts.assertIteratorEquals( "Should have the args given info", Arrays.asList(new String[] {filename1, filename2, filename1}).iterator(), mockabp.calls.get(GET_INFO_METHOD).iterator()); }