diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java index ba9f5d66657f9ce9808f60c6fd2923618c1e875f..b85b02d56ccd72fdad9d044dc37bf1cf7eec331c 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IDIOMImages.java @@ -39,6 +39,7 @@ import info.textgrid.middleware.oaipmh.ResumptionTokenType; /** * */ +// FIXME Why do we have to implement three classes?? public class IDIOMImages implements RecordDelivererInterface, RecordListDelivererInterface, IdentifierListDelivererInterface { @@ -48,7 +49,8 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere private String perPage; private String pageNumber; private int totalHits; - private String rbacSessionID; + private String idiomRbacSessionID; + private String idiomTGCrudEndpoint; private static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>(); private static Map<String, String> fromUntilCollector = new Hashtable<String, String>(); @@ -170,7 +172,8 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere * */ @Override - public GetRecordType getRecordById(String id) throws JSONException, IOException, ParseException { + public GetRecordType getRecordById(final String id) + throws JSONException, IOException, ParseException { GetRecordType singleImageMetsMods = new GetRecordType(); RecordType conedaKorRecord = new RecordType(); @@ -181,31 +184,33 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere ImageMetsMods immByTGURI = null; + String changedID = id; if (!id.startsWith("textgrid:")) { - id = "textgrid:" + id; + changedID = "textgrid:" + id; } - log.fine("processing id: " + id); + log.fine("processing id: " + changedID); try { - immByTGURI = new ImageMetsMods(new TextGridUri(id), this.rbacSessionID); + immByTGURI = new ImageMetsMods(this.idiomTGCrudEndpoint, this.idiomRbacSessionID, + new TextGridUri(changedID)); log.fine("image id/title: " + immByTGURI.getID() + " / " + immByTGURI.getTitle()); builder = factory.newDocumentBuilder(); - log.fine("immByTGURI: " + (immByTGURI != null ? immByTGURI.getXML() : "NULL")); + log.fine("immByTGURI: " + immByTGURI.getXML()); Document doc = builder.parse(new InputSource(new StringReader(immByTGURI.getXML()))); metadataMets.setAny(doc.getDocumentElement()); conedaKorRecord.setMetadata(metadataMets); - if (id.contains(".")) { + if (changedID.contains(".")) { conedaKorRecord.setHeader(buildOAIPMH_RecordHeader( OAIPMHUtilities.datestampAsString(immByTGURI.getCreationDate()), - id.substring(0, id.indexOf(".")))); + changedID.substring(0, changedID.indexOf(".")))); } else { conedaKorRecord.setHeader(buildOAIPMH_RecordHeader( - OAIPMHUtilities.datestampAsString(immByTGURI.getCreationDate()), id)); + OAIPMHUtilities.datestampAsString(immByTGURI.getCreationDate()), changedID)); } singleImageMetsMods.setRecord(conedaKorRecord); @@ -405,15 +410,29 @@ public class IDIOMImages implements RecordDelivererInterface, RecordListDelivere /** * @return */ - public String getRbacSessionID() { - return this.rbacSessionID; + public String getIdiomRbacSessionID() { + return this.idiomRbacSessionID; + } + + /** + * @param idiomRbacSessionID + */ + public void setIdiomRbacSessionID(String idiomRbacSessionID) { + this.idiomRbacSessionID = idiomRbacSessionID; + } + + /** + * @return + */ + public String getIdiomTGCrudEndpoint() { + return this.idiomTGCrudEndpoint; } /** - * @param rbacSessionID + * @param idiomTGCrudEndpoint */ - public void setRbacSessionID(String rbacSessionID) { - this.rbacSessionID = rbacSessionID; + public void setIdiomTGCrudEndpoint(String idiomTGCrudEndpoint) { + this.idiomTGCrudEndpoint = idiomTGCrudEndpoint; } /** diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java index 8d2466ee1ca8a46cb67a234b0cb34f178f932fe2..bbe1aad3bb625385905a5b7d3660060780b7495b 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java @@ -25,17 +25,16 @@ import info.textgrid.middleware.oaipmh.ResumptionTokenType; public abstract class IdentifierListDelivererAbstract implements IdentifierListDelivererInterface { // ** - // FINALS + // STATIC // ** - protected static final int lifeTimeResToken = 100; + private static Logger log = Logger.getLogger(IdentifierListDelivererAbstract.class.getName()); // ** - // STATIC + // FINALS // ** - // FIXME Why is a global logger defined here? - private static Logger log = Logger.getGlobal(); + protected static final int lifeTimeResToken = 100; // ** // CLASS @@ -173,11 +172,11 @@ public abstract class IdentifierListDelivererAbstract implements IdentifierListD } // Check the need for a resumption token! - ResumptionTokenType resTokenForResponse = OAIPMHUtilities.getResumptionToken( + ResumptionTokenType responseToken = OAIPMHUtilities.getResumptionToken( listFurtherValues.getHits().getTotalHits(), resumptionToken, cursorCollector, listFurtherValues.getScrollId(), this.searchResponseSize, i); - if (resTokenForResponse != null) { - lit.setResumptionToken(resTokenForResponse); + if (responseToken != null) { + lit.setResumptionToken(responseToken); } return listFurtherValues; diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java index cfab7f61852a489e004f898b5be4511eb5407f61..1ac7ea379871cbcc151e8d0cf83604448b5ed553 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.text.ParseException; import java.util.Hashtable; import java.util.Map; +import java.util.logging.Logger; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchScrollRequest; @@ -19,7 +20,9 @@ import info.textgrid.middleware.oaipmh.ListIdentifiersType; import info.textgrid.middleware.oaipmh.ResumptionTokenType; /** - * + * @author Max Brodhun, SUB Göttingen + * @author Stefan E. Funk, SUB Göttingen + * @version 2022-09-13 */ public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstract { @@ -27,6 +30,8 @@ public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstrac // STATICS // ** + private static Logger log = Logger.getLogger(IdentifierListDelivererIDIOM.class.getName()); + private static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>(); // ** @@ -44,41 +49,30 @@ public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstrac super(textgrid, dariah); } - /* - * (non-Javadoc) - * - * @see info.textgrid.middleware.IdentifierListDelivererAbstract#processIdentifierList(java.lang. - * String, java.lang.String, java.lang.String, java.lang.String) + /** + * */ @Override public ListIdentifiersType processIdentifierList(final String from, final String to, final String set, final String resumptionToken) throws ParseException, IOException { ListIdentifiersType identifierList = new ListIdentifiersType(); - BoolQueryBuilder recordFilterForClassicMayan; - - BoolQueryBuilder both; - RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("lastModified").from(from).to(to); - BoolQueryBuilder test = QueryBuilders.boolQuery().must( + BoolQueryBuilder projectQuery = QueryBuilders.boolQuery().must( QueryBuilders.matchPhraseQuery("project.id", "TGPR-0e926f53-1aba-d415-ecf6-539edcd8a318")); - - BoolQueryBuilder artefact = QueryBuilders.boolQuery() + BoolQueryBuilder artefactQuery = QueryBuilders.boolQuery() .must(QueryBuilders.matchPhraseQuery("format", "text/tg.inputform+rdf+xml")) .must(QueryBuilders.matchPhraseQuery("notes", "ARTEFACT")); - - BoolQueryBuilder conedakor = QueryBuilders.boolQuery() + BoolQueryBuilder conedakorQuery = QueryBuilders.boolQuery() .must(QueryBuilders.matchPhraseQuery("format", "application/json")) .must(QueryBuilders.matchPhraseQuery("notes", "ConedaKorMediumData")); + BoolQueryBuilder both = QueryBuilders.boolQuery().should(artefactQuery).should(conedakorQuery); - both = QueryBuilders.boolQuery().should(artefact).should(conedakor); - - BoolQueryBuilder bla = QueryBuilders.boolQuery().must(rangeQuery) - .must(test.filter(both)); - + BoolQueryBuilder bla = + QueryBuilders.boolQuery().must(rangeQuery).must(projectQuery.filter(both)); recordFilterForClassicMayan = bla; SearchResponse scrollResp; @@ -92,6 +86,9 @@ public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstrac searchSourceBuilder.size(this.idiomResponseSize); searchRequest.source(searchSourceBuilder); + log.fine("es elient/index: " + (this.oaiEsClient == null ? "null" : this.oaiEsClient) + "/" + + (this.oaiEsClient == null ? "null" : this.oaiEsClient.getEsIndex())); + if (resumptionToken != null) { SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken); scrollRequest.scroll(TimeValue.timeValueHours(24L)); @@ -111,15 +108,11 @@ public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstrac // TODO Auto-generated catch block e.printStackTrace(); } - // scrollResp = OAI_ESClient.getEsClient().prepareSearchScroll(resumptionToken) - // .setScroll(TimeValue.timeValueHours(24L)).execute().actionGet(); } String scrollID = scrollResp.getScrollId(); long completeListSize = scrollResp.getHits().totalHits; - - // long listSize = Queries.getAmountOfArtefacts(); if (completeListSize > 0) { setFoundItems(true); int i = 0; @@ -130,17 +123,21 @@ public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstrac OAIPMHUtilities.fieldLoader(new JSONObject(hit.getSourceAsMap()), "textgridUri"); RecordDelivererIDIOM idiomRecord = new RecordDelivererIDIOM(true, false); - + // IF we really do need the RecordDelivererIDIOM object here, we have to set the + // elasticsearch client! + idiomRecord.setOaiEsClient(this.oaiEsClient); + // FIXME BTW: We only need ID and DATESTAMP for ListIdentifiers, WHY do we get every + // complete RECORD?? identifierList.getHeader() .add(idiomRecord.getRecordById(textgridURI.replace(".0", "")).getRecord().getHeader()); } // Check the need for a resumption token! - ResumptionTokenType resTokenForResponse = OAIPMHUtilities.getResumptionToken(completeListSize, + ResumptionTokenType responseToken = OAIPMHUtilities.getResumptionToken(completeListSize, resumptionToken, cursorCollector, scrollID, this.idiomResponseSize, i); - if (resTokenForResponse != null) { - identifierList.setResumptionToken(resTokenForResponse); + if (responseToken != null) { + identifierList.setResumptionToken(responseToken); } } else { setFoundItems(false); diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererAbs.java b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererAbstract.java similarity index 95% rename from oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererAbs.java rename to oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererAbstract.java index 841f32dca5cd552953d78c6e339ed2ad8488e1fb..81dfae0452d75e74d33b8557a31250e8d5a45737 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererAbs.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererAbstract.java @@ -7,7 +7,7 @@ import info.textgrid.middleware.oaipmh.RequestType; /** * */ -public abstract class MetadataFormatListDelivererAbs +public abstract class MetadataFormatListDelivererAbstract implements MetadataFormatListDelivererInterface { // @@ -22,7 +22,7 @@ public abstract class MetadataFormatListDelivererAbs * @param textgrid * @param dariah */ - public MetadataFormatListDelivererAbs() { + public MetadataFormatListDelivererAbstract() { // } diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererDH.java b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererDH.java index eb6424f58936129071cbb4e38e2e19b08a9de3ed..38ac270b2d45cd9715da22c98373cdf7df13d103 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererDH.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererDH.java @@ -5,7 +5,7 @@ import info.textgrid.middleware.oaipmh.ListMetadataFormatsType; /** * */ -public class MetadataFormatListDelivererDH extends MetadataFormatListDelivererAbs { +public class MetadataFormatListDelivererDH extends MetadataFormatListDelivererAbstract { /** * @param textgrid diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java index e7628670d27edef265f54408895b5df0de91aff4..0e003c06fb8580fc7cb51dcf3ea96d5b67cd1b9b 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java @@ -12,7 +12,7 @@ import info.textgrid.middleware.oaipmh.MetadataFormatType; /** * */ -public class MetadataFormatListDelivererTG extends MetadataFormatListDelivererAbs { +public class MetadataFormatListDelivererTG extends MetadataFormatListDelivererAbstract { /** * diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java index e4ca5b39826fb9357cec13bb0239a57f9838358a..74f10c0b9e912345774726c396393c0aa04e11ca 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java @@ -1,11 +1,8 @@ package info.textgrid.middleware; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.text.ParseException; import java.util.List; -import java.util.Properties; import java.util.logging.Logger; import javax.xml.datatype.DatatypeConfigurationException; import org.elasticsearch.common.Strings; diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java index 5d2f9b620c7abc4402228eb01bc73314ef3f9ae4..c14907b472c8a5dbfcce0acd8ed814c4a30bb048 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java @@ -24,7 +24,7 @@ import info.textgrid.middleware.oaipmh.RecordType; /** * @author Maximilian Brodhun, SUB Göttingen * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-09 + * @version 2022-09-19 * @since 2019-03-12 */ @Component @@ -67,6 +67,8 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract { changedId = changedId + ".0"; } + log.fine("changedId: " + changedId); + JSONObject json = new JSONObject(); String[] fields = {TGConstants.CREATED, TGConstants.MODIFIED_FIELD, "notes"}; @@ -135,6 +137,7 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract { e.printStackTrace(); } } else if (this.getObjectType().startsWith("ConedaKorMediumData")) { + GetRecordType idi = new IDIOMImages().getRecordById(id); // Fixes #64 if (idi != null) { diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java index 66442f05bc953272b70015e091fe8c723e698f9c..97523e4a4e6596eb901287b7efa1485c5c247fa2 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java @@ -23,7 +23,7 @@ import info.textgrid.middleware.oaipmh.ResumptionTokenType; /** * @author Maximilian Brodhun, SUB Göttingen * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-07 + * @version 2022-09-19 * @since */ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { @@ -33,11 +33,13 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { // ** private static Logger log = Logger.getLogger(RecordListDelivererIDIOM.class.getName()); - private static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>(); - private RecordDelivererIDIOM idiomRecord; + // ** + // CLASS + // ** + private RecordDelivererIDIOM idiomRecord; // Set default to 30, can be changed in oaipmh.properties. private int idiomResponseSize = 30; @@ -60,21 +62,21 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract { RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("lastModified").from(from).to(to); - BoolQueryBuilder test = QueryBuilders.boolQuery().must( + BoolQueryBuilder projectQuery = QueryBuilders.boolQuery().must( QueryBuilders.matchPhraseQuery("project.id", "TGPR-0e926f53-1aba-d415-ecf6-539edcd8a318")); - BoolQueryBuilder artefact = QueryBuilders.boolQuery() + BoolQueryBuilder artefactQuery = QueryBuilders.boolQuery() .must(QueryBuilders.matchPhraseQuery("format", "text/tg.inputform+rdf+xml")) .must(QueryBuilders.matchPhraseQuery("notes", "ARTEFACT")); - BoolQueryBuilder conedakor = QueryBuilders.boolQuery() + BoolQueryBuilder conedakorQuery = QueryBuilders.boolQuery() .must(QueryBuilders.matchPhraseQuery("format", "application/json")) .must(QueryBuilders.matchPhraseQuery("notes", "ConedaKorMediumData")); - BoolQueryBuilder both = QueryBuilders.boolQuery().should(artefact).should(conedakor); + BoolQueryBuilder both = QueryBuilders.boolQuery().should(artefactQuery).should(conedakorQuery); BoolQueryBuilder queryBuilder = - QueryBuilders.boolQuery().must(rangeQuery).must(test.filter(both)); + QueryBuilders.boolQuery().must(rangeQuery).must(projectQuery.filter(both)); BoolQueryBuilder recordFilterForClassicMayan = queryBuilder; // QueryBuilders.boolQuery().must(rangeQuery).should(recordFilteroClassicMayanARTEFACT).should(recordFilterForClassicMayanCONEDAKOR); diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/OAIPMHUtilitiesOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/OAIPMHUtilitiesOnline.java deleted file mode 100644 index bf1aaa4e732ee5bf053b872e1565ecbd0225ac4e..0000000000000000000000000000000000000000 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/OAIPMHUtilitiesOnline.java +++ /dev/null @@ -1,703 +0,0 @@ -package info.textgrid.middleware.test.online; - -import static org.junit.Assert.assertTrue; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.net.URISyntaxException; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; -import javax.ws.rs.core.Response; -import org.apache.cxf.helpers.IOUtils; -import org.apache.cxf.jaxrs.client.Client; -import org.apache.cxf.jaxrs.client.JAXRSClientFactory; -import org.apache.cxf.jaxrs.client.WebClient; -import org.apache.cxf.transport.http.HTTPConduit; -import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; -import org.apache.http.HttpStatus; -import info.textgrid.middleware.OAIPMHProducer; - -/** - * <p> - * Some online tests for the TextGrid OAIMPH service. - * </p> - * - * @author Stefan E. Funk, SUB Göttingen - */ -public class OAIPMHUtilitiesOnline { - - // ** - // FINALS - // ** - - protected static final String OAI_DC_PREFIX = "oai_dc"; - protected static final String OAI_DATACITE_PREFIX = "oai_datacite"; - protected static final String OAI_IDIOMMETS_PREFIX = "oai_idiom_mets"; - - protected static final String EXPECTED_OAIDC_FORMAT_CONTENT = "<oai_dc:dc>"; - protected static final String EXPECTED_IDIOMMETS_FORMAT_CONTENT = "<mets "; - protected static final String EXPECTED_DATACITE_FORMAT_CONTENT = "<datacite:resource>"; - - protected static final String NO_SET = null; - protected static final String ERROR = " >>> ERROR"; - protected static final String OK = " >>> OKIDOKI"; - protected static final String TESTING = "\n >>> TESTING "; - protected static final String NO_THREAD_NAME = ""; - protected static final String NOT_TESTED = " >>> NOT_TESTED"; - protected static final String NO_TOKEN = "-1"; - - protected static final String VERB_LIST_IDENTIFIERS = "ListIdentifiers"; - protected static final String VERB_LIST_RECORDS = "ListRecords"; - protected static final String VERB_GET_RECORD = "GetRecord"; - protected static final String VERB_IDENTIFY = "Identify"; - protected static final String VERB_LIST_METADATA_FORMATS = "ListMetadataFormats"; - protected static final String VERB_LIST_SETS = "ListSets"; - protected static final boolean NO_METADATA_FORMAT_WITH_RESTOK = false; - protected static final boolean METADATA_FORMAT_WITH_RESTOK = true; - protected static final String NO_FROM = null; - protected static final String NO_UNTIL = null; - // Time to wait between the single queries using resumption tokens in milliseconds. - protected static final Long TIME = 275l; - - protected static final String HDL_PREFIX = "hdl:"; - protected static final String STAR_PREFIX = "***"; - - protected static final long OAIPMH_CLIENT_TIMEOUT = 120000; - - /** - * @param theClient - * @param thePath - * @return - * @throws IOException - */ - protected static Response getHttpResponse(Client theClient, String thePath) throws IOException { - return getHttpResponse(theClient, thePath, ""); - } - - /** - * @param theClient - * @param thePath - * @param theThreadName - * @return - * @throws IOException - */ - protected static Response getHttpResponse(Client theClient, String thePath, String theThreadName) - throws IOException { - - Response result; - - try { - Thread.sleep(TIME); - } catch (InterruptedException e) { - // Nothing interrupts here! - } - - WebClient w = WebClient.fromClient(theClient).replaceQuery(thePath); - - System.out.println("\t" + theThreadName + "HTTP GET " + w.getCurrentURI()); - - result = w.get(); - - // Check HTTP status. - int status = result.getStatus(); - - if (status != HttpStatus.SC_OK) { - System.err.println("\t" + theThreadName + "status: " + status); - System.err.println(ERROR); - assertTrue(false); - } else { - System.out.println("\t" + theThreadName + "status: " + status); - } - - return result; - } - - /** - * @param theMillis - * @return - */ - public static String getDurationInSecs(long theMillis) { - - int SECS_IN_MILLIS = 1000; - int secs = SECS_IN_MILLIS; - - return theMillis / secs + " second" + ((theMillis / secs) != 1 ? "s" : ""); - } - - /** - * <p> - * Loads a resource. - * </p> - * - * TODO Put together with the method in TGCrudServiceUtilities! Maybe create a first build maven - * module for utility things. - * - * @param {@link String} The resource to search for. - * @return {@link File} The resource. - * @throws IOException - */ - protected static File getResource(String resPart) throws IOException { - - File res; - - // If we have an absolute resPart, just return the file. - if (resPart.startsWith(File.separator)) { - return new File(resPart); - } - - URL url = ClassLoader.getSystemClassLoader().getResource(resPart); - if (url == null) { - throw new IOException("Resource '" + resPart + "' not found"); - } - try { - res = new File(url.toURI()); - } catch (URISyntaxException ue) { - res = new File(url.getPath()); - } - - return res; - } - - /** - * @param theProperty - * @return - */ - protected static List<String> getListFromProperties(String theProperty) { - - List<String> result = new ArrayList<String>(); - - String parts[] = theProperty.split(","); - for (String part : parts) { - result.add(part.trim()); - } - - return result; - } - - /** - * @return - * @throws IOException - * @throws FileNotFoundException - */ - protected static Properties getPropertiesFromFile(String theConfigFile) - throws FileNotFoundException, IOException { - - Properties result = null; - - // Load properties file. - result = new Properties(); - result.load(new FileInputStream(getResource(theConfigFile))); - - System.out.println("Properties file: " + theConfigFile); - result.list(System.out); - - return result; - } - - /** - * @param theEndpoint - * @return - */ - protected static Client getOAIPMHWEebClient(String theEndpoint) { - - Client result = null; - - // Get OAI-PMH REST endpoint and HTTP client. - System.out.println("Getting OAI-PMH HTTP client --> " + theEndpoint + " <--"); - - // Get proxy first, set policy. - OAIPMHProducer JAXRSClient = JAXRSClientFactory.create(theEndpoint, OAIPMHProducer.class); - HTTPConduit conduit = WebClient.getConfig(JAXRSClient).getHttpConduit(); - HTTPClientPolicy policy = new HTTPClientPolicy(); - policy.setReceiveTimeout(OAIPMHUtilitiesOnline.OAIPMH_CLIENT_TIMEOUT); - conduit.setClient(policy); - - // Create Web Client from Web Proxy. - result = WebClient.client(JAXRSClient); - - return result; - } - - // ** - // PRIVATE METHODS - // ** - - /** - * TODO Generalise in OaiPmhTestUtilities! - * - * @param theClient - * @param theVerb - * @param theSet - * @param theMetadataPrefix - * @param maxNumberOfPagesToTest - * @param recordsExpectedPerRequest - * @param theThreadName - * @param from - * @param until - * @param resumptionTokenANDMetadataPrefix - * @throws IOException - */ - protected static void testList(Client theClient, final String theVerb, final String theSet, - final String theMetadataPrefix, final int maxNumberOfPagesToTest, - final int recordsExpectedPerRequest, final String theThreadName, final String from, - final String until, final boolean resumptionTokenANDMetadataPrefix) throws IOException { - - String threadName = tn(theThreadName); - - long startTime = System.currentTimeMillis(); - - String testOccurance = "header"; - if (theVerb.equals(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS)) { - testOccurance = "record"; - } - - String path = "verb=" + theVerb + "&metadataPrefix=" + theMetadataPrefix; - - if (theSet != null) { - path += "&set=" + theSet; - } - - if (from != null && until != null) { - path += "&from=" + from + "&until=" + until; - } - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(theClient, path, threadName); - int status = httpResponse.getStatus(); - - int loopCount = 1; - long timeRunning = System.currentTimeMillis() - startTime; - System.out.println("\t" + threadName + "time: " - + OAIPMHUtilitiesOnline.getDurationInSecs(timeRunning) + " (loop " + loopCount - + (maxNumberOfPagesToTest != 0 ? "/" + maxNumberOfPagesToTest : "") + ")"); - - String responseString = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - // Test resumption token tags. - String restok = - examineResumptionTokenTag(responseString, testOccurance, OAIPMHUtilitiesOnline.NO_TOKEN, - recordsExpectedPerRequest, loopCount, threadName, theMetadataPrefix); - - // Test general metadata content (if verb is listRecords!), must go conform with the metadata - // prefix setting. - if (theVerb.equals(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS)) { - examineContent(responseString, theMetadataPrefix); - } - - while (status == HttpStatus.SC_OK && !restok.equals(OAIPMHUtilitiesOnline.NO_TOKEN)) { - loopCount += 1; - synchronized (threadName) { - if (maxNumberOfPagesToTest > 0 && loopCount > maxNumberOfPagesToTest) { - System.out - .println("\t" + threadName + "TESTING ONLY " + maxNumberOfPagesToTest + " pages!"); - break; - } - path = "verb=" + theVerb + "&resumptionToken=" + restok; - if (resumptionTokenANDMetadataPrefix) { - path += "&metadataPrefix=" + theMetadataPrefix; - } - httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(theClient, path, threadName); - timeRunning = System.currentTimeMillis() - startTime; - System.out.println("\t" + threadName + "time: " - + OAIPMHUtilitiesOnline.getDurationInSecs(timeRunning) + " (loop " + loopCount - + (maxNumberOfPagesToTest != 0 ? "/" + maxNumberOfPagesToTest : "") + ")"); - - // Test resumption token tags. - responseString = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - restok = examineResumptionTokenTag(responseString, testOccurance, restok, - recordsExpectedPerRequest, loopCount, threadName, theMetadataPrefix); - - // Test general metadata content (if verb is listRecords!), must go conform with the - // metadata // prefix setting. - if (theVerb.equals(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS)) { - examineContent(responseString, theMetadataPrefix); - } - } - } - - // Only check for max loops, if we do have less loops and no resumption token, it will be fine, - // too! - if (!restok.equals(OAIPMHUtilitiesOnline.NO_TOKEN) && loopCount < maxNumberOfPagesToTest) { - System.out.println(threadName + OAIPMHUtilitiesOnline.ERROR + ": Must have done " - + maxNumberOfPagesToTest + " loops, but did only " + loopCount); - assertTrue(false); - } - - // Check for single loop, we need MORE! - if (loopCount == 1) { - System.out - .println(threadName + OAIPMHUtilitiesOnline.ERROR + ": Must have more than one loop!"); - assertTrue(false); - } - - System.out.println("\t" + threadName + OAIPMHUtilitiesOnline.OK); - } - - /** - * @param theResponseString - * @param recordOrHeader - * @param oldtok - * @param recordsExpectedPerRequest - * @param loopCount - * @param theThreadName - * @param theMetadataPrefix - * @return Resumption token string, if existing, -1 if either no <resumptionToken> tag is - * existing, tag is existing and has no token value. - * @throws IOException - */ - protected static String examineResumptionTokenTag(final String theResponseString, - final String recordOrHeader, final String oldtok, final int recordsExpectedPerRequest, - final int loopCount, final String theThreadName, final String theMetadataPrefix) - throws IOException { - - // Test for OAIPMH errors. - if (theResponseString.contains("<error code=\"badArgument\">")) { - String message = - theThreadName + OAIPMHUtilitiesOnline.ERROR + " IN OAIPMH RESPONSE: " - + theResponseString; - System.out.println(message); - throw new IOException(message); - } - - // Count response objects at first. - int recordCount = 0; - int i = theResponseString.indexOf("<" + recordOrHeader + ">", 0); - while (i != -1) { - recordCount++; - i++; - i = theResponseString.indexOf("<" + recordOrHeader + ">", i); - } - - System.out.println("\t" + theThreadName + recordOrHeader + "s: " + recordCount); - - // Check if token tag is existing. - int tokStart = theResponseString.indexOf("<resumptionToken"); - int tokEnd = theResponseString.indexOf("</resumptionToken"); - - if (tokStart == -1 && tokEnd == -1) { - System.out.println("\t" + theThreadName + "token: no token"); - - return OAIPMHUtilitiesOnline.NO_TOKEN; - } - - String restokTmp = theResponseString.substring(tokStart, tokEnd); - // Get token tag. - String toktag = restokTmp.substring(0, restokTmp.indexOf(">") + 1).trim(); - System.out.println("\t" + theThreadName + "tokentag: " + toktag); - - // Get token. - String restok = restokTmp.substring(restokTmp.indexOf(">") + 1).trim(); - System.out.println("\t" + theThreadName + "token: " + restok); - - // Check if old and new token are equal or not. - boolean tokchanged = !oldtok.equals(restok); - System.out.println("\t" + theThreadName + "tokchngd: " + tokchanged); - - // Get completeListSize and cursor. - String sizeStr = toktag.substring(toktag.indexOf("completeListSize=\"") + 18); - int size = Integer.parseInt(sizeStr.substring(0, sizeStr.indexOf("\""))); - String cursorStr = toktag.substring(toktag.indexOf("cursor=\"") + 8); - int cursor = Integer.parseInt(cursorStr.substring(0, cursorStr.indexOf("\""))); - System.out.println("\t" + theThreadName + "size: " + size + " / " + cursor); - - // If token is provided, test cursor and element count! - if (!restok.isEmpty()) { - synchronized (TestGetRecordOnline.class) { - // Check <record> or <header> count, must be recordsExpectedPerRequest! - if (recordCount != recordsExpectedPerRequest) { - String message = - OAIPMHUtilitiesOnline.ERROR + ": " + recordOrHeader + " count mismatch, must be " - + recordsExpectedPerRequest + " if token is provided, but is " + recordCount; - assertTrue(message, false); - } - if (size <= recordsExpectedPerRequest) { - String message = - OAIPMHUtilitiesOnline.ERROR + ": completeListSize count mismatch, must be > " - + recordsExpectedPerRequest + " if token is provided, but is " + size; - assertTrue(message, false); - } - if (cursor != recordsExpectedPerRequest * loopCount) { - String message = OAIPMHUtilitiesOnline.ERROR + ": cursor must be " - + (loopCount * recordsExpectedPerRequest) + " in loop " + loopCount + ", but is " - + cursor; - assertTrue(message, false); - } - } - } - - // If no token is provided, stop querying. - else { - // Check <record> count, must be completeListSize % recordsExpectedPerRequest. - if (recordCount != size % recordsExpectedPerRequest) { - System.err.println(theThreadName + OAIPMHUtilitiesOnline.ERROR + ": " + recordOrHeader - + " count mismatch, should be " + size % recordsExpectedPerRequest + ", but is " - + recordCount); - assertTrue(false); - } - - // No resumption token available in response. - return OAIPMHUtilitiesOnline.NO_TOKEN; - } - - return restok; - } - - /** - * @param theThreadName - * @return - */ - protected static String tn(String theThreadName) { - - String result = theThreadName; - - if (theThreadName != null && !theThreadName.equals("") && !theThreadName.endsWith(" ")) { - result = "[" + theThreadName + "] "; - } - - return result; - } - - /** - * @param theResponseString - * @param theMetadataFormat - */ - protected static void examineContent(String theResponseString, String theMetadataFormat) { - - // Check for correct metadata content according to metadata prefix. - if (theMetadataFormat.equals(OAIPMHUtilitiesOnline.OAI_DC_PREFIX) - && !theResponseString - .contains("metadataPrefix=\"" + OAIPMHUtilitiesOnline.OAI_DC_PREFIX + "\"") - && !theResponseString.contains(OAIPMHUtilitiesOnline.EXPECTED_OAIDC_FORMAT_CONTENT)) { - System.out - .println(OAIPMHUtilitiesOnline.OAI_DC_PREFIX + " needs to deliver content with schema: " - + OAIPMHUtilitiesOnline.EXPECTED_OAIDC_FORMAT_CONTENT + "!"); - - System.out.println("ERROR:\n" + theResponseString); - - assertTrue(false); - } else if (theMetadataFormat.equals(OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX) - && !theResponseString.contains( - "metadataPrefix=\"" + OAIPMHUtilitiesOnline.EXPECTED_IDIOMMETS_FORMAT_CONTENT - + "\"") - && !theResponseString - .contains(OAIPMHUtilitiesOnline.EXPECTED_IDIOMMETS_FORMAT_CONTENT)) { - System.out.println( - OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX + " needs to deliver content with schema: " - + OAIPMHUtilitiesOnline.EXPECTED_IDIOMMETS_FORMAT_CONTENT + "!"); - - System.out.println("ERROR:\n" + theResponseString); - - assertTrue(false); - } else if (theMetadataFormat.equals(OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX) - && !theResponseString - .contains("metadataPrefix=\"" + OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX + "\"") - && !theResponseString.contains(OAIPMHUtilitiesOnline.EXPECTED_DATACITE_FORMAT_CONTENT)) { - System.out.println( - OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX + " needs to deliver content with schema: " - + OAIPMHUtilitiesOnline.EXPECTED_DATACITE_FORMAT_CONTENT + "!"); - - System.out.println("ERROR:\n" + theResponseString); - - assertTrue(false); - } else { - System.out.println(theResponseString); - } - } - - /** - * @param theResponseString - * @param recordOrHeader - * @param oldtok - * @param theMetadataPrefix - * @return Resumption token string, if existing, -1 if either no <resumptionToken> tag is - * existing, tag is existing and has no token value. - * @throws IOException - */ - protected static String examineResumptionTokenTag(String theResponseString, String recordOrHeader, - String oldtok, String theMetadataPrefix) throws IOException { - - // Default entries per page are 100 (IDIOM: 30). - // momentarily. - int expectedCount = 100; - if (theMetadataPrefix.equals(OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX)) { - expectedCount = 30; - } - - // Test for OAIPMH errors. - if (theResponseString.contains("<error code=\"badArgument\">")) { - System.err.println(OAIPMHUtilitiesOnline.ERROR + " IN OAIPMH RESPONSE: " + theResponseString); - assertTrue(false); - } - - // Count response objects at first. - int recordCount = 0; - int i = theResponseString.indexOf("<" + recordOrHeader + ">", 0); - while (i != -1) { - recordCount++; - i++; - i = theResponseString.indexOf("<" + recordOrHeader + ">", i); - } - - System.out.println("\t" + recordOrHeader + "s: " + recordCount); - - // Check if token tag is existing. - int tokStart = theResponseString.indexOf("<resumptionToken"); - int tokEnd = theResponseString.indexOf("</resumptionToken"); - - if (tokStart == -1 && tokEnd == -1) { - System.out.println("\ttoken: no token"); - - return "-1"; - } - - String restokTmp = theResponseString.substring(tokStart, tokEnd); - // Get token tag. - String toktag = restokTmp.substring(0, restokTmp.indexOf(">") + 1) - .trim(); - System.out.println("\ttokentag: " + toktag); - - // Get token. - String restok = restokTmp.substring(restokTmp.indexOf(">") + 1).trim(); - System.out.println("\ttoken: " + restok); - - // Check if old and new token are equal or not. - boolean tokchanged = !oldtok.equals(restok); - System.out.println("\ttokchngd: " + tokchanged); - - // Get completeListSize and cursor. - String sizeStr = toktag - .substring(toktag.indexOf("completeListSize=\"") + 18); - int size = Integer - .parseInt(sizeStr.substring(0, sizeStr.indexOf("\""))); - String cursorStr = toktag.substring(toktag.indexOf("cursor=\"") + 8); - int cursor = Integer - .parseInt(cursorStr.substring(0, cursorStr.indexOf("\""))); - System.out.println("\tsize: " + size + " / " + cursor); - - // If token is provided, and we have less than 100 (IDIOM: 30) elements: mekkern! - if (!restok.isEmpty()) { - synchronized (TestDHOAIPMHOnline.class) { - // Check <record> or <header> count, must be 100 (IDIOM: 30)! - if (recordCount != expectedCount) { - System.err.println( - OAIPMHUtilitiesOnline.ERROR + ": " + recordOrHeader + " count mismatch, must be " - + expectedCount + " if token is provided, but is " + recordCount); - } - if (size <= expectedCount) { - System.err - .println(OAIPMHUtilitiesOnline.ERROR + ": completeListSize count mismatch, must be > " - + expectedCount + " if token is provided, but is " + size); - } - if (recordCount != expectedCount || size <= expectedCount) { - assertTrue(false); - } - } - } - - // If no token is provided, stop querying. - else { - // Check <record> count, must be completeListSize % 100 (IDIOM: 30). - if (recordCount != size % expectedCount) { - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": " + recordOrHeader - + " count mismatch, should be " + size % expectedCount + ", but is " + recordCount); - assertTrue(false); - } - - // No resumption token available in response. - return "-1"; - } - - return restok; - } - - /** - * @param theWebClient - * @param theVerb - * @param theMetadataPrefix - * @param theSet - * @return - * @throws IOException - */ - protected static int testList(Client theWebClient, String theVerb, String theMetadataPrefix, - String theSet) throws IOException { - return testList(theWebClient, theVerb, theMetadataPrefix, theSet, OAIPMHUtilitiesOnline.NO_FROM, - OAIPMHUtilitiesOnline.NO_UNTIL); - } - - /** - * @param theWebClient - * @param theVerb - * @param theMetadataPrefix - * @param theSet - * @param from - * @param until - * @return How many pages were delivered - * @throws IOException - */ - protected static int testList(Client theWebClient, String theVerb, String theMetadataPrefix, - String theSet, String from, String until) throws IOException { - - int result; - - long startTime = System.currentTimeMillis(); - - String testOccurance = "header"; - if (theVerb.equals(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS)) { - testOccurance = "record"; - } - - String path = "verb=" + theVerb + "&metadataPrefix=" + theMetadataPrefix; - - if (theSet != null && !theSet.isEmpty()) { - path += "&set=" + theSet; - } - - if (from != null && until != null) { - path += "&from=" + from + "&until=" + until; - } - - Response response = OAIPMHUtilitiesOnline.getHttpResponse(theWebClient, path); - String responseString = IOUtils.readStringFromStream((InputStream) response.getEntity()); - int status = response.getStatus(); - - long timeRunning = System.currentTimeMillis() - startTime; - System.out.println("\ttime: " + OAIPMHUtilitiesOnline.getDurationInSecs(timeRunning)); - - String restok = examineResumptionTokenTag(responseString, testOccurance, "", theMetadataPrefix); - examineIdentifiers(responseString); - - result = 1; - while (status == HttpStatus.SC_OK && !restok.equals("-1")) { - path = "verb=" + theVerb + "&resumptionToken=" + restok; - response = OAIPMHUtilitiesOnline.getHttpResponse(theWebClient, path); - responseString = IOUtils.readStringFromStream((InputStream) response.getEntity()); - timeRunning = System.currentTimeMillis() - startTime; - System.out.println("\ttime: " + OAIPMHUtilitiesOnline.getDurationInSecs(timeRunning)); - restok = examineResumptionTokenTag(responseString, testOccurance, restok, theMetadataPrefix); - examineIdentifiers(responseString); - result++; - } - - System.out.println("\tpage amount: " + result); - System.out.println(OAIPMHUtilitiesOnline.OK); - - return result; - } - - /** - * @param theResponseString - * @return - * @throws IOException - */ - protected static void examineIdentifiers(String theResponseString) throws IOException { - if (theResponseString.contains("<identifier>hdl:21</identifier>")) { - System.err.println(OAIPMHUtilitiesOnline.ERROR - + " IN OAIPMH RESPONSE: identifier tag is corrupt!" + theResponseString); - assertTrue(false); - } - } - -} diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TGOAIPMHResumptionTokenThread.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TGOAIPMHResumptionTokenThread.java index 701a97005dc7d8f6fb2966fa69b749d9db2339f6..3cbbf1c06ea464038bcbbcc313e0847d3f291765 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TGOAIPMHResumptionTokenThread.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TGOAIPMHResumptionTokenThread.java @@ -1,8 +1,9 @@ -package info.textgrid.middleware.test.online; +package info.textgrid.middleware.test.online.tg; import java.io.IOException; import java.util.concurrent.Callable; import org.apache.cxf.jaxrs.client.Client; +import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline; diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestClassicMayanOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestClassicMayanOnline.java similarity index 93% rename from oaipmh-core/src/test/java/info/textgrid/middleware/test/TestClassicMayanOnline.java rename to oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestClassicMayanOnline.java index 9eb7966b77ff906792f310bf44a2adf6f86a92fd..542d6ab9543e1f359d0ea7e1074c1bb30c1c598e 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestClassicMayanOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestClassicMayanOnline.java @@ -1,4 +1,4 @@ -package info.textgrid.middleware.test; +package info.textgrid.middleware.test.online.tg; import java.io.IOException; import java.text.ParseException; @@ -21,6 +21,8 @@ import info.textgrid.middleware.IDIOMImages; @Ignore public class TestClassicMayanOnline { + // FIXME Check ignored tests!! Do they make any sense?? + /** * @throws JSONException * @throws IOException @@ -30,10 +32,13 @@ public class TestClassicMayanOnline { * @throws TransformerException */ @Test + @Ignore public void testGetRecord() throws JSONException, IOException, SAXException, ParseException, TransformerFactoryConfigurationError, TransformerException { IDIOMImages imageList = new IDIOMImages(); + // Set session ID here? + // imageList.setIdiomRbacSessionID("***"); Document document; try { @@ -55,6 +60,7 @@ public class TestClassicMayanOnline { * @throws TransformerException */ @Test + @Ignore public void testGetMediaList() throws JSONException, IOException, ParseException, SAXException, TransformerFactoryConfigurationError, TransformerException { @@ -84,6 +90,7 @@ public class TestClassicMayanOnline { * @throws TransformerException */ @Test + @Ignore public void testOAIPMHRequest() throws JSONException, IOException, ParseException, SAXException, TransformerFactoryConfigurationError, TransformerException { diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestDHOAIPMHOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestDHOAIPMHOnline.java deleted file mode 100644 index 96468b5edcc367ae4a1ddf0e040806e08d897591..0000000000000000000000000000000000000000 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestDHOAIPMHOnline.java +++ /dev/null @@ -1,437 +0,0 @@ -package info.textgrid.middleware.test.online; - -import static org.junit.Assert.assertTrue; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; -import javax.ws.rs.core.Response; -import org.apache.cxf.helpers.IOUtils; -import org.apache.cxf.jaxrs.client.Client; -import org.apache.cxf.jaxrs.client.JAXRSClientFactory; -import org.apache.cxf.jaxrs.client.WebClient; -import org.apache.cxf.transport.http.HTTPConduit; -import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; -import org.apache.http.HttpStatus; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Ignore; -import org.junit.Test; -import info.textgrid.middleware.OAIPMHProducer; - -/** - * <p> - * Some online tests for the DARIAH-DE Repository OAIMPH service. - * </p> - * - * @author Stefan E. Funk, SUB Göttingen - */ -@Ignore -public class TestDHOAIPMHOnline { - - // ** - // FINALS - // ** - - private static final String PROPERTIES_FILE = "oaipmh.test.repository-de-dariah-eu.properties"; - // private static final String PROPERTIES_FILE = "oaipmh.test.trep-de-dariah-eu.properties"; - - // ** - // STATICS - // ** - - // Some JAXRS things. - private static String oaipmhEndpoint; - private static OAIPMHProducer JAXRSClient; - private static Client oaipmhWebClient; - - // Properties - private static String expectedListSets; - private static String checkListIdentifiersSet; - private static Integer checkListIdentifiersSetExpectedPages; - - // ** - // PREPARATIONS - // ** - - /** - * @throws Exception - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - - // Load properties file. - Properties p = new Properties(); - p.load(new FileInputStream( - OAIPMHUtilitiesOnline.getResource(PROPERTIES_FILE))); - - System.out.println("Properties file: " + PROPERTIES_FILE); - p.list(System.out); - - // Get other needed properties. - oaipmhEndpoint = p.getProperty("oaipmhEndpoint"); - expectedListSets = p.getProperty("expectedListSets"); - checkListIdentifiersSet = p.getProperty("checkListIdentifiersSet"); - checkListIdentifiersSetExpectedPages = - Integer.parseInt(p.getProperty("checkListIdentifiersSetExpectedPages").trim()); - - // Get OAI-PMH REST endpoint and HTTP client. - System.out.println( - "Getting OAI-PMH HTTP client --> " + oaipmhEndpoint + " <--"); - - // Get proxy first, set policy. - JAXRSClient = JAXRSClientFactory.create(oaipmhEndpoint, - OAIPMHProducer.class); - HTTPConduit conduit = WebClient.getConfig(JAXRSClient).getHttpConduit(); - HTTPClientPolicy policy = new HTTPClientPolicy(); - policy.setReceiveTimeout(OAIPMHUtilitiesOnline.OAIPMH_CLIENT_TIMEOUT); - conduit.setClient(policy); - - // Create Web Client from Web Proxy. - oaipmhWebClient = WebClient.client(JAXRSClient); - } - - /** - * @throws Exception - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - // - } - - /** - * @throws Exception - */ - @Before - public void setUp() throws Exception { - // - } - - /** - * @throws Exception - */ - @After - public void tearDown() throws Exception { - // - } - - // ** - // TESTS - // ** - - /** - * @throws IOException - */ - @Test - public void testGetVersion() throws IOException { - - String shouldStartWith = "oaipmh-core"; - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#GETVERSION for '" - + shouldStartWith + "'"); - - String versionString = JAXRSClient.getVersion(); - - if (!versionString.startsWith(shouldStartWith)) { - System.err.println(OAIPMHUtilitiesOnline.ERROR - + ": response should start with '" + shouldStartWith + "'"); - assertTrue(false); - } - - System.out.println("\tresponse: " + versionString); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testRootWithSlash() throws IOException { - - String url = "oai/"; - String shouldContain = "DARIAH-DE Repository"; - - testRootURL(url, shouldContain); - } - - /** - * @throws IOException - */ - @Test - public void testRootWithoutSlash() throws IOException { - - String url = "oai"; - String shouldContain = "DARIAH-DE Repository"; - - testRootURL(url, shouldContain); - } - - /** - * @throws IOException - */ - @Test - public void testBlubbVerb() throws IOException { - - String url = "verb=BLUBB"; - String shouldContain = "Illegal OAI verb"; - - testRootURL(url, shouldContain); - } - - /** - * @throws IOException - */ - @Test - public void testIdentify() throws IOException { - - String verb = "Identify"; - String shouldContain = "DARIAH-DE Repository"; - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#IDENTIFY"); - - Response response = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, - "verb=" + verb); - int status = response.getStatus(); - - String responseString = IOUtils - .readStringFromStream((InputStream) response.getEntity()); - - if (status != HttpStatus.SC_OK - || !responseString.contains(shouldContain)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR - + ": response should contain '" + shouldContain + "'"); - assertTrue(false); - } - - System.out.println("\tresponse: " + responseString); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testListSets() throws IOException { - testListSet(expectedListSets, expectedListSets); - } - - /** - * @throws IOException - */ - @Test - public void testListRecordsDC() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTRECORDS"); - - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, "ListRecords", "oai_dc", - OAIPMHUtilitiesOnline.NO_SET); - } - - - /** - * @throws IOException - */ - @Test - @Ignore - public void testGetRecordDC() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#GETRECORD"); - - String identifier = ""; - String shouldContain = ""; - - String path = "verb=GetRecord&identifier=" + identifier - + "&metadataPrefix=oai_dc"; - - // FIXME Complete test! - } - - /** - * @throws IOException - */ - @Test - @Ignore - public void testGetRecordDATASITE() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#GETRECORD"); - - String identifier = ""; - String shouldContain = ""; - - String path = "verb=GetRecord&identifier=" + identifier - + "&metadataPrefix=oai_datacite"; - - // FIXME Complete test! - } - - /** - * @throws IOException - */ - @Test - public void testListIdentifiersDC() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTIDENTIFIERS"); - - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, "ListIdentifiers", "oai_dc", - OAIPMHUtilitiesOnline.NO_SET); - } - - /** - * @throws IOException - */ - @Test - public void testListIdentifiersSetDC() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTIDENTIFIERS"); - - int pages = - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, "ListIdentifiers", "oai_dc", - checkListIdentifiersSet); - - if (pages != checkListIdentifiersSetExpectedPages) { - assertTrue(pages + " != " + checkListIdentifiersSetExpectedPages, false); - } - } - - /** - * @throws IOException - */ - @Test - public void testListIdentifiersSetDCDifferentPrefixes() throws IOException { - - String uri = checkListIdentifiersSet; - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTIDENTIFIERS - HDL PREFIX"); - - if (!uri.startsWith(OAIPMHUtilitiesOnline.HDL_PREFIX)) { - assertTrue("missing '" + OAIPMHUtilitiesOnline.HDL_PREFIX + "' prefix!", false); - } - System.out.println("uri: " + uri); - int pages1 = OAIPMHUtilitiesOnline.testList(oaipmhWebClient, "ListIdentifiers", "oai_dc", uri); - if (pages1 != checkListIdentifiersSetExpectedPages) { - System.out.println(pages1 + " != " + checkListIdentifiersSetExpectedPages); - } - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTIDENTIFIERS - NO PREFIX"); - - if (checkListIdentifiersSet.startsWith(OAIPMHUtilitiesOnline.HDL_PREFIX)) { - uri = checkListIdentifiersSet.substring(4); - } - System.out.println("uri: " + uri); - int pages2 = OAIPMHUtilitiesOnline.testList(oaipmhWebClient, "ListIdentifiers", "oai_dc", uri); - if (pages2 != checkListIdentifiersSetExpectedPages) { - System.out.println(pages2 + " != " + checkListIdentifiersSetExpectedPages); - } - - // Check pages count. - if (pages1 != checkListIdentifiersSetExpectedPages - || pages2 != checkListIdentifiersSetExpectedPages) { - assertTrue("pages count does not match", false); - } - } - - - /** - * @throws IOException - */ - @Test - @Ignore - public void testListIdentifiersSetDCStarPrefixe() throws IOException { - - // TODO Un-ignore if identifier check is implemented! - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTIDENTIFIERS - STAR PREFIX"); - - if (checkListIdentifiersSet.startsWith(OAIPMHUtilitiesOnline.HDL_PREFIX)) { - checkListIdentifiersSet = - OAIPMHUtilitiesOnline.STAR_PREFIX + checkListIdentifiersSet.substring(4); - } - System.out.println("uri: " + checkListIdentifiersSet); - int pages3 = - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, "ListIdentifiers", "oai_dc", - checkListIdentifiersSet); - if (pages3 != checkListIdentifiersSetExpectedPages) { - System.out.println(pages3 + " != " + checkListIdentifiersSetExpectedPages); - } - } - - /** - * @throws IOException - */ - @Test - public void testListIdentifiersDATASITE() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTIDENTIFIERS"); - - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, "ListIdentifiers", "oai_datacite", - OAIPMHUtilitiesOnline.NO_SET); - } - - // ** - // PRIVATE METHODS - // ** - - /** - * @param theSet - * @throws IOException - */ - private static void testListSet(String theSet, String theExpectedResponse) - throws IOException { - - String verb = "ListSets"; - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTSETS"); - - Response response = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, - "verb=" + verb); - int status = response.getStatus(); - - String responseString = IOUtils - .readStringFromStream((InputStream) response.getEntity()); - - if (status != HttpStatus.SC_OK - || !responseString.contains(theExpectedResponse)) { - System.err.println("\tstatus: " + status); - System.err.println( - OAIPMHUtilitiesOnline.ERROR + ": response should contain '" + theExpectedResponse + "'"); - System.err.println(responseString); - assertTrue(false); - } - - System.out.println("\tresponse: " + responseString); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @param theURL - * @param shouldContain - * @throws IOException - */ - private static void testRootURL(String theURL, String shouldContain) - throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#ROOTURL"); - - Response response = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, - theURL); - int status = response.getStatus(); - - String responseString = IOUtils - .readStringFromStream((InputStream) response.getEntity()); - - if (status != HttpStatus.SC_OK || !responseString.contains(shouldContain)) { - System.err.println("\tstatus: " + status); - System.err - .println( - OAIPMHUtilitiesOnline.ERROR + ": response should contain '" + shouldContain + "'"); - assertTrue(false); - } - - System.out.println("\tresponse: " + responseString); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - -} diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java index 7786a65d5c9c45f4d593cc51c467a36f69f0374d..a59f218b9a3e3143322b63a08661dd0502f06490 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java @@ -1,24 +1,12 @@ -package info.textgrid.middleware.test.online; +package info.textgrid.middleware.test.online.tg; import static org.junit.Assert.assertTrue; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; import java.util.Properties; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; import javax.ws.rs.core.Response; import org.apache.cxf.helpers.IOUtils; import org.apache.cxf.jaxrs.client.Client; -import org.apache.cxf.jaxrs.client.JAXRSClientFactory; -import org.apache.cxf.jaxrs.client.WebClient; -import org.apache.cxf.transport.http.HTTPConduit; -import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; import org.apache.http.HttpStatus; import org.junit.After; import org.junit.AfterClass; @@ -26,17 +14,17 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; -import info.textgrid.middleware.OAIPMHProducer; +import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline; /** * <p> - * Some online tests for the TextGrid OAIMPH service. + * Some basic online tests for the TextGrid OAIMPH service. * </p> * * @author Stefan E. Funk, SUB Göttingen */ @Ignore -public class TestTGOAIPMHOnline { +public class TestTGBasicsOnline { // ** // FINALS @@ -53,30 +41,10 @@ public class TestTGOAIPMHOnline { // Some JAXRS things. private static String oaipmhEndpoint; - private static OAIPMHProducer JAXRSClient; static Client oaipmhWebClient; // Properties private static String expectedListSets; - private static String checkGetRecordDC; - private static String expectedGetRecordDC; - private static String checkGetRecordIDIOM; - private static String checkGetRecordIDIOM_Images; - private static String expectedGetRecordIDIOM_Images; - private static String expectedGetRecordIDIOM; - private static String checkGetRecordDATACITE; - private static String expectedGetRecordDATACITE; - private static String checkListRecordsDC; - private static String checkListRecordsDCFrom; - private static String checkListRecordsDCUntil; - private static String checkListRecordsIDIOMFrom; - private static String checkListRecordsIDIOMUntil; - private static String checkListRecordsDATACITEFrom; - private static String checkListRecordsDATACITEUntil; - private static String checkListIdentifiersSet; - private static int checkListIdentifiersPagesToTestIDIOM; - private static int checkListIdentifiersRecordsPerPageIDIOM; - private static List<String> checkGetRecordIDList = new ArrayList<String>(); // ** // PREPARATIONS @@ -88,51 +56,19 @@ public class TestTGOAIPMHOnline { @BeforeClass public static void setUpBeforeClass() throws Exception { - // Load properties file. - Properties p = new Properties(); - p.load(new FileInputStream(OAIPMHUtilitiesOnline.getResource(PROPERTIES_FILE))); + // Get properties. + Properties p = OAIPMHUtilitiesOnline.getPropertiesFromFile(PROPERTIES_FILE); - System.out.println("Properties file: " + PROPERTIES_FILE); - p.list(System.out); - - // Get other needed properties. + // Set properties. oaipmhEndpoint = p.getProperty("oaipmhEndpoint"); + expectedListSets = p.getProperty("expectedListSets"); - checkGetRecordDC = p.getProperty("checkGetRecordDC"); - expectedGetRecordDC = p.getProperty("expectedGetRecordDC"); - checkGetRecordIDIOM = p.getProperty("checkGetRecordIDIOM"); - checkGetRecordIDIOM_Images = p.getProperty("checkGetRecordIDIOM_Images"); - expectedGetRecordIDIOM_Images = p.getProperty("expectedGetRecordIDIOM_Images"); - expectedGetRecordIDIOM = p.getProperty("expectedGetRecordIDIOM"); - checkGetRecordDATACITE = p.getProperty("checkGetRecordDATACITE"); - expectedGetRecordDATACITE = p.getProperty("expectedGetRecordDATACITE"); - checkListRecordsDC = p.getProperty("checkListRecordsDC"); - checkListRecordsDCFrom = p.getProperty("checkListRecordsDCFrom"); - checkListRecordsDCUntil = p.getProperty("checkListRecordsDCUntil"); - checkListRecordsIDIOMFrom = p.getProperty("checkListRecordsIDIOMFrom"); - checkListRecordsIDIOMUntil = p.getProperty("checkListRecordsIDIOMUntil"); - checkListRecordsDATACITEFrom = p.getProperty("checkListRecordsDATACITEFrom"); - checkListRecordsDATACITEUntil = p.getProperty("checkListRecordsDATACITEUntil"); - checkListIdentifiersSet = p.getProperty("checkListIdentifiersSet"); - checkListIdentifiersPagesToTestIDIOM = - Integer.parseInt(p.getProperty("checkListIdentifiersPagesToTestIDIOM")); - checkListIdentifiersRecordsPerPageIDIOM = - Integer.parseInt(p.getProperty("checkListIdentifiersRecordsPerPageIDIOM")); - checkGetRecordIDList = - OAIPMHUtilitiesOnline.getListFromProperties((String) p.get("checkGetRecordIDList")); // Get OAI-PMH REST endpoint and HTTP client. System.out.println("Getting OAI-PMH HTTP client --> " + oaipmhEndpoint + " <--"); - // Get proxy first, set policy. - JAXRSClient = JAXRSClientFactory.create(oaipmhEndpoint, OAIPMHProducer.class); - HTTPConduit conduit = WebClient.getConfig(JAXRSClient).getHttpConduit(); - HTTPClientPolicy policy = new HTTPClientPolicy(); - policy.setReceiveTimeout(OAIPMHUtilitiesOnline.OAIPMH_CLIENT_TIMEOUT); - conduit.setClient(policy); - - // Create Web Client from Web Proxy. - oaipmhWebClient = WebClient.client(JAXRSClient); + // Get web client from endpoint. + oaipmhWebClient = OAIPMHUtilitiesOnline.getOAIPMHWEebClient(oaipmhEndpoint); } /** @@ -173,16 +109,17 @@ public class TestTGOAIPMHOnline { System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetVersion()"); - String versionString = JAXRSClient.getVersion(); + Response httpResponse = OAIPMHUtilitiesOnline.getVersionHttpResponse(oaipmhWebClient); + int status = httpResponse.getStatus(); + + String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - if (!versionString.startsWith(shouldStartWith)) { - System.err.println( - OAIPMHUtilitiesOnline.ERROR + ": response should start with '" + shouldStartWith - + "'"); - assertTrue(false); + if (status != HttpStatus.SC_OK || !response.startsWith(shouldStartWith)) { + String message = "response should start with '" + shouldStartWith + "'"; + assertTrue(message, false); } - System.out.println("\tresponse: " + versionString); + System.out.println("\tresponse: " + response); System.out.println(OAIPMHUtilitiesOnline.OK); } @@ -194,21 +131,17 @@ public class TestTGOAIPMHOnline { System.out.println(OAIPMHUtilitiesOnline.TESTING + "testRootUrl()"); - // Still hard coded in OAIPMH service! + // TODO Still hard coded in OAIPMH service! String shouldContain = "textgridrep.org"; - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, "oai", - OAIPMHUtilitiesOnline.NO_THREAD_NAME); + Response httpResponse = OAIPMHUtilitiesOnline.getOAIHttpResponse(oaipmhWebClient, "/"); int status = httpResponse.getStatus(); String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); if (status != HttpStatus.SC_OK || !response.contains(shouldContain)) { - System.err.println("\tstatus: " + status); - System.err - .println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" + shouldContain - + "'"); - assertTrue(false); + String message = "[" + status + "] response should contain '" + shouldContain + "'"; + assertTrue(message, false); } System.out.println("\tresponse: " + response); @@ -223,22 +156,18 @@ public class TestTGOAIPMHOnline { System.out.println(OAIPMHUtilitiesOnline.TESTING + "testIdentify()"); - // Still hard coded in OAIPMH service! + // TODO Still hard coded in OAIPMH service! String shouldContain = "textgridrep.org"; - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, - "verb=" + OAIPMHUtilitiesOnline.VERB_IDENTIFY, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); + Response httpResponse = OAIPMHUtilitiesOnline.getOAIHttpResponse(oaipmhWebClient, + "verb=" + OAIPMHUtilitiesOnline.VERB_IDENTIFY); int status = httpResponse.getStatus(); String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); if (status != HttpStatus.SC_OK || !response.contains(shouldContain)) { - System.err.println("\tstatus: " + status); - System.err - .println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" + shouldContain - + "'"); - assertTrue(false); + String message = "[" + status + "] response should contain '" + shouldContain + "'"; + assertTrue(message, false); } System.out.println("\tresponse: " + response); @@ -257,20 +186,17 @@ public class TestTGOAIPMHOnline { String shouldContainIDIOM = OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX; String shouldContainDATACITE = OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX; - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, - "verb=" + OAIPMHUtilitiesOnline.VERB_LIST_METADATA_FORMATS, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); + Response httpResponse = OAIPMHUtilitiesOnline.getOAIHttpResponse(oaipmhWebClient, + "verb=" + OAIPMHUtilitiesOnline.VERB_LIST_METADATA_FORMATS); + int status = httpResponse.getStatus(); String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); if (status != HttpStatus.SC_OK || !response.contains(shouldContainDC) || !response.contains(shouldContainIDIOM) || !response.contains(shouldContainDATACITE)) { - System.err.println("\tstatus: " + status); - System.err - .println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" + shouldContainDC - + "' and '" + shouldContainIDIOM + "' and '" + shouldContainDATACITE + "'"); - assertTrue(false); + String message = "[" + status + "] response should contain '" + shouldContainDC + "' and '" + + shouldContainIDIOM + "' and '" + shouldContainDATACITE + "'"; + assertTrue(message, false); } System.out.println("\tresponse: " + response); @@ -285,1338 +211,19 @@ public class TestTGOAIPMHOnline { System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListSets()"); - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, - "verb=" + OAIPMHUtilitiesOnline.VERB_LIST_SETS, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); + Response httpResponse = OAIPMHUtilitiesOnline.getOAIHttpResponse(oaipmhWebClient, + "verb=" + OAIPMHUtilitiesOnline.VERB_LIST_SETS); int status = httpResponse.getStatus(); String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); if (status != HttpStatus.SC_OK || !response.contains(expectedListSets)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedListSets + "'"); - System.err.println(response); - assertTrue(false); - } - - System.out.println("\tresponse: " + response); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testGetRecordOAIDC() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordOAIDC()"); - - String path = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" - + checkGetRecordDC + "&metadataPrefix=" - + OAIPMHUtilitiesOnline.OAI_DC_PREFIX; - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); - - String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - if (status != HttpStatus.SC_OK - || !response.contains(expectedGetRecordDC)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordDC + "'"); - System.err.println(response); - assertTrue(false); - } - - System.out.println("\tresponse: " + response); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testGetRecordOAIDCNoPrefix() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordOAIDCNoPrefix()"); - - String path = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" - + checkGetRecordDC + "&metadataPrefix=" - + OAIPMHUtilitiesOnline.OAI_DC_PREFIX; - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); - - String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - if (status != HttpStatus.SC_OK - || !response.contains(expectedGetRecordDC)) { - System.err.println("\tstatus: " + status); - System.err.println( - OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + checkGetRecordDC + "'"); - System.err.println(response); - assertTrue(false); - } - - System.out.println("\tresponse: " + response); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testGetRecordIDIOMMETS() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordIDIOMMETS()"); - - String path = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" - + checkGetRecordIDIOM + "&metadataPrefix=" - + OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX; - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); - - String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - if (status != HttpStatus.SC_OK - || !response.contains(expectedGetRecordIDIOM)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordIDIOM + "'"); - System.err.println(response); - assertTrue(false); - } - - System.out.println("\tresponse: " + response); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testGetRecordIDIOMMETS_Image() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordIDIOMMETS_Image()"); - - String path = - "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" - + checkGetRecordIDIOM_Images - + "&metadataPrefix=" + OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX; - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); - - String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - if (status != HttpStatus.SC_OK - || !response.contains(expectedGetRecordIDIOM_Images)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordIDIOM_Images + "'"); - System.err.println(response); - assertTrue(false); - } - - System.out.println("\tresponse: " + response); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testGetRecordIDIOMMETSNoPrefix() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordIDIOMMETSNoPrefix()"); - - String path = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" - + checkGetRecordIDIOM + "&metadataPrefix=" - + OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX; - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); - - String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - if (status != HttpStatus.SC_OK - || !response.contains(expectedGetRecordIDIOM)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordIDIOM + "'"); - System.err.println(response); - assertTrue(false); - } - - System.out.println("\tresponse: " + response); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testGetRecordDATACITE() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordDATACITE()"); - - String path = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" - + checkGetRecordDATACITE + "&metadataPrefix=" - + OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX; - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); - - String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - if (status != HttpStatus.SC_OK - || !response.contains(expectedGetRecordDATACITE)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordDATACITE + "'"); - System.err.println(response); - assertTrue(false); - } - - System.out.println("\tresponse: " + response); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testGetRecordDATACITENoPrefix() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordDATACITENoPrefix()"); - - String path = - "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" - + checkGetRecordDATACITE - + "&metadataPrefix=" + OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX; - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); - String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - if (status != HttpStatus.SC_OK - || !response.contains(expectedGetRecordDATACITE)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordDATACITE + "'"); - System.err.println(response); - assertTrue(false); + String message = "[" + status + "] response should contain '" + expectedListSets + "'"; + assertTrue(message, false); } System.out.println("\tresponse: " + response); System.out.println(OAIPMHUtilitiesOnline.OK); } - /** - * @throws IOException - */ - @Test - public void testListRecordsOAIDCMorePages() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsOAIDCMorePages()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, checkListRecordsDC, - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 20, 100, OAIPMHUtilitiesOnline.NO_THREAD_NAME, - OAIPMHUtilitiesOnline.NO_FROM, OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testListRecordsOAIDCMorePagesFromUntil() throws IOException { - - System.out - .println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsOAIDCMorePagesFromUntil()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, checkListRecordsDC, - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 0, 100, OAIPMHUtilitiesOnline.NO_THREAD_NAME, - checkListRecordsDCFrom, checkListRecordsDCUntil, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test(expected = IOException.class) - public void testListRecordsIDIOMMETSSomePagesAndMetadataFormatWithRestok() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING - + "testListRecordsIDIOMMETSSomePagesAndMetadataFormatWithRestok()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, - OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 3, 30, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, - OAIPMHUtilitiesOnline.NO_FROM, OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - // @Ignore - public void testListRecordsIDIOMMETSAllPages() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsIDIOMMETSAllPages()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, - OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 0, 30, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, - OAIPMHUtilitiesOnline.NO_FROM, OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * NOTE The amount of records will change due to changes on the data! Please check from and until - * values before! - * - * @throws IOException - */ - @Test - @Ignore - public void testListRecordsIDIOMMETSMorePagesFromUntil() throws IOException { - - System.out - .println( - OAIPMHUtilitiesOnline.TESTING + "testListRecordsIDIOMMETSMorePagesFromUntil()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, - OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 6, 30, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, - checkListRecordsIDIOMFrom, - checkListRecordsIDIOMUntil, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testListRecordsIDIOMMETSMorePages() throws IOException { - - System.out - .println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsIDIOMMETSMorePages()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, - OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 6, 30, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, - OAIPMHUtilitiesOnline.NO_FROM, OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testListRecordsDATACITEMorePages() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsDATACITEMorePages()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, - OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, 15, 100, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, - OAIPMHUtilitiesOnline.NO_FROM, OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - // @Ignore - public void testListRecordsDATACITEAllPages() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsDATACITEAllPages()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, - OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, 0, 100, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, - OAIPMHUtilitiesOnline.NO_FROM, OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testListRecordsDATACITEMorePagesFromUntil() throws IOException { - - System.out - .println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsDATACITEMorePagesFromUntil()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, - OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, 15, 100, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, - checkListRecordsDATACITEFrom, - checkListRecordsDATACITEUntil, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testListIdentifiersOAIDCMorePages() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListIdentifiersOAIDCMorePages()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - checkListIdentifiersSet, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 30, - 100, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, OAIPMHUtilitiesOnline.NO_FROM, - OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test(expected = IOException.class) - public void testListIdentifiersOAIDCMorePagesAndMetadataFormatWithRestok() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING - + "testListIdentifiersOAIDCMorePagesAndMetadataFormatWithRestok()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - checkListIdentifiersSet, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 30, - 100, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, OAIPMHUtilitiesOnline.NO_FROM, - OAIPMHUtilitiesOnline.NO_UNTIL, OAIPMHUtilitiesOnline.METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - @Ignore - public void testListIdentifiersIDIOMMETSAllPages() throws IOException { - - System.out - .println(OAIPMHUtilitiesOnline.TESTING + "testListIdentifiersIDIOMMETSAllPages()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 0, 30, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, OAIPMHUtilitiesOnline.NO_FROM, - OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testListIdentifiersIDIOMMETSMorePages() throws IOException { - - System.out - .println(OAIPMHUtilitiesOnline.TESTING + "testListIdentifiersIDIOMMETSMorePages()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 6, 30, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, OAIPMHUtilitiesOnline.NO_FROM, - OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test(expected = IOException.class) - public void testListIdentifiersIDIOMMETSSomePagesAndMetadataFormatWithRestok() - throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING - + "testListIdentifiersIDIOMMETSSomePagesAndMetadataFormatWithRestok()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 3, 30, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, OAIPMHUtilitiesOnline.NO_FROM, - OAIPMHUtilitiesOnline.NO_UNTIL, OAIPMHUtilitiesOnline.METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testListIdentifiersDATACITEMorePages() throws IOException { - - System.out - .println(OAIPMHUtilitiesOnline.TESTING + "testListIdentifiersDATACITEMorePages()"); - - testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, 22, 100, - OAIPMHUtilitiesOnline.NO_THREAD_NAME, OAIPMHUtilitiesOnline.NO_FROM, - OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - * @throws ExecutionException - * @throws InterruptedException - */ - @Test - public void testListIdentifiersConcurrentlyIDIOMMETSMorePages() - throws IOException, InterruptedException, ExecutionException { - - System.out.println( - OAIPMHUtilitiesOnline.TESTING + "testListIdentifiersConcurrentlyIDIOMMETSMorePages()"); - - ExecutorService executor = Executors.newFixedThreadPool(3); - - Future<Boolean> f1 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 3, 30, - "C1")); - Future<Boolean> f2 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 5, 30, - "C2")); - Future<Boolean> f3 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 8, 30, - "C2")); - - executor.shutdown(); - - System.out.println(OAIPMHUtilitiesOnline.OK + ": [C1]=" + f1.get() + ", [C2]=" + f2.get() - + ", [C3]=" + f3.get()); - } - - /** - * @throws IOException - * @throws ExecutionException - * @throws InterruptedException - */ - @Test - public void testListRecordsConcurrentlyIDIOMMETSMorePages() - throws IOException, InterruptedException, ExecutionException { - - System.out - .println( - OAIPMHUtilitiesOnline.TESTING + "testListRecordsConcurrentlyIDIOMMETSMorePages()"); - - ExecutorService executor = Executors.newFixedThreadPool(3); - - Future<Boolean> f1 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 2, - 30, "D1")); - Future<Boolean> f2 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 3, - 30, "D2")); - Future<Boolean> f3 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 4, - 30, "D3")); - - executor.shutdown(); - - System.out.println(OAIPMHUtilitiesOnline.OK + ": [D1]=" + f1.get() + ", [D2]=" + f2.get() - + ", [D3]=" + f3.get()); - } - - /** - * @throws IOException - * @throws InterruptedException - * @throws ExecutionException - */ - @Test - public void testRestokConcurrentlyListIdentifiersDC() - throws InterruptedException, ExecutionException { - - System.out - .println(OAIPMHUtilitiesOnline.TESTING + "testRestokConcurrentlyListIdentifiersDC()"); - - ExecutorService executor = Executors.newFixedThreadPool(3); - - Future<Boolean> f1 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 36, 100, - "A1")); - Future<Boolean> f2 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 27, 100, - "A2")); - Future<Boolean> f3 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 19, 100, - "A3")); - - executor.shutdown(); - - System.out.println(OAIPMHUtilitiesOnline.OK + ": [A1]=" + f1.get() + ", [A2]=" + f2.get() - + ", [A3]=" + f3.get()); - } - - /** - * @throws IOException - * @throws InterruptedException - * @throws ExecutionException - */ - @Test - public void testRestokConcurrentlyListIdentifiersIDIOMMETS() - throws InterruptedException, ExecutionException { - - System.out - .println( - OAIPMHUtilitiesOnline.TESTING + "testRestokConcurrentlyListIdentifiersIDIOM()"); - - ExecutorService executor = Executors.newFixedThreadPool(3); - - Future<Boolean> f1 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 13, - 30, "A1")); - Future<Boolean> f2 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 35, - 30, "A2")); - Future<Boolean> f3 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 11, - 30, "A3")); - - executor.shutdown(); - - System.out.println(OAIPMHUtilitiesOnline.OK + ": [A1]=" + f1.get() + ", [A2]=" + f2.get() - + ", [A3]=" + f3.get()); - } - - /** - * @throws IOException - * @throws InterruptedException - * @throws ExecutionException - */ - @Test - public void testRestokConcurrentlyListIdentifiersDATACITE() - throws InterruptedException, ExecutionException { - - System.out - .println( - OAIPMHUtilitiesOnline.TESTING + "testRestokConcurrentlyListIdentifiersDATACITE()"); - - ExecutorService executor = Executors.newFixedThreadPool(3); - - Future<Boolean> f1 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, 13, - 100, "A1")); - Future<Boolean> f2 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, 20, - 100, "A2")); - Future<Boolean> f3 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, 8, 100, - "A3")); - - executor.shutdown(); - - System.out.println(OAIPMHUtilitiesOnline.OK + ": [A1]=" + f1.get() + ", [A2]=" + f2.get() - + ", [A3]=" + f3.get()); - } - - /** - * @throws InterruptedException - * @throws ExecutionException - */ - @Test - public void testRestokConcurrentlyListIdentifiersDCAndIDIOMMETS() - throws InterruptedException, ExecutionException { - - System.out.println( - OAIPMHUtilitiesOnline.TESTING - + "testRestokConcurrentlyListIdentifiersDCAndIDIOMMets()"); - - ExecutorService executor = Executors.newFixedThreadPool(3); - - Future<Boolean> f1 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 53, 100, - "DC1")); - Future<Boolean> f2 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 28, 100, - "DC2")); - Future<Boolean> f3 = executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, - checkListIdentifiersPagesToTestIDIOM, - checkListIdentifiersRecordsPerPageIDIOM, - "IDIOM")); - - executor.shutdown(); - - System.out.println(OAIPMHUtilitiesOnline.OK + ": [DC1]=" + f1.get() + ", [DC2]=" + f2.get() - + ", [IDIOM]=" + f3.get()); - } - - /** - * @throws InterruptedException - * @throws ExecutionException - */ - @Test - public void testRestokConcurrentlyListRecordsDC() - throws InterruptedException, ExecutionException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testRestokConcurrentlyListRecordsDC()"); - - ExecutorService executor = Executors.newFixedThreadPool(4); - - Future<Boolean> f1 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 44, 100, - "DC1")); - Future<Boolean> f2 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 33, 100, - "DC2")); - Future<Boolean> f3 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 66, 100, - "DC3")); - Future<Boolean> f4 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 28, 100, - "DC4")); - - executor.shutdown(); - - System.out.println( - OAIPMHUtilitiesOnline.OK + ": [DC1]=" + f1.get() + ", [DC2]=" + f2.get() + ", [DC3]=" - + f3.get() + ", [DC4]=" + f4.get()); - } - - /** - * @throws IOException - * @throws InterruptedException - * @throws ExecutionException - */ - @Test - public void testRestokConcurrentlyListRecords() throws InterruptedException, ExecutionException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testRestokConcurrentlyListRecords()"); - - ExecutorService executor = Executors.newFixedThreadPool(3); - - Future<Boolean> f1 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 6, 100, - "B1")); - Future<Boolean> f2 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 7, 100, - "B2")); - Future<Boolean> f3 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 8, 100, - "B3")); - Future<Boolean> f4 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 9, 100, - "B4")); - - executor.shutdown(); - - System.out.println( - OAIPMHUtilitiesOnline.OK + ": [B1]=" + f1.get() + ", [B2]=" + f2.get() + ", [B3]=" - + f3.get() - + ", [B4]=" + f4.get()); - } - - /** - * @throws InterruptedException - * @throws ExecutionException - */ - @Test - public void testListRecordsRestokConcurrentlyDCAndIDIOMMETS() - throws InterruptedException, ExecutionException { - - System.out - .println(OAIPMHUtilitiesOnline.TESTING - + "testListRecordsRestokConcurrentlyDCAndIDIOMMets()"); - - ExecutorService executor = Executors.newFixedThreadPool(3); - - Future<Boolean> f1 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 34, 100, - "DC1")); - Future<Boolean> f2 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 27, 100, - "DC2")); - Future<Boolean> f3 = - executor - .submit(new OaiPmhResumptionTokenTestThread(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, - checkListIdentifiersPagesToTestIDIOM, - checkListIdentifiersRecordsPerPageIDIOM, - "IDIOM")); - - executor.shutdown(); - - System.out.println(OAIPMHUtilitiesOnline.OK + ": [DC1]=" + f1.get() + ", [DC2]=" + f2.get() - + ", [IOIOM]=" + f3.get()); - } - - /** - * @throws IOException - * @throws InterruptedException - * @throws ExecutionException - */ - @Test - public void testConcurrentlyOAIDCGetRecord() throws InterruptedException, ExecutionException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testConcurrentlyOAIDCGetRecord()"); - - ExecutorService executor = Executors.newFixedThreadPool(18); - - Future<Boolean> f1 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(0), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f2 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(1), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f3 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(2), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f4 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(3), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f5 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(4), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f6 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(5), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f7 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(6), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f8 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(7), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f9 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(8), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f10 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(9), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f11 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(10), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f12 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(11), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f13 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(12), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f14 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(13), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f15 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(14), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f16 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(15), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f17 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(16), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - Future<Boolean> f18 = executor - .submit(new OaiPmhGetRecordTestThread(OAIPMHUtilitiesOnline.VERB_GET_RECORD, - checkGetRecordIDList.get(17), - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, - "GR[" + checkGetRecordIDList.get(0) + "]")); - - executor.shutdown(); - - System.out.println(OAIPMHUtilitiesOnline.OK + "[GR1]=" + f1.get() + ", [GR2]=" + f2.get() - + ", [GR3]=" + f3.get() + ", [GR4]=" + f4.get() + ", [GR5]=" + f5.get() + ", [GR6]=" - + f6.get() + ", [GR7]=" + f7.get() + ", [GR8]=" + f8.get() + ", [GR9]=" + f9.get() - + ", [GR10]=" + f10.get() + ", [GR11]=" + f11.get() + ", [GR12]=" + f12.get() - + ", [GR13]=" + f13.get() + ", [GR14]=" + f14.get() + ", [GR15]=" + f15.get() - + ", [GR16]=" + f16.get() + ", [GR17]=" + f17.get() + ", [GR18]=" + f18.get()); - } - - /** - * <p> - * Starts a new OAI-PMH thread. - * </p> - */ - - private class OaiPmhResumptionTokenTestThread implements Callable<Boolean> { - - protected String verb; - protected String set; - protected String metadataPrefix; - protected int numberOfPagesToTest; - protected int recordsExpectedPerRequest; - protected String threadName; - - /** - * @param theVerb - * @param theSet - * @param theMetadataPrefix - * @param numberOfPagesToTest - * @param recordsExpectedPerRequest - */ - public OaiPmhResumptionTokenTestThread(String theVerb, String theSet, String theMetadataPrefix, - int numberOfPagesToTest, int recordsExpectedPerRequest, String theThreadName) { - this.verb = theVerb; - this.set = theSet; - this.metadataPrefix = theMetadataPrefix; - this.numberOfPagesToTest = numberOfPagesToTest; - this.recordsExpectedPerRequest = recordsExpectedPerRequest; - this.threadName = theThreadName; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Thread#run() - */ - @Override - public Boolean call() throws IOException { - testList(oaipmhWebClient, this.verb, this.set, this.metadataPrefix, - this.numberOfPagesToTest, this.recordsExpectedPerRequest, this.threadName, - OAIPMHUtilitiesOnline.NO_FROM, OAIPMHUtilitiesOnline.NO_UNTIL, - OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - return true; - } - } - - /** - * <p> - * Starts a new OAI-PMH thread. - * </p> - */ - - private class OaiPmhGetRecordTestThread implements Callable<Boolean> { - - protected String verb; - protected String identifier; - protected String metadataPrefix; - protected String threadName; - - /** - * @param theVerb - * @param theIdentifier - * @param theMetadataPrefix - * @param theThreadName - */ - public OaiPmhGetRecordTestThread(String theVerb, String theIdentifier, String theMetadataPrefix, - String theThreadName) { - this.verb = theVerb; - this.identifier = theIdentifier; - this.metadataPrefix = theMetadataPrefix; - this.threadName = theThreadName; - } - - /* - * (non-Javadoc) - * - * @see java.util.concurrent.Callable#call() - */ - @Override - public Boolean call() throws IOException { - - String url = "verb=" + this.verb + "&identifier=" + this.identifier + "&metadataPrefix=" - + this.metadataPrefix; - OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, url, this.threadName); - - return true; - } - } - - // ** - // PRIVATE METHODS - // ** - - /** - * TODO Generalise in OaiPmhTestUtilities! - * - * @param theClient - * @param theVerb - * @param theSet - * @param theMetadataPrefix - * @param maxNumberOfPagesToTest - * @param recordsExpectedPerRequest - * @param theThreadName - * @param from - * @param until - * @param resumptionTokenANDMetadataPrefix - * @throws IOException - */ - protected static void testList(Client theClient, final String theVerb, final String theSet, - final String theMetadataPrefix, final int maxNumberOfPagesToTest, - final int recordsExpectedPerRequest, final String theThreadName, final String from, - final String until, final boolean resumptionTokenANDMetadataPrefix) throws IOException { - - String threadName = tn(theThreadName); - - long startTime = System.currentTimeMillis(); - - String testOccurance = "header"; - if (theVerb.equals(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS)) { - testOccurance = "record"; - } - - String path = "verb=" + theVerb + "&metadataPrefix=" + theMetadataPrefix; - - if (theSet != null) { - path += "&set=" + theSet; - } - - if (from != null && until != null) { - path += "&from=" + from + "&until=" + until; - } - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(theClient, path, threadName); - int status = httpResponse.getStatus(); - - int loopCount = 1; - long timeRunning = System.currentTimeMillis() - startTime; - System.out.println("\t" + threadName + "time: " - + OAIPMHUtilitiesOnline.getDurationInSecs(timeRunning) + " (loop " + loopCount - + (maxNumberOfPagesToTest != 0 ? "/" + maxNumberOfPagesToTest : "") + ")"); - - String responseString = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - // Test resumption token tags. - String restok = examineResumptionTokenTag(responseString, testOccurance, - OAIPMHUtilitiesOnline.NO_TOKEN, recordsExpectedPerRequest, loopCount, threadName); - - // Test general metadata content (if verb is listRecords!), must go conform with the metadata - // prefix setting. - if (theVerb.equals(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS)) { - examineContent(responseString, theMetadataPrefix); - } - - while (status == HttpStatus.SC_OK && !restok.equals(OAIPMHUtilitiesOnline.NO_TOKEN)) { - loopCount += 1; - synchronized (threadName) { - if (maxNumberOfPagesToTest > 0 && loopCount > maxNumberOfPagesToTest) { - System.out - .println("\t" + threadName + "TESTING ONLY " + maxNumberOfPagesToTest + " pages!"); - break; - } - path = "verb=" + theVerb + "&resumptionToken=" + restok; - if (resumptionTokenANDMetadataPrefix) { - path += "&metadataPrefix=" + theMetadataPrefix; - } - httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(theClient, path, threadName); - timeRunning = System.currentTimeMillis() - startTime; - System.out.println("\t" + threadName + "time: " - + OAIPMHUtilitiesOnline.getDurationInSecs(timeRunning) + " (loop " + loopCount - + (maxNumberOfPagesToTest != 0 ? "/" + maxNumberOfPagesToTest : "") + ")"); - - // Test resumption token tags. - responseString = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - restok = examineResumptionTokenTag(responseString, testOccurance, restok, - recordsExpectedPerRequest, loopCount, threadName); - - // Test general metadata content (if verb is listRecords!), must go conform with the - // metadata // prefix setting. - if (theVerb.equals(OAIPMHUtilitiesOnline.VERB_LIST_RECORDS)) { - examineContent(responseString, theMetadataPrefix); - } - } - } - - // Only check for max loops, if we do have less loops and no resumption token, it will be fine, - // too! - if (!restok.equals(OAIPMHUtilitiesOnline.NO_TOKEN) && loopCount < maxNumberOfPagesToTest) { - System.out.println(threadName + OAIPMHUtilitiesOnline.ERROR + ": Must have done " - + maxNumberOfPagesToTest + " loops, but did only " + loopCount); - assertTrue(false); - } - - // Check for single loop, we need MORE! - if (loopCount == 1) { - System.out - .println( - threadName + OAIPMHUtilitiesOnline.ERROR + ": Must have more than one loop!"); - assertTrue(false); - } - - System.out.println("\t" + threadName + OAIPMHUtilitiesOnline.OK); - } - - /** - * TODO Generalise in OaiPmhTestUtilities! - * - * @param theResponse - * @param recordOrHeader - * @param oldtok - * @param recordsExpectedPerRequest - * @param loopCount - * @param theThreadName - * @return Resumption token string, if existing, -1 if either no <resumptionToken> tag is - * existing, tag is existing and has no token value. - * @throws IOException - */ - public static String examineResumptionTokenTag(final String theResponseString, - final String recordOrHeader, final String oldtok, final int recordsExpectedPerRequest, - final int loopCount, final String theThreadName) throws IOException { - - // Test for OAIPMH errors. - if (theResponseString.contains("<error code=\"badArgument\">")) { - String message = - theThreadName + OAIPMHUtilitiesOnline.ERROR + " IN OAIPMH RESPONSE: " - + theResponseString; - System.out.println(message); - throw new IOException(message); - } - - // Count response objects at first. - int recordCount = 0; - int i = theResponseString.indexOf("<" + recordOrHeader + ">", 0); - while (i != -1) { - recordCount++; - i++; - i = theResponseString.indexOf("<" + recordOrHeader + ">", i); - } - - System.out.println("\t" + theThreadName + recordOrHeader + "s: " + recordCount); - - // Check if token tag is existing. - int tokStart = theResponseString.indexOf("<resumptionToken"); - int tokEnd = theResponseString.indexOf("</resumptionToken"); - - if (tokStart == -1 && tokEnd == -1) { - System.out.println("\t" + theThreadName + "token: no token"); - - return OAIPMHUtilitiesOnline.NO_TOKEN; - } - - String restokTmp = theResponseString.substring(tokStart, tokEnd); - // Get token tag. - String toktag = restokTmp.substring(0, restokTmp.indexOf(">") + 1).trim(); - System.out.println("\t" + theThreadName + "tokentag: " + toktag); - - // Get token. - String restok = restokTmp.substring(restokTmp.indexOf(">") + 1).trim(); - System.out.println("\t" + theThreadName + "token: " + restok); - - // Check if old and new token are equal or not. - boolean tokchanged = !oldtok.equals(restok); - System.out.println("\t" + theThreadName + "tokchngd: " + tokchanged); - - // Get completeListSize and cursor. - String sizeStr = toktag.substring(toktag.indexOf("completeListSize=\"") + 18); - int size = Integer.parseInt(sizeStr.substring(0, sizeStr.indexOf("\""))); - String cursorStr = toktag.substring(toktag.indexOf("cursor=\"") + 8); - int cursor = Integer.parseInt(cursorStr.substring(0, cursorStr.indexOf("\""))); - System.out.println("\t" + theThreadName + "size: " + size + " / " + cursor); - - // If token is provided, test cursor and element count! - if (!restok.isEmpty()) { - synchronized (TestTGOAIPMHOnline.class) { - // Check <record> or <header> count, must be recordsExpectedPerRequest! - if (recordCount != recordsExpectedPerRequest) { - String message = - OAIPMHUtilitiesOnline.ERROR + ": " + recordOrHeader + " count mismatch, must be " - + recordsExpectedPerRequest + " if token is provided, but is " + recordCount; - assertTrue(message, false); - } - if (size <= recordsExpectedPerRequest) { - String message = - OAIPMHUtilitiesOnline.ERROR + ": completeListSize count mismatch, must be > " - + recordsExpectedPerRequest + " if token is provided, but is " + size; - assertTrue(message, false); - } - if (cursor != recordsExpectedPerRequest * loopCount) { - String message = OAIPMHUtilitiesOnline.ERROR + ": cursor must be " - + (loopCount * recordsExpectedPerRequest) + " in loop " + loopCount + ", but is " - + cursor; - assertTrue(message, false); - } - } - } - - // If no token is provided, stop querying. - else { - // Check <record> count, must be completeListSize % recordsExpectedPerRequest. - if (recordCount != size % recordsExpectedPerRequest) { - System.err.println(theThreadName + OAIPMHUtilitiesOnline.ERROR + ": " + recordOrHeader - + " count mismatch, should be " + size % recordsExpectedPerRequest + ", but is " - + recordCount); - assertTrue(false); - } - - // No resumption token available in response. - return OAIPMHUtilitiesOnline.NO_TOKEN; - } - - return restok; - } - - /** - * @param theThreadName - * @return - */ - private static String tn(String theThreadName) { - - String result = theThreadName; - - if (theThreadName != null && !theThreadName.equals("") && !theThreadName.endsWith(" ")) { - result = "[" + theThreadName + "] "; - } - - return result; - } - - /** - * @param theResponseString - * @param theMetadataFormat - */ - private static void examineContent(String theResponseString, String theMetadataFormat) { - - // Check for correct metadata content according to metadata prefix. - if (theMetadataFormat.equals(OAIPMHUtilitiesOnline.OAI_DC_PREFIX) - && !theResponseString - .contains("metadataPrefix=\"" + OAIPMHUtilitiesOnline.OAI_DC_PREFIX + "\"") - && !theResponseString.contains(OAIPMHUtilitiesOnline.EXPECTED_OAIDC_FORMAT_CONTENT)) { - System.out - .println( - OAIPMHUtilitiesOnline.OAI_DC_PREFIX + " needs to deliver content with schema: " - + OAIPMHUtilitiesOnline.EXPECTED_OAIDC_FORMAT_CONTENT + "!"); - - System.out.println("ERROR:\n" + theResponseString); - - assertTrue(false); - } else if (theMetadataFormat.equals(OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX) - && !theResponseString.contains( - "metadataPrefix=\"" + OAIPMHUtilitiesOnline.EXPECTED_IDIOMMETS_FORMAT_CONTENT - + "\"") - && !theResponseString - .contains(OAIPMHUtilitiesOnline.EXPECTED_IDIOMMETS_FORMAT_CONTENT)) { - System.out.println( - OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX + " needs to deliver content with schema: " - + OAIPMHUtilitiesOnline.EXPECTED_IDIOMMETS_FORMAT_CONTENT + "!"); - - System.out.println("ERROR:\n" + theResponseString); - - assertTrue(false); - } else if (theMetadataFormat.equals(OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX) - && !theResponseString - .contains("metadataPrefix=\"" + OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX + "\"") - && !theResponseString - .contains(OAIPMHUtilitiesOnline.EXPECTED_DATACITE_FORMAT_CONTENT)) { - System.out.println( - OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX + " needs to deliver content with schema: " - + OAIPMHUtilitiesOnline.EXPECTED_DATACITE_FORMAT_CONTENT + "!"); - - System.out.println("ERROR:\n" + theResponseString); - - assertTrue(false); - } else { - System.out.println(theResponseString); - } - } - } diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java index e7f3cfedb2fbe430b483ead4da07be65421fef4d..08bbad7df9b35ca783b6c45c2af6b975442a3623 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java @@ -1,4 +1,4 @@ -package info.textgrid.middleware.test.online; +package info.textgrid.middleware.test.online.tg; import static org.junit.Assert.assertTrue; import java.io.IOException; @@ -21,6 +21,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; +import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline; /** * <p> @@ -28,11 +29,11 @@ import org.junit.Test; * </p> * * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-12 + * @version 2022-09-19 * @since 2022-09-08 */ -@Ignore -public class TestGetRecordOnline { +// @Ignore +public class TestTGGetRecordOnline { // ** // FINALS @@ -43,8 +44,6 @@ public class TestGetRecordOnline { // IDIOM tests will fail! protected static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties"; - private static final String VERB = OAIPMHUtilitiesOnline.VERB_GET_RECORD; - // ** // STATICS // ** @@ -56,19 +55,15 @@ public class TestGetRecordOnline { // Properties private static String checkGetRecordDC; private static String expectedGetRecordDC; - private static String expectedGetRecordDCNoPrefix; private static String checkGetRecordDATACITE; private static String expectedGetRecordDATACITE; - private static String expectedGetRecordDATACITENoPrefix; private static String checkGetRecordIDIOM; private static String expectedGetRecordIDIOM; - private static String expectedGetRecordIDIOMNoPrefix; private static String checkGetRecordIDIOMImage; private static String expectedGetRecordIDIOMImage; - private static String expectedGetRecordIDIOMImageNoPrefix; private static List<String> checkGetRecordIDList = new ArrayList<String>(); @@ -90,19 +85,15 @@ public class TestGetRecordOnline { checkGetRecordDC = p.getProperty("checkGetRecordDC"); expectedGetRecordDC = p.getProperty("expectedGetRecordDC"); - expectedGetRecordDCNoPrefix = p.getProperty("expectedGetRecordDCNoPrefix"); checkGetRecordDATACITE = p.getProperty("checkGetRecordDATACITE"); expectedGetRecordDATACITE = p.getProperty("expectedGetRecordDATACITE"); - expectedGetRecordDATACITENoPrefix = p.getProperty("expectedGetRecordDATACITENoPrefix"); checkGetRecordIDIOM = p.getProperty("checkGetRecordIDIOM"); expectedGetRecordIDIOM = p.getProperty("expectedGetRecordIDIOM"); - expectedGetRecordIDIOMNoPrefix = p.getProperty("expectedGetRecordIDIOMNoPrefix"); checkGetRecordIDIOMImage = p.getProperty("checkGetRecordIDIOMImage"); expectedGetRecordIDIOMImage = p.getProperty("expectedGetRecordIDIOMImage"); - expectedGetRecordIDIOMImageNoPrefix = p.getProperty("expectedGetRecordIDIOMImageNoPrefix"); checkGetRecordIDList = OAIPMHUtilitiesOnline.getListFromProperties((String) p.get("checkGetRecordIDList")); @@ -147,51 +138,17 @@ public class TestGetRecordOnline { System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordOAIDC()"); - String path = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" + String query = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" + checkGetRecordDC + "&metadataPrefix=" + OAIPMHUtilitiesOnline.OAI_DC_PREFIX; - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); + Response httpResponse = OAIPMHUtilitiesOnline.getOAIHttpResponse(oaipmhWebClient, query); int status = httpResponse.getStatus(); String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); if (status != HttpStatus.SC_OK || !response.contains(expectedGetRecordDC)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordDC + "'"); - System.err.println(response); - assertTrue(false); - } - - System.out.println("\tresponse: " + response); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testGetRecordOAIDCNoPrefix() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordOAIDCNoPrefix()"); - - String path = - "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" + checkGetRecordDC; - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); - - String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - if (status != HttpStatus.SC_OK || !response.contains(expectedGetRecordDCNoPrefix)) { - System.err.println("\tstatus: " + status); - System.err.println( - OAIPMHUtilitiesOnline.ERROR + ": response should contain '" + expectedGetRecordDCNoPrefix - + "'"); - System.err.println(response); - assertTrue(false); + String message = "[" + status + "] response should contain '" + expectedGetRecordDC + "'"; + assertTrue(message, false); } System.out.println("\tresponse: " + response); @@ -202,54 +159,22 @@ public class TestGetRecordOnline { * @throws IOException */ @Test - public void testGetRecordIDIOM() throws IOException { + public void testGetRecordIDIOMMETS() throws IOException { - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordIDIOM()"); + System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordIDIOMMETS()"); - String path = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" + String query = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" + checkGetRecordIDIOM + "&metadataPrefix=" + OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX; - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); + Response httpResponse = OAIPMHUtilitiesOnline.getOAIHttpResponse(oaipmhWebClient, + query); int status = httpResponse.getStatus(); String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); if (status != HttpStatus.SC_OK || !response.contains(expectedGetRecordIDIOM)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordIDIOM + "'"); - System.err.println(response); - assertTrue(false); - } - - System.out.println("\tresponse: " + response); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testGetRecordIDIOMNoPrefix() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordIDIOMNoPrefix()"); - - String path = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" - + checkGetRecordIDIOM; - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); - - String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - if (status != HttpStatus.SC_OK || !response.contains(expectedGetRecordIDIOMNoPrefix)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordIDIOMNoPrefix + "'"); - System.err.println(response); - assertTrue(false); + String message = "[" + status + "] response should contain '" + expectedGetRecordIDIOM + "'"; + assertTrue(message, false); } System.out.println("\tresponse: " + response); @@ -260,55 +185,24 @@ public class TestGetRecordOnline { * @throws IOException */ @Test - public void testGetRecordIDIOMImage() throws IOException { + public void testGetRecordIDIOMMETSImage() throws IOException { - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordIDIOMImage()"); + System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordIDIOMMETS_Image()"); - String path = + String query = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" + checkGetRecordIDIOMImage + "&metadataPrefix=" + OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX; - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); + Response httpResponse = OAIPMHUtilitiesOnline.getOAIHttpResponse(oaipmhWebClient, + query); int status = httpResponse.getStatus(); String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); if (status != HttpStatus.SC_OK || !response.contains(expectedGetRecordIDIOMImage)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordIDIOMImage + "'"); - System.err.println(response); - assertTrue(false); - } - - System.out.println("\tresponse: " + response); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testGetRecordIDIOMImageNoPrefix() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordIDIOMImageNoPrefix()"); - - String path = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" - + checkGetRecordIDIOMImage; - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); - - String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - if (status != HttpStatus.SC_OK || !response.contains(expectedGetRecordIDIOMImageNoPrefix)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordIDIOMImageNoPrefix + "'"); - System.err.println(response); - assertTrue(false); + String message = + "[" + status + "] response should contain '" + expectedGetRecordIDIOMImage + "'"; + assertTrue(message, false); } System.out.println("\tresponse: " + response); @@ -323,49 +217,19 @@ public class TestGetRecordOnline { System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordDATACITE()"); - String path = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" + String query = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" + checkGetRecordDATACITE + "&metadataPrefix=" + OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX; - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); + Response httpResponse = OAIPMHUtilitiesOnline.getOAIHttpResponse(oaipmhWebClient, + query); int status = httpResponse.getStatus(); String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); if (status != HttpStatus.SC_OK || !response.contains(expectedGetRecordDATACITE)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordDATACITE + "'"); - System.err.println(response); - assertTrue(false); - } - - System.out.println("\tresponse: " + response); - System.out.println(OAIPMHUtilitiesOnline.OK); - } - - /** - * @throws IOException - */ - @Test - public void testGetRecordDATACITENoPrefix() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testGetRecordDATACITENoPrefix()"); - - String path = "verb=" + OAIPMHUtilitiesOnline.VERB_GET_RECORD + "&identifier=" - + checkGetRecordDATACITE; - - Response httpResponse = OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, path, - OAIPMHUtilitiesOnline.NO_THREAD_NAME); - int status = httpResponse.getStatus(); - String response = IOUtils.readStringFromStream((InputStream) httpResponse.getEntity()); - - if (status != HttpStatus.SC_OK || !response.contains(expectedGetRecordDATACITENoPrefix)) { - System.err.println("\tstatus: " + status); - System.err.println(OAIPMHUtilitiesOnline.ERROR + ": response should contain '" - + expectedGetRecordDATACITENoPrefix + "'"); - System.err.println(response); - assertTrue(false); + String message = + "[" + status + "] response should contain '" + expectedGetRecordDATACITE + "'"; + assertTrue(message, false); } System.out.println("\tresponse: " + response); @@ -511,9 +375,9 @@ public class TestGetRecordOnline { @Override public Boolean call() throws IOException { - String url = "verb=" + this.verb + "&identifier=" + this.identifier + "&metadataPrefix=" + String query = "verb=" + this.verb + "&identifier=" + this.identifier + "&metadataPrefix=" + this.metadataPrefix; - OAIPMHUtilitiesOnline.getHttpResponse(oaipmhWebClient, url, this.threadName); + OAIPMHUtilitiesOnline.getOAIHttpResponse(oaipmhWebClient, this.threadName, query); return true; } diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java index cae8392182e228349adcbf9bc0efaecc94249483..c60b982a1237c37a473515d85d2f1637ec11f755 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java @@ -1,4 +1,4 @@ -package info.textgrid.middleware.test.online; +package info.textgrid.middleware.test.online.tg; import java.io.IOException; import java.util.Properties; @@ -13,6 +13,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; +import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline; /** * <p> @@ -20,11 +21,11 @@ import org.junit.Test; * </p> * * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-13 + * @version 2022-09-19 * @since 2022-09-12 */ @Ignore -public class TestListIdentifiersOnline { +public class TestTGListIdentifiersOnline { // ** // FINALS @@ -249,21 +250,21 @@ public class TestListIdentifiersOnline { ExecutorService executor = Executors.newFixedThreadPool(3); Future<Boolean> f1 = executor - .submit(new OAIPMHResumptionTokenThread(oaipmhWebClient, + .submit(new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 3, 30, "C1")); Future<Boolean> f2 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 5, 30, "C2")); Future<Boolean> f3 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, @@ -291,21 +292,21 @@ public class TestListIdentifiersOnline { ExecutorService executor = Executors.newFixedThreadPool(3); Future<Boolean> f1 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 36, 100, "A1")); Future<Boolean> f2 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 27, 100, "A2")); Future<Boolean> f3 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, @@ -334,21 +335,21 @@ public class TestListIdentifiersOnline { ExecutorService executor = Executors.newFixedThreadPool(3); Future<Boolean> f1 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 13, 30, "A1")); Future<Boolean> f2 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 35, 30, "A2")); Future<Boolean> f3 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, @@ -377,21 +378,21 @@ public class TestListIdentifiersOnline { ExecutorService executor = Executors.newFixedThreadPool(3); Future<Boolean> f1 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, 13, 100, "A1")); Future<Boolean> f2 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, 20, 100, "A2")); Future<Boolean> f3 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, @@ -419,21 +420,21 @@ public class TestListIdentifiersOnline { ExecutorService executor = Executors.newFixedThreadPool(3); Future<Boolean> f1 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 53, 100, "DC1")); Future<Boolean> f2 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 28, 100, "DC2")); Future<Boolean> f3 = executor.submit( - new OAIPMHResumptionTokenThread(oaipmhWebClient, + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS, OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java index 10aa9b7a14cd19dc31f787b9f79bfa722192ab4f..24b88bf366a69785f359b9524246c235f2c77362 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java @@ -1,8 +1,11 @@ -package info.textgrid.middleware.test.online; +package info.textgrid.middleware.test.online.tg; -import static org.junit.Assert.assertTrue; import java.io.IOException; import java.util.Properties; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; import org.apache.cxf.jaxrs.client.Client; import org.junit.After; import org.junit.AfterClass; @@ -10,6 +13,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; +import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline; /** * <p> @@ -17,11 +21,11 @@ import org.junit.Test; * </p> * * @author Stefan E. Funk, SUB Göttingen - * @version 2022-09-12 + * @version 2022-09-19 * @since 2022-09-12 */ -@Ignore -public class TestListRecordsOnline { +// @Ignore +public class TestTGListRecordsOnline { // ** // FINALS @@ -41,13 +45,15 @@ public class TestListRecordsOnline { static Client oaipmhWebClient; // Properties + private static String checkListRecordsDCSet; private static String checkListRecordsDCFrom; private static String checkListRecordsDCUntil; private static String checkListRecordsDATACITEFrom; private static String checkListRecordsDATACITEUntil; - private static String checkListRecordsSet; - private static Integer checkListRecordsSetExpectedPages; - private static Integer checkListRecordsSetExpectedPagesIDIOM; + private static String checkListRecordsIDIOMFrom; + private static String checkListRecordsIDIOMUntil; + private static int checkListIdentifiersPagesToTestIDIOM; + private static int checkListIdentifiersRecordsPerPageIDIOM; // ** // PREPARATIONS @@ -65,15 +71,15 @@ public class TestListRecordsOnline { // Set properties. oaipmhEndpoint = p.getProperty("oaipmhEndpoint"); + checkListRecordsDCSet = p.getProperty("checkListRecordsDCSet"); checkListRecordsDCFrom = p.getProperty("checkListRecordsDCFrom"); checkListRecordsDCUntil = p.getProperty("checkListRecordsDCUntil"); + checkListRecordsDATACITEFrom = p.getProperty("checkListRecordsDATACITEFrom"); checkListRecordsDATACITEUntil = p.getProperty("checkListRecordsDATACITEUntil"); - checkListRecordsSet = p.getProperty("checkListRecordsSet"); - checkListRecordsSetExpectedPages = - Integer.parseInt(p.getProperty("checkListRecordsSetExpectedPages").trim()); - checkListRecordsSetExpectedPagesIDIOM = - Integer.parseInt(p.getProperty("checkListRecordsSetExpectedPagesIDIOM").trim()); + + checkListRecordsIDIOMFrom = p.getProperty("checkListRecordsIDIOMFrom"); + checkListRecordsIDIOMUntil = p.getProperty("checkListRecordsIDIOMUntil"); // Get web client from endpoint. oaipmhWebClient = OAIPMHUtilitiesOnline.getOAIPMHWEebClient(oaipmhEndpoint); @@ -111,180 +117,380 @@ public class TestListRecordsOnline { * @throws IOException */ @Test - public void testListRecordsSetDC() throws IOException { + public void testListRecordsOAIDCMorePages() throws IOException { - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTRECORDS"); + System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsOAIDCMorePages()"); - int pages = - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, checkListRecordsSet); + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_DC_PREFIX, + 18, 100, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + OAIPMHUtilitiesOnline.NO_FROM, + OAIPMHUtilitiesOnline.NO_UNTIL, + OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - if (pages != checkListRecordsSetExpectedPages) { - assertTrue(pages + " != " + checkListRecordsSetExpectedPages, false); - } + System.out.println(OAIPMHUtilitiesOnline.OK); } /** * @throws IOException */ @Test - public void testListRecordsSetDATACITE() throws IOException { + public void testListRecordsOAIDCSetMorePages() throws IOException { - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsSetDATACITE()"); + System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsOAIDCSetMorePages()"); - int pages = - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, checkListRecordsSet); + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + checkListRecordsDCSet, + OAIPMHUtilitiesOnline.OAI_DC_PREFIX, + 20, 100, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + OAIPMHUtilitiesOnline.NO_FROM, + OAIPMHUtilitiesOnline.NO_UNTIL, + OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - if (pages != checkListRecordsSetExpectedPages) { - assertTrue(pages + " != " + checkListRecordsSetExpectedPages, false); - } + System.out.println(OAIPMHUtilitiesOnline.OK); } /** - * <p> - * Sets are not implemented in IDIOM requests, we always only ask for ONE project here! - * </p> - * * @throws IOException */ @Test @Ignore - public void testListRecordsSetIDIOM() throws IOException { + public void testListRecordsOAIDCAllPages() throws IOException { - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsSetIDIOM()"); + System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsOAIDCAllPages()"); - int pages = - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, checkListRecordsSet); + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_DC_PREFIX, + 0, 100, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + OAIPMHUtilitiesOnline.NO_FROM, + OAIPMHUtilitiesOnline.NO_UNTIL, + OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - if (pages != checkListRecordsSetExpectedPagesIDIOM) { - assertTrue(pages + " != " + checkListRecordsSetExpectedPagesIDIOM, false); - } + System.out.println(OAIPMHUtilitiesOnline.OK); } /** - * FIXME I don't understand this test. We do not have hdl: prefixes in TextGrid OAI-PMH, do we? - * * @throws IOException */ @Test - @Ignore - public void testListRecordsSetDCDifferentPrefixes() throws IOException { - - String uri = checkListRecordsSet; - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTRECORDS - HDL PREFIX"); - - if (!uri.startsWith(OAIPMHUtilitiesOnline.HDL_PREFIX)) { - assertTrue("missing '" + OAIPMHUtilitiesOnline.HDL_PREFIX + "' prefix!", false); - } - int pages1 = OAIPMHUtilitiesOnline.testList(oaipmhWebClient, - OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, uri); - if (pages1 != checkListRecordsSetExpectedPages) { - System.out.println(pages1 + " != " + checkListRecordsSetExpectedPages); - } - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTRECORDS - NO PREFIX"); - - if (checkListRecordsSet.startsWith(OAIPMHUtilitiesOnline.HDL_PREFIX)) { - uri = checkListRecordsSet.substring(4); - } - int pages2 = OAIPMHUtilitiesOnline.testList(oaipmhWebClient, - OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, uri); - if (pages2 != checkListRecordsSetExpectedPages) { - System.out.println(pages2 + " != " + checkListRecordsSetExpectedPages); - } - - // Check pages count. - if (pages1 != checkListRecordsSetExpectedPages || pages2 != checkListRecordsSetExpectedPages) { - assertTrue("pages count does not match", false); - } + public void testListRecordsOAIDCMorePagesFromUntil() throws IOException { + + System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsOAIDCMorePagesFromUntil()"); + + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + checkListRecordsDCSet, + OAIPMHUtilitiesOnline.OAI_DC_PREFIX, + 0, 100, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + checkListRecordsDCFrom, + checkListRecordsDCUntil, + OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); + + System.out.println(OAIPMHUtilitiesOnline.OK); + } + + /** + * @throws IOException + */ + @Test(expected = IOException.class) + public void testListRecordsIDIOMMETSSomePagesAndMetadataFormatWithRestok() throws IOException { + + System.out.println(OAIPMHUtilitiesOnline.TESTING + + "testListRecordsIDIOMMETSSomePagesAndMetadataFormatWithRestok()"); + + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, + 3, 30, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + OAIPMHUtilitiesOnline.NO_FROM, + OAIPMHUtilitiesOnline.NO_UNTIL, + OAIPMHUtilitiesOnline.METADATA_FORMAT_WITH_RESTOK); + + System.out.println(OAIPMHUtilitiesOnline.OK); } /** - * TODO Un-ignore if identifier check is implemented! - * * @throws IOException */ @Test @Ignore - public void testListRecordsSetDCStarPrefix() throws IOException { + public void testListRecordsIDIOMMETSAllPages() throws IOException { - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTRECORDS - STAR PREFIX"); + // FIXME - if (checkListRecordsSet.startsWith(OAIPMHUtilitiesOnline.HDL_PREFIX)) { - checkListRecordsSet = OAIPMHUtilitiesOnline.STAR_PREFIX + checkListRecordsSet.substring(4); - } + System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsIDIOMMETSAllPages()"); - int pages3 = - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, checkListRecordsSet); - if (pages3 != 1) { - System.out.println(pages3 + " != " + 1); - } + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, + 0, 30, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + OAIPMHUtilitiesOnline.NO_FROM, + OAIPMHUtilitiesOnline.NO_UNTIL, + OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); + + System.out.println(OAIPMHUtilitiesOnline.OK); } /** + * NOTE The amount of records will change due to changes on the data! Please check from and until + * values before! + * * @throws IOException */ @Test - public void testListRecordsDCFromUntil() throws IOException { - - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTRECORDS"); + public void testListRecordsIDIOMMETSMorePagesFromUntil() throws IOException { + + System.out + .println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsIDIOMMETSMorePagesFromUntil()"); + + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, + 6, 30, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + checkListRecordsIDIOMFrom, + checkListRecordsIDIOMUntil, + OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); + + System.out.println(OAIPMHUtilitiesOnline.OK); + } - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, OAIPMHUtilitiesOnline.NO_SET, checkListRecordsDCFrom, - checkListRecordsDCUntil); + /** + * @throws IOException + */ + @Test + public void testListRecordsIDIOMMETSMorePages() throws IOException { + + System.out + .println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsIDIOMMETSMorePages()"); + + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, + 6, 30, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + OAIPMHUtilitiesOnline.NO_FROM, + OAIPMHUtilitiesOnline.NO_UNTIL, + OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); + + System.out.println(OAIPMHUtilitiesOnline.OK); } /** * @throws IOException */ @Test - public void testListRecordsDATASITE() throws IOException { + public void testListRecordsDATACITEMorePages() throws IOException { + + System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsDATACITEMorePages()"); - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsDATASITE()"); + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, + 15, 100, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + OAIPMHUtilitiesOnline.NO_FROM, + OAIPMHUtilitiesOnline.NO_UNTIL, + OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, OAIPMHUtilitiesOnline.NO_SET); + System.out.println(OAIPMHUtilitiesOnline.OK); } /** * @throws IOException */ @Test - public void testListRecordsIDIOM() throws IOException { + @Ignore + public void testListRecordsDATACITEAllPages() throws IOException { + + System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsDATACITEAllPages()"); + + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, + 0, 100, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + OAIPMHUtilitiesOnline.NO_FROM, + OAIPMHUtilitiesOnline.NO_UNTIL, + OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsIDIOM()"); + System.out.println(OAIPMHUtilitiesOnline.OK); + } - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, OAIPMHUtilitiesOnline.NO_SET); + /** + * @throws IOException + */ + @Test + public void testListRecordsDATACITEMorePagesFromUntil() throws IOException { + + System.out + .println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsDATACITEMorePagesFromUntil()"); + + OAIPMHUtilitiesOnline.examineTGList(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, + 15, 100, + OAIPMHUtilitiesOnline.NO_THREAD_NAME, + checkListRecordsDATACITEFrom, + checkListRecordsDATACITEUntil, + OAIPMHUtilitiesOnline.NO_METADATA_FORMAT_WITH_RESTOK); + + System.out.println(OAIPMHUtilitiesOnline.OK); } /** * @throws IOException + * @throws ExecutionException + * @throws InterruptedException */ @Test - public void testListRecordsDC() throws IOException { + public void testListRecordsConcurrentlyIDIOMMETSMorePages() + throws IOException, InterruptedException, ExecutionException { + + System.out + .println( + OAIPMHUtilitiesOnline.TESTING + "testListRecordsConcurrentlyIDIOMMETSMorePages()"); + + ExecutorService executor = Executors.newFixedThreadPool(3); + + Future<Boolean> f1 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 2, 30, "D1")); + Future<Boolean> f2 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 3, 30, "D2")); + Future<Boolean> f3 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, 4, 30, "D3")); + + executor.shutdown(); + + System.out.println(OAIPMHUtilitiesOnline.OK + ": [D1]=" + f1.get() + ", [D2]=" + f2.get() + + ", [D3]=" + f3.get()); + } - System.out.println(OAIPMHUtilitiesOnline.TESTING + "testListRecordsDC()"); - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.OAI_DC_PREFIX, OAIPMHUtilitiesOnline.NO_SET); + /** + * @throws InterruptedException + * @throws ExecutionException + */ + @Test + public void testRestokConcurrentlyListRecordsDC() + throws InterruptedException, ExecutionException { + + System.out.println(OAIPMHUtilitiesOnline.TESTING + "testRestokConcurrentlyListRecordsDC()"); + + ExecutorService executor = Executors.newFixedThreadPool(4); + + Future<Boolean> f1 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 44, 100, "DC1")); + Future<Boolean> f2 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 33, 100, "DC2")); + Future<Boolean> f3 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 66, 100, "DC3")); + Future<Boolean> f4 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 28, 100, "DC4")); + + executor.shutdown(); + + System.out.println( + OAIPMHUtilitiesOnline.OK + ": [DC1]=" + f1.get() + ", [DC2]=" + f2.get() + ", [DC3]=" + + f3.get() + ", [DC4]=" + f4.get()); } /** * @throws IOException + * @throws InterruptedException + * @throws ExecutionException */ @Test - public void testListRecordsDATASITEFromUntil() throws IOException { + public void testRestokConcurrentlyListRecords() throws InterruptedException, ExecutionException { + + System.out.println(OAIPMHUtilitiesOnline.TESTING + "testRestokConcurrentlyListRecords()"); + + ExecutorService executor = Executors.newFixedThreadPool(3); + + Future<Boolean> f1 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 6, 100, "B1")); + Future<Boolean> f2 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 7, 100, "B2")); + Future<Boolean> f3 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 8, 100, "B3")); + Future<Boolean> f4 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, OAIPMHUtilitiesOnline.OAI_DC_PREFIX, 9, 100, "B4")); - System.out.println(OAIPMHUtilitiesOnline.TESTING + "#LISTRECORDS"); + executor.shutdown(); - OAIPMHUtilitiesOnline.testList(oaipmhWebClient, OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, - OAIPMHUtilitiesOnline.OAI_DATACITE_PREFIX, OAIPMHUtilitiesOnline.NO_SET, - checkListRecordsDATACITEFrom, checkListRecordsDATACITEUntil); + System.out.println(OAIPMHUtilitiesOnline.OK + ": [B1]=" + f1.get() + ", [B2]=" + f2.get() + + ", [B3]=" + f3.get() + ", [B4]=" + f4.get()); + } + + /** + * @throws InterruptedException + * @throws ExecutionException + */ + @Test + public void testListRecordsRestokConcurrentlyDCAndIDIOMMETS() + throws InterruptedException, ExecutionException { + + System.out.println( + OAIPMHUtilitiesOnline.TESTING + "testListRecordsRestokConcurrentlyDCAndIDIOMMets()"); + + ExecutorService executor = Executors.newFixedThreadPool(3); + + Future<Boolean> f1 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_DC_PREFIX, + 34, 100, + "DC1")); + Future<Boolean> f2 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_DC_PREFIX, + 27, 100, + "DC2")); + Future<Boolean> f3 = executor.submit( + new TGOAIPMHResumptionTokenThread(oaipmhWebClient, + OAIPMHUtilitiesOnline.VERB_LIST_RECORDS, + OAIPMHUtilitiesOnline.NO_SET, + OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX, + checkListIdentifiersPagesToTestIDIOM, + checkListIdentifiersRecordsPerPageIDIOM, + "IDIOM")); + + executor.shutdown(); + + System.out.println(OAIPMHUtilitiesOnline.OK + ": [DC1]=" + f1.get() + ", [DC2]=" + f2.get() + + ", [IOIOM]=" + f3.get()); } } diff --git a/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties b/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties index a8cc168f4379f32d1c0fd5906d7cff8572495b1e..82d1854c75508a6c406b11782f64b01bcb1ecda7 100644 --- a/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties +++ b/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties @@ -1,32 +1,33 @@ # OAI-PMH host -oaipmhEndpoint = https://dev.textgridlab.org/1.0/tgoaipmh/oai +oaipmhEndpoint = https://dev.textgridlab.org/1.0/tgoaipmh # GetRecord --> TestGetRecordONLINE.class checkGetRecordDC = textgrid:vqn0.0 expectedGetRecordDC = Heidi -expectedGetRecordDCNoPrefix = The request includes illegal arguments or is missing required arguments: [metadataPrefix] + checkGetRecordDATACITE = textgrid:mq05.0 expectedGetRecordDATACITE = Weise Klugredenn -expectedGetRecordDATACITENoPrefix = The request includes illegal arguments or is missing required arguments: [metadataPrefix] + checkGetRecordIDIOM = textgrid:2sg18.0 expectedGetRecordIDIOM = Aguateca -expectedGetRecordIDIOMNoPrefix = The request includes illegal arguments or is missing required arguments: [metadataPrefix] + +#checkGetRecordIDIOMImage = textgrid:3vcgs.0 +#expectedGetRecordIDIOMImage = Tikal, Miscellaneous Stone 13 checkGetRecordIDIOMImage = textgrid:407sf.0 expectedGetRecordIDIOMImage = Aguateca, Miscellaneous Text 11 -expectedGetRecordIDIOMImageNoPrefix = The request includes illegal arguments or is missing required arguments: [metadataPrefix] + checkGetRecordIDList = textgrid:mq05.0, textgrid:jgv6.0, textgrid:w7rz.0, textgrid:w36b.0, textgrid:mcdv.0, textgrid:v0qx.0, textgrid:xkck.0, textgrid:t3m1.0, textgrid:10rsq.0, textgrid:mq05.0, textgrid:jgv6.0, textgrid:w7rz.0, textgrid:w36b.0, textgrid:mcdv.0, textgrid:v0qx.0, textgrid:xkck.0, textgrid:t3m1.0, textgrid:10rsq.0 # ListRecords -checkListRecordsDC = project:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c +checkListRecordsDCSet = project:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c checkListRecordsDCFrom = 2012-01-04T01:00:00 checkListRecordsDCUntil = 2012-01-04T12:00:00 + checkListRecordsIDIOMFrom = 2012-01-04T01:00:00 checkListRecordsIDIOMUntil = 2012-01-04T12:00:00 + checkListRecordsDATACITEFrom = 2012-01-04T01:00:00 checkListRecordsDATACITEUntil = 2012-01-04T12:00:00 -checkListRecordsSet = project:TGPR-59722e29-efcb-330f-b9b4-5ef2fb08edab -checkListRecordsSetExpectedPages = 2 -checkListRecordsSetExpectedPagesIDIOM = 1 # ListIdentifiers checkListIdentifiersSet = project:TGPR-59722e29-efcb-330f-b9b4-5ef2fb08edab diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml index b79fcbea2cedb146c47ad94ac97cd0e9c73e98b5..c0c077e42da1c24b26a761aa46056221a16bb844 100644 --- a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml +++ b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml @@ -90,7 +90,10 @@ <bean id="IDIOMImages" class="info.textgrid.middleware.IDIOMImages"> - <property name="rbacSessionID" value="${rbacSessionID}" /> + <property name="idiomRbacSessionID" + value="${idiomRbacSessionID}" /> + <property name="idiomTgcrudEndpoint" + value="${idiomTgcrudEndpoint}" /> </bean> <!-- Bean for verb=Identify --> diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties b/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties index 432fd8a3a5a3e65bfaa577725da8145fc26c78c8..8a189fce5665601539f598823d7185dbefb6fff5 100644 --- a/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties +++ b/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties @@ -11,8 +11,6 @@ RS_ENDPOINT = https://dev.textgridlab.org/1.0/tgoaipmh elasticSearch.url = 127.0.0.1 elasticSearch.ports = 9202, 9203 elasticSearch.index = *** -# NONPUBLIC index only TextGrid IDIOM queries! -elasticSearch.nonpublicIndex = *** elasticSearch.type = metadata elasticSearch.itemLimit = 100 @@ -119,5 +117,8 @@ specFieldPrefix = project: ######################################## idiomResponseSize = 30 -# We do need a TextGrid RBAC Session ID for accessing unpublished image objects from TG-crud. -rbacSessionID = *** +# NONPUBLIC index only TextGrid IDIOM queries! +elasticSearch.nonpublicIndex = *** +# We do need a TG-crud endpoint and a TextGrid RBAC Session ID for accessing unpublished image objects from TG-crud. +idiomTgcrudEndpoint = *** +idiomRbacSessionID = *** diff --git a/pom.xml b/pom.xml index 4d0e525026e25e3d00f5b8b60336ffcd32e0437a..4fd43e1d996aac08d68bd94214a530d01c2f6dbe 100644 --- a/pom.xml +++ b/pom.xml @@ -132,4 +132,4 @@ <url>https://nexus.gwdg.de/repository/maven-dariah-public/</url> </repository> </distributionManagement> -</project> \ No newline at end of file +</project>