...
Project | Tested by | Success? RC-12 | Notes | ||
---|---|---|---|---|---|
valkyrie | https://github.com/samvera/valkyrie/pull/859 |
Islandora (testing ticket)
Project | Tested by | Success? RC-1Success? RC-32 | Notes | |
---|---|---|---|---|
Islandora 8 |
API-X
Testing Plan
Code Block |
---|
git clone https://github.com/fcrepo/fcrepo cd fcrepo4fcrepo git checkout fcrepo-6.0.0-RC-3 2 # or pull pre-built resources from https://github.com/fcrepo/fcrepo/releases/tag/fcrepo-6.0.0-RC-1 |
Sanity Builds
Scripts
https://github.com/awoods/fcrepo-build-scripts
...
2 |
...
linux
...
API-Test Suite
Start Fedora with the following command
Code Block mvn jetty:run -Dfcrepo.external.content.allowed=fcrepo-http-api/src/test/resources/allowed_external_paths.txt -Dfcrepo.auth.webac.userAgent.baseUri=http://example.com/ -Dfcrepo.cache.webac.acl.timeout.minutes=0 -pl fcrepo-webapp/
Run the API-Test suite with the following command
Code Block java -jar target/testsuite-1.0-SNAPSHOT-shaded.jar -c config-local.yml
Where "config-local.yml" is something like the following
No Format default: rooturl: http://localhost:8080/rest/ root-controller-user-webid: http://example.com/fedoraAdmin root-controller-user-name: fedoraAdmin root-controller-user-password: fedoraAdmin permissionless-user-webid: http://example.com/testuser permissionless-user-name: testuser permissionless-user-password: testpass broker-url: tcp://127.0.0.1:61616 topic-name: fedora queue-name: implementation-name: Fedora implementation-version: 56.0.0-RC -2 tomcat: rooturl: http://localhost:8080/fcrepo/rest/ root-controller-user-webid: http://example.com/fedoraAdmin root-controller-user-name: fedoraAdmin root-controller-user-password: secret3 permissionless-user-webid: http://example.com/testuser permissionless-user-name: testuser permissionless-user-password: password1 broker-url: tcp://127.0.0.1:61616 topic-name: fedora queue-name: implementation-name: Fedora implementation-version: 56.0.0-RC-2
Platform | Test Suite Version | Tested by | Results RC-1 2 (#pass,fail,skip) | Results RC-3 (#pass,fail,skip) | Notes | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Linux | ||||||||||||
Ubuntu | ||||||||||||
OSX | 5eca0de34c162205d66913b1979967d487619018 | =============================================== Fedora API Specification Test Suite Total tests run: 241, Failures: 1, Skips: 28 =============================================== | The -Dfcrepo.cache.webac.acl.timeout.minutes=0 setting was added to fcrepo. | Fedora Linux 27 | Ubuntu | Mac 10.14 | Mac OSX 10.13.6 | Danny Bernstein |
One-Click Run
cd fcrepo-webapp; mvn clean install -Pone-click
Command | Platform | Tested By | RC-12 | Notes | |||
---|---|---|---|---|---|---|---|
java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jar | Linux | ||||||
java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jar | Fedora Linux 27 | Mac | java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jar | Mac | |||
java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jar | Windows |
Manual Tests
Info |
---|
All of the below should take place in the HTML UI and non-vagrant tests should run against fcrepo-webapp. |
- Create nested containers
- Create binary resources
- Run fixity on binary
- Update Properties: Perform SPARQL-Update on container
- Update Properties: Perform SPARQL-Update on binary
- Delete container
- Delete binary
- Use transactions
- Create versions
- View versions
WebAC Tests
Use the following recipes to create WebAC-protected resources
Default ACL
Code Block |
---|
# root container should be read-only by default
curl -i -u testuser:testpass -X PUT http://localhost:8080/rest/test-default
# expect 403
# create a resource with admin
curl -i -u fedoraAdmin:fedoraAdmin -X PUT http://localhost:8080/rest/test-default
# expect 201
# resources inheriting the default acl should be read-only
curl -i -u testuser:testpass -X GET http://localhost:8080/rest/test-default
# expect 200
curl -i -u testuser:testpass -X PUT http://localhost:8080/rest/test-default/child
# expect 403 |
...
...
Docker
Code Block |
---|
docker run -p8080:8080 -v /path/to/fedora_home:/fedora_home -v /path/to/fcrepo.properties:/fcrepo.properties -e CATALINA_OPTS="-Dfcrepo.config.file=/fcrepo.properties" --name=fcrepo-test fcrepo/fcrepo:6.0.0-RC-2 |
Command | Platform | Tested By | RC-2 | Notes |
---|---|---|---|---|
java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jar | Linux | |||
java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jar | Mac | |||
java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jar | Windows |
Performance and Scalability Tests
Ensure tha the UI is performant with 2 million resources
Database | Tested By | RC-2 |
---|---|---|
postgresql | ||
mariadb | ||
mysql |
Manual Tests
Info |
---|
All of the below should take place in the HTML UI. |
- Create nested containers
- Create binary resources
- Run fixity on binary
- Update Properties: Perform SPARQL-Update on container
- Update Properties: Perform SPARQL-Update on binary
- Delete container
- Delete binary
- Use transactions
- Create versions
- View versions
Simple read-only
Code Block |
---|
# create a resources with admin
curl -i -u fedoraAdmin:fedoraAdmin -X PUT http://localhost:8080/rest/test-read-only
curl -i -u fedoraAdmin:fedoraAdmin -X PUT http://localhost:8080/rest/test-read-only/child
# put read-only acl on parent
echo "
@prefix acl: <http://www.w3.org/ns/auth/acl#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<#restricted> a acl:Authorization ;
acl:agent 'testuser' ;
acl:mode acl:Read;
acl:default <http://localhost:8080/rest/test-read-only> ;
acl:accessTo <http://localhost:8080/rest/test-read-only> .
" | curl -i -u fedoraAdmin:fedoraAdmin -d @- -X PUT -H "Content-Type: text/turtle" http://localhost:8080/rest/test-read-only/fcr:acl
# Verify expected access privileges on target and child - ie read but not write
curl -i -u testuser:testpass -X GET http://localhost:8080/rest/test-read-only/child
# expect 200
curl -i -u testuser:testpass -X POST http://localhost:8080/rest/test-read-only/child
# expect 403 |
...
Simple read-write
Code Block |
---|
# create a resources with admin
curl -i -u fedoraAdmin:fedoraAdmin -X PUT http://localhost:8080/rest/test-read-write
curl -i -u fedoraAdmin:fedoraAdmin -X PUT http://localhost:8080/rest/test-read-write/child
# put read-only acl on parent
echo "
@prefix acl: <http://www.w3.org/ns/auth/acl#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<#restricted> a acl:Authorization ;
acl:agent 'testuser' ;
acl:mode acl:Read, acl:Write;
acl:default <http://localhost:8080/rest/test-read-write> ;
acl:accessTo <http://localhost:8080/rest/test-read-write> .
" | curl -i -u fedoraAdmin:fedoraAdmin -d @- -X PUT -H "Content-Type: text/turtle" http://localhost:8080/rest/test-read-write/fcr:acl
# Verify expected access privileges on target and child - ie read and write
curl -i -u testuser:testpass -X GET http://localhost:8080/rest/test-read-write/child
# expect 200
curl -i -u testuser:testpass -X POST http://localhost:8080/rest/test-read-write/child
# expect 201 |
- Create resource to protect
- Create ACL on protected resource (read/write)
- Create child of protected resource
- Verify expected access privileges on target and child
Platform | Tested by | Success? RC-2 |
---|
Notes | |
---|---|
Mac |
Linux |
Windows |
External Content
Create and verify all three modes of external content handling: proxy, redirect, copy
...
Code Block |
---|
#Redirect curl -i -H"Link: <https://duraspace.org/wp-content/themes/duraspace/assets/images/fedora/fedora-logo-black.png>; rel=\"http://fedora.info/definitions/fcrepo#ExternalContent\"; handling=\"redirect\"; type=\"image/png\"" -XPUT -ufedoraAdmin:fedoraAdmin http://localhost:8080/rest/test_redirect_remote_file #Get the file and verify a 307 is returned curl -i -ufedoraAdmin:fedoraAdmin http://localhost:8080/rest/test_redirect_remote_file |
#Copy
curl -i -H"Link: <https://duraspace.org/wp-content/themes/duraspace/assets/images/fedora/fedora-logo-black.png>; rel=\"http://fedora.info/definitions/fcrepo#ExternalContent\"; handling=\"copy\"; type=\"image/png\"" -XPUT -ufedoraAdmin:fedoraAdmin http://localhost:8080/rest/test_copy_remote_file
#verify copied file returns 200.
curl -i -ufedoraAdmin:fedoraAdmin http://localhost:8080/rest/test_copy_remote_file
|
Handling (proxy,redirect,copy) | Platform | Tested by | Success? RC-2 | Success? RC-3Notes | |
---|---|---|---|---|---|
proxy, redirect, copy | Mac | Danny Bernstein |
Database Tests
With Tomcat8 deployment, run above manual tests with alternate backend databases (Configuring JDBC Object Store)
...
...
...
...
fcr:backup/fcr:restore Functionality
These tests are designed to ensure the proper function of the 'fcr:backup/fcr:restore' features by testing them against various Fedora configurations. The validity of the 'restore' can only be determined by crawling the repository and verifying the successful retrieval of the repository's content.
If the anticipated Fedora release is not backwards compatible with the previous version of Fedora, then the "From Fedora Version" should be the previous version. Otherwise, it is sufficient to test the fcr:backup/fcr:restore functionality using the same version.
See: RESTful HTTP API - Backup and Restore
# Backup
curl -X POST localhost:8080/rest/fcr:backup
# Restore
curl -X POST -d "/path/to/backup/directory" localhost:8080/rest/fcr:restore
Resources
- These python scripts - fcrepo-testing - can be used to load RDF content and binary content to a Fedora repository and verify the integrity of the loaded resources. Output from the load process can be used to verify the integrity of a 'restored' repository. See the README for more info.
- This script can be used to walk your repository, failing if a non-success response is encountered.
...
Tested by
...
Platform
...
Container
(Tomcat/Jetty)
...
Database
Backend
...
From Fedora
Version
...
To Fedora
Version
...
Number of
RDF Resources
...
Number of
Binaries
...
Size of Backup (du -h .)
...
Notes
...
...
NB: "Success" is measured not by receiving a "204 No Content" message after the 'fcr:restore' command, but by performing a GET on every resource in the repository and receiving "200 OK" messages.
Vagrant Tests
Code Block |
---|
vagrant destroy
vagrant up |
...
FEDORA_AUTH=true
Manual Tests
Same as above, plus:
(for reference: https://docs.google.com/presentation/d/1aU-qRVmU0lB18ywepk2AGYEmRe-HfIwhUaofHgathGQ/edit#slide=id.g11caa1fd99_0_0)
...
Verify reindexing to triplestore works
Code Block |
---|
vagrant ssh
sudo service tomcat7 stop
sudo rm -rf /etc/fuseki/databases/test_data/*
sudo service tomcat7 start
curl -XPOST localhost:9080/reindexing/ -H"Content-Type: application/json" -d '["activemq:queue:triplestore.reindex"]' |
Backwards Compatibility Tests
- Start 5.0.0 one-click
- Load sample datasets via /fcr:restore
- Run test scripts on 5.0.0
- Stop 5.0.0
- Start RC one-click
- Run test scripts on RC
- ReStart RC
- Run test scripts on RC
Tested by | Success RC2 | Success? RC-3 | Notes||||
---|---|---|---|---|---|---|
Resources
[1] Testing scripts