Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...


Islandora (testing ticket)

 Project

Tested by

Success? RC-1Success? RC-32

Notes

Islandora 8

API-X

(tick)

 Project

Tested by

Success? RC-1Notes


Testing Plan

Code Block
git clone https://github.com/fcrepo/fcrepo
cd fcrepo4fcrepo
git checkout fcrepo-6.0.0-RC-1


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

  1. 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/


  2. Run the API-Test suite with the following command

    Code Block
    java -jar target/testsuite-1.0-SNAPSHOT-shaded.jar -c config-local.yml


    1. 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



PlatformTest Suite VersionTested byResults RC-1 2 (#pass,fail,skip)Results RC-3 (#pass,fail,skip)Notes
Linux




Ubuntu



OSX5eca0de34c162205d66913b1979967d487619018===============================================
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 27UbuntuMac 10.14Mac OSX 10.13.6Danny Bernstein

One-Click Run

cd fcrepo-webapp; mvn clean install -Pone-click
CommandPlatformTested ByRC-12Notes
java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jarLinux


java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jarFedora Linux 27Mac(tick)java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jarMac

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.

  1. Create nested containers
  2. Create binary resources
  3. Run fixity on binary
  4. Update Properties:  Perform SPARQL-Update on container
  5. Update Properties:  Perform SPARQL-Update on binary
  6. Delete container
  7. Delete binary
  8. Use transactions
  9. Create versions
  10. 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


CommandPlatformTested ByRC-2Notes
java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jarLinux


java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jarMac(tick)

java -jar fcrepo-webapp-<version>-SNAPSHOT-jetty-console.jar

Windows






Performance and Scalability Tests

Ensure tha the UI is performant with 2 million resources 

DatabaseTested ByRC-2

postgresql

(tick)
mariadb

mysql(tick)

Manual Tests

Info

All of the below should take place in the HTML UI.

  1. Create nested containers
  2. Create binary resources
  3. Run fixity on binary
  4. Update Properties:  Perform SPARQL-Update on container
  5. Update Properties:  Perform SPARQL-Update on binary
  6. Delete container
  7. Delete binary
  8. Use transactions
  9. Create versions
  10. 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
  1. Create resource to protect
  2. Create ACL on protected resource (read/write)
  3. Create child of protected resource
  4. Verify expected access privileges on target and child


PlatformTested bySuccess? RC-2
Success? RC-3
Notes
Mac
(tick)(tick)
Fedora



Linux
27(tick)



Windows



External Content

Create and verify all three modes of external content handling: proxy, redirect, copy

...

code
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





Success? RC-3
Handling (proxy,redirect,copy)PlatformTested bySuccess? RC-2Notes
proxy, redirect, copyMacDanny Bernstein(tick)

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

  1. Start 5.0.0 one-click
  2. Load sample datasets via /fcr:restore
  3. Run test scripts on 5.0.0
  4. Stop 5.0.0
  5. Start RC one-click
  6. Run test scripts on RC
  7. ReStart RC
  8. Run test scripts on RC
Notes
Tested bySuccess RC2Success? RC-3












Resources

[1] Testing scripts

[2] Fedora 4 Release Test Suite