mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	Compare commits
	
		
			75 Commits
		
	
	
		
			16.13
			...
			fix/REPO-5
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 02decc91d4 | ||
|  | c9d27e55d6 | ||
|  | d647c96ae4 | ||
|  | 5a6f9a60f3 | ||
|  | ce2c0e2ac2 | ||
|  | dfa9e754d5 | ||
|  | 860065cf6c | ||
|  | 2d7f8fba87 | ||
|  | c2c4171756 | ||
|  | af884cbb0e | ||
|  | fb0be16155 | ||
|  | f9d95136b2 | ||
|  | 26453c4112 | ||
|  | cb26098e8b | ||
|  | 6766bfcfdf | ||
|  | 48df1e25ed | ||
|  | 52918e4ff5 | ||
|  | 40d70e797c | ||
|  | 6011868759 | ||
|  | 79ad480ddb | ||
|  | c12d8f98be | ||
|  | d2faadac57 | ||
|  | 7f1d28a417 | ||
|  | fab02e5484 | ||
|  | 5274687ec1 | ||
|  | b52e67b7df | ||
|  | 77f414dbf1 | ||
|  | c45ce63bd2 | ||
|  | 0a784a0674 | ||
|  | 1da1506160 | ||
|  | 79dd212428 | ||
|  | fd859a4191 | ||
|  | e61f6df323 | ||
|  | 64998b5c53 | ||
|  | 784c9d47b3 | ||
|  | b5617c3bd9 | ||
|  | 53777cd5b9 | ||
|  | ddb8ad16ac | ||
|  | a3ed766957 | ||
|  | 22a0343c41 | ||
|  | 43fb3cfdc5 | ||
|  | 8accceb08e | ||
|  | 71eab3e347 | ||
|  | 8d378fc340 | ||
|  | 73a8ac61ed | ||
|  | 67d3159650 | ||
|  | ec8a760122 | ||
|  | 3d0ceca6da | ||
|  | 8c25d1f7e6 | ||
|  | 1e0972eaa1 | ||
|  | 616c666114 | ||
|  | 8520548e72 | ||
|  | 63f7f07465 | ||
|  | 35a3ff8032 | ||
|  | 695bf90891 | ||
|  | d4dcc4fe2c | ||
|  | ee44b6afa2 | ||
|  | 28b580b9fc | ||
|  | 7dc7a743f5 | ||
|  | 4bc92df38e | ||
|  | 048df99d91 | ||
|  | b477d122f3 | ||
|  | 0cc2fe46cf | ||
|  | 671e1934bd | ||
|  | d0452aaddb | ||
|  | 464db778fa | ||
|  | 905e813aa4 | ||
|  | b55ba47c5e | ||
|  | 0607bb1485 | ||
|  | f7c8298308 | ||
|  | 86de88ebaa | ||
|  | 76ba0a38e5 | ||
|  | 3ad642f388 | ||
|  | e113eb3561 | ||
|  | 1dc1852a69 | 
							
								
								
									
										160
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										160
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -26,13 +26,16 @@ branches: | |||||||
|  |  | ||||||
| env: | env: | ||||||
|   global: |   global: | ||||||
|  |     - TRANSFORMERS_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-core.version -q -DforceStdout) | ||||||
|     - TAS_SCRIPTS=../alfresco-community-repo/packaging/tests/scripts |     - TAS_SCRIPTS=../alfresco-community-repo/packaging/tests/scripts | ||||||
|     - TAS_ENVIRONMENT=./packaging/tests/environment |     - TAS_ENVIRONMENT=./packaging/tests/environment | ||||||
|     - LOG_WARN="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" |     - LOG_WARN="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" | ||||||
|  |  | ||||||
| stages: | stages: | ||||||
|  |   - name: prepare | ||||||
|  |     if: commit_message !~ /\[skip tests\]/ AND commit_message !~ /\[force[^\]]*\]/ | ||||||
|   - name: test |   - name: test | ||||||
|     if: commit_message !~ /\[skip tests\]/ |     if: commit_message !~ /\[skip tests\]/ AND commit_message !~ /\[force[^\]]*\]/ | ||||||
|   - name: release |   - name: release | ||||||
|     if: commit_message !~ /\[no release\]/ AND (branch = master OR branch =~ /release\/.*/) AND type != pull_request AND fork = false |     if: commit_message !~ /\[no release\]/ AND (branch = master OR branch =~ /release\/.*/) AND type != pull_request AND fork = false | ||||||
|   - name: update_downstream |   - name: update_downstream | ||||||
| @@ -43,7 +46,13 @@ install: travis_retry travis_wait 40 bash scripts/travis/build.sh | |||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   include: |   include: | ||||||
|  |     - name: "Prepare" | ||||||
|  |       stage: prepare | ||||||
|  |       install: skip | ||||||
|  |       script: travis_retry travis_wait 80 bash scripts/travis/prepare.sh | ||||||
|  |  | ||||||
|     - name: "Source Clear Scan (SCA)" |     - name: "Source Clear Scan (SCA)" | ||||||
|  |       stage: test | ||||||
|       if: branch = master OR branch =~ /release\/.*/ |       if: branch = master OR branch =~ /release\/.*/ | ||||||
|       # Run Veracode |       # Run Veracode | ||||||
|       install: skip |       install: skip | ||||||
| @@ -51,43 +60,49 @@ jobs: | |||||||
|  |  | ||||||
|     - name: "Core, Data-Model, Repository - AllUnitTestsSuite - Build and test" |     - name: "Core, Data-Model, Repository - AllUnitTestsSuite - Build and test" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       script: |       script: | ||||||
|         - travis_retry mvn -B test -pl core,data-model |         - travis_retry mvn -B test -pl core,data-model -am -DfailIfNoTests=false | ||||||
|         - travis_retry mvn -B test -pl "repository,mmt" "-Dtest=AllUnitTestsSuite,AllMmtUnitTestSuite" |         - travis_retry mvn -B test -pl "repository,mmt" -am "-Dtest=AllUnitTestsSuite,AllMmtUnitTestSuite" -DfailIfNoTests=false | ||||||
|  |  | ||||||
|     - name: "Repository - AppContext01TestSuite" |     - name: "Repository - AppContext01TestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 |         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG} | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext01TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AppContext01TestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - AppContext02TestSuite" |     - name: "Repository - AppContext02TestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext02TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AppContext02TestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - AppContext03TestSuite" |     - name: "Repository - AppContext03TestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 |         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG} | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext03TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AppContext03TestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - AppContext04TestSuite" |     - name: "Repository - AppContext04TestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 |         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG} | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext04TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AppContext04TestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - AppContext05TestSuite" |     - name: "Repository - AppContext05TestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
| @@ -95,142 +110,161 @@ jobs: | |||||||
|         - cp repository/src/test/resources/realms/alfresco-realm.json "${HOME}/tmp" |         - cp repository/src/test/resources/realms/alfresco-realm.json "${HOME}/tmp" | ||||||
|         - export HOST_IP=$(hostname  -I | cut -f1 -d' ') |         - export HOST_IP=$(hostname  -I | cut -f1 -d' ') | ||||||
|         - docker run -d -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -e DB_VENDOR=h2 -p 8999:8080 -e KEYCLOAK_IMPORT=/tmp/alfresco-realm.json -v $HOME/tmp/alfresco-realm.json:/tmp/alfresco-realm.json alfresco/alfresco-identity-service:1.2 |         - docker run -d -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -e DB_VENDOR=h2 -p 8999:8080 -e KEYCLOAK_IMPORT=/tmp/alfresco-realm.json -v $HOME/tmp/alfresco-realm.json:/tmp/alfresco-realm.json alfresco/alfresco-identity-service:1.2 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext05TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco "-Didentity-service.auth-server-url=http://${HOST_IP}:8999/auth" |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AppContext05TestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco "-Didentity-service.auth-server-url=http://${HOST_IP}:8999/auth" | ||||||
|  |  | ||||||
|     - name: "Repository - AppContext06TestSuite" |     - name: "Repository - AppContext06TestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 |         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG} | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext06TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AppContext06TestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - AppContextExtraTestSuite" |     - name: "Repository - AppContextExtraTestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 |         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG} | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContextExtraTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AppContextExtraTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - MiscContextTestSuite" |     - name: "Repository - MiscContextTestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 |         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG} | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=MiscContextTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=MiscContextTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - SearchTestSuite" |     - name: "Repository - SearchTestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=SearchTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco -Dindex.subsystem.name=solr6 |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=SearchTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco -Dindex.subsystem.name=solr6 | ||||||
|  |  | ||||||
|     - name: "Repository - MariaDB 10.2.18 tests" |     - name: "Repository - MariaDB 10.2.18 tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.2.18 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci |         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.2.18 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver | ||||||
|  |  | ||||||
|     - name: "Repository - MariaDB 10.4 tests" |     - name: "Repository - MariaDB 10.4 tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.4 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci |         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.4 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver | ||||||
|  |  | ||||||
|     - name: "Repository - MariaDB 10.5 tests" |     - name: "Repository - MariaDB 10.5 tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.5 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci |         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.5 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver | ||||||
|  |  | ||||||
|     - name: "Repository - MariaDB 10.6 tests" |     - name: "Repository - MariaDB 10.6 tests" | ||||||
|       # We run tests on the latest version of MariaDB on pull requests plus the normal master and release branches - ignored on feature branches |       # We run tests on the latest version of MariaDB on pull requests plus the normal master and release branches - ignored on feature branches | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/                         ) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/                         ) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.6 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci |         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.6 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver | ||||||
|  |  | ||||||
|     - name: "Repository - MySQL 5.7.23 tests" |     - name: "Repository - MySQL 5.7.23 tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco  mysql:5.7.23 --transaction-isolation='READ-COMMITTED' --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci |         - docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco  mysql:5.7.23 --transaction-isolation='READ-COMMITTED' --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - MySQL 8 tests" |     - name: "Repository - MySQL 8 tests" | ||||||
|       # We run tests on the latest version of MySQL on pull requests plus the normal master and release branches - ignored on feature branches |       # We run tests on the latest version of MySQL on pull requests plus the normal master and release branches - ignored on feature branches | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/                         ) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/                         ) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco  mysql:8 --transaction-isolation='READ-COMMITTED' |         - docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco  mysql:8 --transaction-isolation='READ-COMMITTED' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - PostgreSQL 10.9 tests" |     - name: "Repository - PostgreSQL 10.9 tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:10.9 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:10.9 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - PostgreSQL 11.7 tests" |     - name: "Repository - PostgreSQL 11.7 tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:11.7 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:11.7 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - PostgreSQL 11.12 tests" |     - name: "Repository - PostgreSQL 11.12 tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:11.12 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:11.12 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - PostgreSQL 12.4 tests" |     - name: "Repository - PostgreSQL 12.4 tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:12.4 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:12.4 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - PostgreSQL 12.7 tests" |     - name: "Repository - PostgreSQL 12.7 tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:12.7 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:12.7 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - PostgreSQL 13.1 tests" |     - name: "Repository - PostgreSQL 13.1 tests" | ||||||
|       # We only run DB tests on the latest version of PostgreSQL on feature branches |       # We only run DB tests on the latest version of PostgreSQL on feature branches | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - PostgreSQL 13.3 tests" |     - name: "Repository - PostgreSQL 13.3 tests" | ||||||
|       # We only run DB tests on the latest version of PostgreSQL on feature branches |       # We only run DB tests on the latest version of PostgreSQL on feature branches | ||||||
|       if: commit_message !~ /\[skip db\]/ OR commit_message =~ /\[latest db\]/ |       if: commit_message !~ /\[skip db\]/ OR commit_message =~ /\[latest db\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Repository - Messaging tests" |     - name: "Repository - Messaging tests" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=CamelRoutesTest,CamelComponentsTest |       script: travis_wait 20 mvn -B test -pl repository -am -Dtest=CamelRoutesTest,CamelComponentsTest -DfailIfNoTests=false | ||||||
|  |  | ||||||
|     - name: "Remote-api - AppContext01TestSuite" |     - name: "Remote-api - AppContext01TestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
| @@ -238,30 +272,34 @@ jobs: | |||||||
|  |  | ||||||
|     - name: "Remote-api - AppContext02TestSuite" |     - name: "Remote-api - AppContext02TestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 |         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG} | ||||||
|       script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext02TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext02TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Remote-api - AppContext03TestSuite" |     - name: "Remote-api - AppContext03TestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 |         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG} | ||||||
|       script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext03TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext03TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Remote-api - AppContext04TestSuite" |     - name: "Remote-api - AppContext04TestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.7 |         - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG} | ||||||
|       script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext04TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext04TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "Remote-api - AppContextExtraTestSuite" |     - name: "Remote-api - AppContextExtraTestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
| @@ -270,99 +308,126 @@ jobs: | |||||||
|     - name: "REST API TAS tests part1" |     - name: "REST API TAS tests part1" | ||||||
|       # TAS tests are generally skipped on feature branches as they will be repeated on the enterprise repo or community packaging builds |       # TAS tests are generally skipped on feature branches as they will be repeated on the enterprise repo or community packaging builds | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_LOCAL_IMAGES=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml |         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||||
|         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" |         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" | ||||||
|       script: travis_wait 60 mvn -B install -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part1 -Denvironment=default -DrunBugs=false |       script: travis_wait 60 mvn -B verify -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part1 -Denvironment=default -DrunBugs=false | ||||||
|  |  | ||||||
|     - name: "REST API TAS tests part2" |     - name: "REST API TAS tests part2" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_LOCAL_IMAGES=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml |         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||||
|         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" |         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" | ||||||
|       script: travis_wait 60 mvn -B install -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part2 -Denvironment=default -DrunBugs=false |       script: travis_wait 60 mvn -B verify -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part2 -Denvironment=default -DrunBugs=false | ||||||
|  |  | ||||||
|     - name: "REST API TAS tests part3" |     - name: "REST API TAS tests part3" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_LOCAL_IMAGES=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml |         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||||
|         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" |         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" | ||||||
|       script: travis_wait 60 mvn -B install -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part3 -Denvironment=default -DrunBugs=false |       script: travis_wait 60 mvn -B verify -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part3 -Denvironment=default -DrunBugs=false | ||||||
|  |  | ||||||
|     - name: "CMIS TAS tests - BROWSER binding" |     - name: "CMIS TAS tests - BROWSER binding" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_LOCAL_IMAGES=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml |         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||||
|         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" |         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" | ||||||
|       script: travis_wait 40 mvn -B install -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-browser -Denvironment=default -DrunBugs=false |       script: travis_wait 40 mvn -B verify -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-browser -Denvironment=default -DrunBugs=false | ||||||
|  |  | ||||||
|     - name: "CMIS TAS tests - ATOM binding" |     - name: "CMIS TAS tests - ATOM binding" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_LOCAL_IMAGES=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml |         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||||
|         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" |         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" | ||||||
|       script: travis_wait 40 mvn -B install -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-atom -Denvironment=default -DrunBugs=false |       script: travis_wait 40 mvn -B verify -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-atom -Denvironment=default -DrunBugs=false | ||||||
|  |  | ||||||
|     - name: "CMIS TAS tests - WEBSERVICES binding" |     - name: "CMIS TAS tests - WEBSERVICES binding" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_LOCAL_IMAGES=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml |         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||||
|         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" |         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" | ||||||
|       script: travis_wait 40 mvn -B install -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-webservices -Denvironment=default -DrunBugs=false |       script: travis_wait 40 mvn -B verify -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-webservices -Denvironment=default -DrunBugs=false | ||||||
|  |  | ||||||
|     - name: "Email TAS tests" |     - name: "Email TAS tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_LOCAL_IMAGES=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml |         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml | ||||||
|         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" |         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" | ||||||
|       script: travis_wait 30 mvn -B install -f packaging/tests/tas-email/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false |       script: travis_wait 30 mvn -B verify -f packaging/tests/tas-email/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false | ||||||
|  |  | ||||||
|     - name: "WebDAV TAS tests" |     - name: "WebDAV TAS tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_LOCAL_IMAGES=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml |         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml | ||||||
|         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" |         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" | ||||||
|       script: travis_wait 30 mvn -B install -f packaging/tests/tas-webdav/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false |       script: travis_wait 30 mvn -B verify -f packaging/tests/tas-webdav/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false | ||||||
|  |  | ||||||
|     - name: "Integration TAS tests" |     - name: "Integration TAS tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_LOCAL_IMAGES=true bash scripts/travis/build.sh | ||||||
|       before_script: |       before_script: | ||||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml |         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml | ||||||
|         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" |         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco" | ||||||
|       script: travis_wait 30 mvn -B install -f packaging/tests/tas-integration/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false |       script: travis_wait 30 mvn -B verify -f packaging/tests/tas-integration/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false | ||||||
|  |  | ||||||
|     - name: "Share Services - ShareServicesTestSuite" |     - name: "Share Services - ShareServicesTestSuite" | ||||||
|       if: commit_message !~ /\[skip repo\]/ |       if: commit_message !~ /\[skip repo\]/ | ||||||
|  |       install: skip | ||||||
|       before_script: |       before_script: | ||||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' |         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||||
|       script: travis_wait 20 mvn -B test -pl :alfresco-share-services -Dtest=ShareServicesTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco |       script: travis_wait 20 mvn -B test -pl :alfresco-share-services -am -Dtest=ShareServicesTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||||
|  |  | ||||||
|     - name: "AGS Unit & Integration Tests 01 (PostgreSQL)" |     - name: "AGS Unit & Integration Tests 01 (PostgreSQL)" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt1 -f amps/ags/pom.xml ${LOG_WARN} |       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt1 -f amps/ags/pom.xml ${LOG_WARN} | ||||||
|  |  | ||||||
|     - name: "AGS        Integration Tests 02 (PostgreSQL)" |     - name: "AGS        Integration Tests 02 (PostgreSQL)" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt2 -f amps/ags/pom.xml ${LOG_WARN} |       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt2 -f amps/ags/pom.xml ${LOG_WARN} | ||||||
|  |  | ||||||
|     - name: "AGS        Integration Tests 03 (PostgreSQL)" |     - name: "AGS        Integration Tests 03 (PostgreSQL)" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt3 -f amps/ags/pom.xml ${LOG_WARN} |       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt3 -f amps/ags/pom.xml ${LOG_WARN} | ||||||
|  |  | ||||||
|  |     - name: "AGS Unit & Integration Tests 04 (PostgreSQL)" | ||||||
|  |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|  |       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt4 -f amps/ags/pom.xml ${LOG_WARN} | ||||||
|  |  | ||||||
|     - name: "AGS Unit & Integration Tests 01 (MySQL) " |     - name: "AGS Unit & Integration Tests 01 (MySQL) " | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql    -PagsAllTestSuitePt1 -f amps/ags/pom.xml ${LOG_WARN} |       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql    -PagsAllTestSuitePt1 -f amps/ags/pom.xml ${LOG_WARN} | ||||||
|  |  | ||||||
|     - name: "AGS        Integration Tests 02 (MySQL) " |     - name: "AGS        Integration Tests 02 (MySQL) " | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql    -PagsAllTestSuitePt2 -f amps/ags/pom.xml ${LOG_WARN} |       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql    -PagsAllTestSuitePt2 -f amps/ags/pom.xml ${LOG_WARN} | ||||||
|  |  | ||||||
|     - name: "AGS        Integration Tests 03 (MySQL) " |     - name: "AGS        Integration Tests 03 (MySQL) " | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql    -PagsAllTestSuitePt3 -f amps/ags/pom.xml ${LOG_WARN} |       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql    -PagsAllTestSuitePt3 -f amps/ags/pom.xml ${LOG_WARN} | ||||||
|  |  | ||||||
|  |     - name: "AGS Unit & Integration Tests 04 (MySQL) " | ||||||
|  |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||||
|  |       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql    -PagsAllTestSuitePt4 -f amps/ags/pom.xml ${LOG_WARN} | ||||||
|  |  | ||||||
|     - name: "AGS Community Rest API Tests" |     - name: "AGS Community Rest API Tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ |       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ | ||||||
|  |       install: travis_retry travis_wait 40 env REQUIRES_LOCAL_IMAGES=true bash scripts/travis/build.sh | ||||||
|       addons: |       addons: | ||||||
|         artifacts: |         artifacts: | ||||||
|           paths: |           paths: | ||||||
| @@ -373,11 +438,12 @@ jobs: | |||||||
|       before_script: |       before_script: | ||||||
|         - ${TAS_SCRIPTS}/start-compose.sh ./amps/ags/rm-community/rm-community-repo/docker-compose.yml |         - ${TAS_SCRIPTS}/start-compose.sh ./amps/ags/rm-community/rm-community-repo/docker-compose.yml | ||||||
|         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8080/alfresco" |         - ${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8080/alfresco" | ||||||
|       script: travis_wait 40 mvn -B test -pl :alfresco-governance-services-automation-community-rest-api -Dskip.automationtests=false -Pags |       script: travis_wait 40 mvn -B test -pl :alfresco-governance-services-automation-community-rest-api -am -DfailIfNoTests=false -Dskip.automationtests=false -Pags | ||||||
|       after_script: bash amps/ags/travis/scripts/getLogs.sh |       after_script: bash amps/ags/travis/scripts/getLogs.sh | ||||||
|  |  | ||||||
|     - name: "Push to Nexus" |     - name: "Push to Nexus" | ||||||
|       stage: release |       stage: release | ||||||
|  |       install: skip | ||||||
|       before_script: bash scripts/travis/verify_release_tag.sh |       before_script: bash scripts/travis/verify_release_tag.sh | ||||||
|       script: travis_wait 40 bash scripts/travis/maven_release.sh |       script: travis_wait 40 bash scripts/travis/maven_release.sh | ||||||
|  |  | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|    <parent> |    <parent> | ||||||
|       <groupId>org.alfresco</groupId> |       <groupId>org.alfresco</groupId> | ||||||
|       <artifactId>alfresco-community-repo-amps</artifactId> |       <artifactId>alfresco-community-repo-amps</artifactId> | ||||||
|       <version>14.146-SNAPSHOT</version> |       <version>23.1.0.23-SNAPSHOT</version> | ||||||
|    </parent> |    </parent> | ||||||
|  |  | ||||||
|    <modules> |    <modules> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|    <parent> |    <parent> | ||||||
|       <groupId>org.alfresco</groupId> |       <groupId>org.alfresco</groupId> | ||||||
|       <artifactId>alfresco-governance-services-community-parent</artifactId> |       <artifactId>alfresco-governance-services-community-parent</artifactId> | ||||||
|       <version>14.146-SNAPSHOT</version> |       <version>23.1.0.23-SNAPSHOT</version> | ||||||
|    </parent> |    </parent> | ||||||
|  |  | ||||||
|    <modules> |    <modules> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|    <parent> |    <parent> | ||||||
|       <groupId>org.alfresco</groupId> |       <groupId>org.alfresco</groupId> | ||||||
|       <artifactId>alfresco-governance-services-automation-community-repo</artifactId> |       <artifactId>alfresco-governance-services-automation-community-repo</artifactId> | ||||||
|       <version>14.146-SNAPSHOT</version> |       <version>23.1.0.23-SNAPSHOT</version> | ||||||
|    </parent> |    </parent> | ||||||
|  |  | ||||||
|    <build> |    <build> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|    <parent> |    <parent> | ||||||
|       <groupId>org.alfresco</groupId> |       <groupId>org.alfresco</groupId> | ||||||
|       <artifactId>alfresco-governance-services-community-parent</artifactId> |       <artifactId>alfresco-governance-services-community-parent</artifactId> | ||||||
|       <version>14.146-SNAPSHOT</version> |       <version>23.1.0.23-SNAPSHOT</version> | ||||||
|    </parent> |    </parent> | ||||||
|  |  | ||||||
|    <modules> |    <modules> | ||||||
|   | |||||||
| @@ -1,4 +1,3 @@ | |||||||
| TRANSFORMERS_TAG=2.5.7 |  | ||||||
| SOLR6_TAG=2.0.3 | SOLR6_TAG=2.0.3 | ||||||
| POSTGRES_TAG=13.3 | POSTGRES_TAG=13.3 | ||||||
| ACTIVEMQ_TAG=5.16.1 | ACTIVEMQ_TAG=5.16.1 | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
|    <parent> |    <parent> | ||||||
|       <groupId>org.alfresco</groupId> |       <groupId>org.alfresco</groupId> | ||||||
|       <artifactId>alfresco-governance-services-community-repo-parent</artifactId> |       <artifactId>alfresco-governance-services-community-repo-parent</artifactId> | ||||||
|       <version>14.146-SNAPSHOT</version> |       <version>23.1.0.23-SNAPSHOT</version> | ||||||
|    </parent> |    </parent> | ||||||
|  |  | ||||||
|    <properties> |    <properties> | ||||||
| @@ -361,6 +361,12 @@ | |||||||
|                <integrationTestSuite>**/AllTestSuitePt3.class</integrationTestSuite> |                <integrationTestSuite>**/AllTestSuitePt3.class</integrationTestSuite> | ||||||
|            </properties> |            </properties> | ||||||
|        </profile> |        </profile> | ||||||
|  |        <profile> | ||||||
|  |            <id>agsAllTestSuitePt4</id> | ||||||
|  |            <properties> | ||||||
|  |                <integrationTestSuite>**/AllTestSuitePt4.class</integrationTestSuite> | ||||||
|  |            </properties> | ||||||
|  |        </profile> | ||||||
|  |  | ||||||
|       <profile> |       <profile> | ||||||
|          <id>use-mysql</id> |          <id>use-mysql</id> | ||||||
|   | |||||||
| @@ -43,19 +43,16 @@ import org.junit.runner.RunWith; | |||||||
| @ClassnameFilters({ | @ClassnameFilters({ | ||||||
|  |  | ||||||
|     // The following packages are run by Pt1. IF YOU CHANGE THIS LIST ALSO CHANGE IT IN AllTestSuitePt3. |     // The following packages are run by Pt1. IF YOU CHANGE THIS LIST ALSO CHANGE IT IN AllTestSuitePt3. | ||||||
|     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.action\\..*Test", |  | ||||||
|     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.capabilities\\..*Test", |  | ||||||
|     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.jscript\\..*Test", |  | ||||||
|     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.security\\..*Test", |  | ||||||
|     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.service\\..*Test", |     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.service\\..*Test", | ||||||
|     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.webscript\\..*Test", |     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.jscript\\..*Test", | ||||||
|     // There appears to be some common setup taking place in the first 2 packages, which is why all legacy tests are |  | ||||||
|     // together even though they take a little longer to run that way. |  | ||||||
|  |  | ||||||
|     // Exclude all UnitTests |     // Exclude all UnitTests | ||||||
|     "!.*UnitTest", |     "!.*UnitTest", | ||||||
|  |  | ||||||
|     // Put the test classes you want to exclude here |     // Put the test classes you want to exclude here | ||||||
|  |     "!.*DispositionServiceImplTest", | ||||||
|  |     "!.*FilePlanPermissionServiceImplTest", | ||||||
|  |     // above 2 tests from service package require setup from FileReportActionTest so they've been moved to part 4 | ||||||
|     "!.*DataLoadSystemTest", |     "!.*DataLoadSystemTest", | ||||||
|     "!.*RM2072Test", |     "!.*RM2072Test", | ||||||
|     "!.*RM2190Test", |     "!.*RM2190Test", | ||||||
|   | |||||||
| @@ -0,0 +1,78 @@ | |||||||
|  | /* | ||||||
|  |  * #%L | ||||||
|  |  * Alfresco Records Management Module | ||||||
|  |  * %% | ||||||
|  |  * Copyright (C) 2005 - 2022 Alfresco Software Limited | ||||||
|  |  * %% | ||||||
|  |  * This file is part of the Alfresco software. | ||||||
|  |  * - | ||||||
|  |  * If the software was purchased under a paid Alfresco license, the terms of | ||||||
|  |  * the paid license agreement will prevail.  Otherwise, the software is | ||||||
|  |  * provided under the following open source license terms: | ||||||
|  |  * - | ||||||
|  |  * Alfresco is free software: you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU Lesser General Public License as published by | ||||||
|  |  * the Free Software Foundation, either version 3 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * - | ||||||
|  |  * Alfresco is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU Lesser General Public License for more details. | ||||||
|  |  * - | ||||||
|  |  * You should have received a copy of the GNU Lesser General Public License | ||||||
|  |  * along with Alfresco. If not, see <http://www.gnu.org/licenses/>. | ||||||
|  |  * #L% | ||||||
|  |  */ | ||||||
|  | package org.alfresco.module.org_alfresco_module_rm.test; | ||||||
|  |  | ||||||
|  | import org.junit.extensions.cpsuite.ClasspathSuite; | ||||||
|  | import org.junit.extensions.cpsuite.ClasspathSuite.ClassnameFilters; | ||||||
|  | import org.junit.extensions.cpsuite.ClasspathSuite.SuiteTypes; | ||||||
|  | import org.junit.extensions.cpsuite.SuiteType; | ||||||
|  | import org.junit.runner.RunWith; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Convenience test suite that runs all the tests. THIS HAS BEEN SPLIT INTO PARTS SO THAT THE BUILD TIME IS REDUCED. | ||||||
|  |  * | ||||||
|  |  * @author Marcin Strankowski | ||||||
|  |  * @since 2.1 | ||||||
|  |  */ | ||||||
|  | @RunWith(ClasspathSuite.class) | ||||||
|  | @SuiteTypes({SuiteType.TEST_CLASSES, SuiteType.RUN_WITH_CLASSES, SuiteType.JUNIT38_TEST_CLASSES}) | ||||||
|  | @ClassnameFilters({ | ||||||
|  |  | ||||||
|  |     // The following packages are run by Pt1. IF YOU CHANGE THIS LIST ALSO CHANGE IT IN AllTestSuitePt3. | ||||||
|  |     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.action\\..*Test", | ||||||
|  |     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.capabilities\\..*Test", | ||||||
|  |     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.security\\..*Test", | ||||||
|  |     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.webscript\\..*Test", | ||||||
|  |     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.service\\.*DispositionServiceImplTest", | ||||||
|  |     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.service\\.*FilePlanPermissionServiceImplTest", | ||||||
|  |  | ||||||
|  |     // 2 tests from service package are here, they seem to require FileReportActionTest being ran beforehand | ||||||
|  |     // and it would take too much time to run them in 1st test suite | ||||||
|  |  | ||||||
|  |     // Exclude all UnitTests | ||||||
|  |     "!.*UnitTest", | ||||||
|  |  | ||||||
|  |     // Put the test classes you want to exclude here | ||||||
|  |     "!.*DataLoadSystemTest", | ||||||
|  |     "!.*RM2072Test", | ||||||
|  |     "!.*RM2190Test", | ||||||
|  |     "!.*RM981SystemTest", | ||||||
|  |     "!.*RM3993Test", | ||||||
|  |     "!.*RM4163Test", | ||||||
|  |     "!.*RecordsManagementEventServiceImplTest", | ||||||
|  |     "!.*RmRestApiTest", | ||||||
|  |     "!.*NotificationServiceHelperSystemTest", | ||||||
|  |     "!.*RetryingTransactionHelperBaseTest", | ||||||
|  |     "!.*RMCaveatConfigServiceImplTest", | ||||||
|  |     // This test is running successfully locally but not on bamboo (if executed as a single test). | ||||||
|  |     // The problem can be reproduced if the whole test suite is run locally as well. | ||||||
|  |     // Tests should not be dependant on other test classes and should run in any order without any problems. | ||||||
|  |     "!.*EmailMapScriptTest" | ||||||
|  | }) | ||||||
|  | public class AllTestSuitePt4 | ||||||
|  | { | ||||||
|  | } | ||||||
| @@ -3,8 +3,8 @@ | |||||||
| # | # | ||||||
|  |  | ||||||
| # Version label | # Version label | ||||||
| version.major=7 | version.major=23 | ||||||
| version.minor=0 | version.minor=1 | ||||||
| version.revision=0 | version.revision=0 | ||||||
| version.label= | version.label= | ||||||
|  |  | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-governance-services-community-repo-parent</artifactId> |         <artifactId>alfresco-governance-services-community-repo-parent</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <build> |     <build> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo</artifactId> |         <artifactId>alfresco-community-repo</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <modules> |     <modules> | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo-amps</artifactId> |         <artifactId>alfresco-community-repo-amps</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <properties> |     <properties> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|    <parent> |    <parent> | ||||||
|       <groupId>org.alfresco</groupId> |       <groupId>org.alfresco</groupId> | ||||||
|       <artifactId>alfresco-community-repo</artifactId> |       <artifactId>alfresco-community-repo</artifactId> | ||||||
|       <version>14.146-SNAPSHOT</version> |       <version>23.1.0.23-SNAPSHOT</version> | ||||||
|    </parent> |    </parent> | ||||||
|  |  | ||||||
|    <dependencies> |    <dependencies> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo</artifactId> |         <artifactId>alfresco-community-repo</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <properties> |     <properties> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo</artifactId> |         <artifactId>alfresco-community-repo</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <dependencies> |     <dependencies> | ||||||
|   | |||||||
| @@ -9,6 +9,6 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo-packaging</artifactId> |         <artifactId>alfresco-community-repo-packaging</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
| </project> | </project> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo-packaging</artifactId> |         <artifactId>alfresco-community-repo-packaging</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <properties> |     <properties> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo</artifactId> |         <artifactId>alfresco-community-repo</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <modules> |     <modules> | ||||||
|   | |||||||
| @@ -1,4 +1,3 @@ | |||||||
| TRANSFORMERS_TAG=2.5.7 |  | ||||||
| SOLR6_TAG=2.0.3 | SOLR6_TAG=2.0.3 | ||||||
| POSTGRES_TAG=13.3 | POSTGRES_TAG=13.3 | ||||||
| ACTIVEMQ_TAG=5.16.1 | ACTIVEMQ_TAG=5.16.1 | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo-packaging</artifactId> |         <artifactId>alfresco-community-repo-packaging</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <modules> |     <modules> | ||||||
|   | |||||||
| @@ -27,8 +27,11 @@ fi | |||||||
|  |  | ||||||
| echo "Starting ACS stack in ${DOCKER_COMPOSE_PATH}" | echo "Starting ACS stack in ${DOCKER_COMPOSE_PATH}" | ||||||
|  |  | ||||||
|  | TRANSFORMERS_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-core.version -q -DforceStdout) | ||||||
|  | TRANSFORM_ROUTER_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-service.version -q -DforceStdout) | ||||||
|  |  | ||||||
| # .env files are picked up from project directory correctly on docker-compose 1.23.0+ | # .env files are picked up from project directory correctly on docker-compose 1.23.0+ | ||||||
| docker-compose --file "${DOCKER_COMPOSE_PATH}" --project-directory $(dirname "${DOCKER_COMPOSE_PATH}") up -d | TRANSFORMERS_TAG=${TRANSFORMERS_TAG} TRANSFORM_ROUTER_TAG=${TRANSFORM_ROUTER_TAG} docker-compose --file "${DOCKER_COMPOSE_PATH}" --project-directory $(dirname "${DOCKER_COMPOSE_PATH}") up -d | ||||||
|  |  | ||||||
| if [ $? -eq 0 ] | if [ $? -eq 0 ] | ||||||
| then | then | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo-tests</artifactId> |         <artifactId>alfresco-community-repo-tests</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <developers> |     <developers> | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo-tests</artifactId> |         <artifactId>alfresco-community-repo-tests</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <developers> |     <developers> | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo-tests</artifactId> |         <artifactId>alfresco-community-repo-tests</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <developers> |     <developers> | ||||||
|   | |||||||
| @@ -329,9 +329,9 @@ public class IntegrationFullTestsBulk2  extends IntegrationTest | |||||||
|      * 7. User1 deletes the document1 with ftp |      * 7. User1 deletes the document1 with ftp | ||||||
|      * 8. Verify user2 cannot update document1 with cmis |      * 8. Verify user2 cannot update document1 with cmis | ||||||
|      */ |      */ | ||||||
|         @Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL }, expectedExceptions = CmisObjectNotFoundException.class, expectedExceptionsMessageRegExp = ".*Object not found:.*") |     @Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL }, expectedExceptions = CmisObjectNotFoundException.class, expectedExceptionsMessageRegExp = ".*Object not found:.*") | ||||||
|         @TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION, description = "Negative scenarios for update document") |     @TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION, description = "Negative scenarios for update document") | ||||||
|         public void fileUpdateNegativeScenariosTest() throws Exception |     public void fileUpdateNegativeScenariosTest() throws Exception | ||||||
|         { |         { | ||||||
|             STEP("1. Create user1, user2"); |             STEP("1. Create user1, user2"); | ||||||
|         UserModel user1 = dataUser.createRandomTestUser(); |         UserModel user1 = dataUser.createRandomTestUser(); | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo-tests</artifactId> |         <artifactId>alfresco-community-repo-tests</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <developers> |     <developers> | ||||||
|   | |||||||
| @@ -7,9 +7,7 @@ import org.alfresco.utility.Utility; | |||||||
| import org.alfresco.utility.model.FileModel; | import org.alfresco.utility.model.FileModel; | ||||||
| import org.alfresco.utility.model.FolderModel; | import org.alfresco.utility.model.FolderModel; | ||||||
| import org.alfresco.utility.model.SiteModel; | import org.alfresco.utility.model.SiteModel; | ||||||
|  |  | ||||||
| import org.alfresco.utility.model.UserModel; | import org.alfresco.utility.model.UserModel; | ||||||
|  |  | ||||||
| import org.springframework.http.HttpStatus; | import org.springframework.http.HttpStatus; | ||||||
| import org.testng.Assert; | import org.testng.Assert; | ||||||
| import org.testng.annotations.BeforeClass; | import org.testng.annotations.BeforeClass; | ||||||
| @@ -40,17 +38,20 @@ public abstract class RenditionIntegrationTests extends RestTest | |||||||
|         FileModel file = new FileModel(); |         FileModel file = new FileModel(); | ||||||
|         file.setNodeRef(nodeId); |         file.setNodeRef(nodeId); | ||||||
|  |  | ||||||
|         // 1. Create a rendition of the file using RESTAPI |         // 1. Preemptively delete an existing rendition of the file using RESTAPI | ||||||
|  |         restClient.withCoreAPI().usingNode(file).deleteNodeRendition(renditionId); | ||||||
|  |  | ||||||
|  |         // 2. Create a rendition of the file using RESTAPI | ||||||
|         restClient.withCoreAPI().usingNode(file).createNodeRendition(renditionId); |         restClient.withCoreAPI().usingNode(file).createNodeRendition(renditionId); | ||||||
|         Assert.assertEquals(Integer.valueOf(restClient.getStatusCode()).intValue(), HttpStatus.ACCEPTED.value(), |         Assert.assertEquals(Integer.valueOf(restClient.getStatusCode()).intValue(), HttpStatus.ACCEPTED.value(), | ||||||
|                 "Failed to submit a request for rendition. [" + fileName+ ", " + renditionId+"] [source file, rendition ID]. "); |                 "Failed to submit a request for rendition. [" + fileName+ ", " + renditionId+"] [source file, rendition ID]. "); | ||||||
|  |  | ||||||
|         // 2. Verify that a rendition of the file is created and has content using RESTAPI |         // 3. Verify that a rendition of the file is created and has content using RESTAPI | ||||||
|         RestResponse restResponse = restClient.withCoreAPI().usingNode(file).getNodeRenditionContentUntilIsCreated(renditionId); |         RestResponse restResponse = restClient.withCoreAPI().usingNode(file).getNodeRenditionContentUntilIsCreated(renditionId); | ||||||
|         Assert.assertEquals(Integer.valueOf(restClient.getStatusCode()).intValue(), HttpStatus.OK.value(), |         Assert.assertEquals(Integer.valueOf(restClient.getStatusCode()).intValue(), HttpStatus.OK.value(), | ||||||
|                 "Failed to produce rendition. [" + fileName+ ", " + renditionId+"] [source file, rendition ID] "); |                 "Failed to produce rendition. [" + fileName+ ", " + renditionId+"] [source file, rendition ID] "); | ||||||
|  |  | ||||||
|         // 3. Check the returned content type |         // 4. Check the returned content type | ||||||
|         Assert.assertEquals(restClient.getResponseHeaders().getValue("Content-Type"), expectedMimeType+";charset=UTF-8", |         Assert.assertEquals(restClient.getResponseHeaders().getValue("Content-Type"), expectedMimeType+";charset=UTF-8", | ||||||
|                 "Rendition was created but it has the wrong Content-Type. [" + fileName+ ", " + renditionId + "] [source file, rendition ID]"); |                 "Rendition was created but it has the wrong Content-Type. [" + fileName+ ", " + renditionId + "] [source file, rendition ID]"); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo-tests</artifactId> |         <artifactId>alfresco-community-repo-tests</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <developers> |     <developers> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo-packaging</artifactId> |         <artifactId>alfresco-community-repo-packaging</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <properties> |     <properties> | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								pom.xml
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | |||||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||||
|     <modelVersion>4.0.0</modelVersion> |     <modelVersion>4.0.0</modelVersion> | ||||||
|     <artifactId>alfresco-community-repo</artifactId> |     <artifactId>alfresco-community-repo</artifactId> | ||||||
|     <version>14.146-SNAPSHOT</version>  |     <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     <packaging>pom</packaging> |     <packaging>pom</packaging> | ||||||
|     <name>Alfresco Community Repo Parent</name> |     <name>Alfresco Community Repo Parent</name> | ||||||
|  |  | ||||||
| @@ -23,11 +23,11 @@ | |||||||
|     </modules> |     </modules> | ||||||
|  |  | ||||||
|     <properties> |     <properties> | ||||||
|         <acs.version.major>7</acs.version.major> |         <acs.version.major>23</acs.version.major> | ||||||
|         <acs.version.minor>2</acs.version.minor> |         <acs.version.minor>1</acs.version.minor> | ||||||
|         <acs.version.revision>0</acs.version.revision> |         <acs.version.revision>0</acs.version.revision> | ||||||
|         <acs.version.label /> |         <acs.version.label /> | ||||||
|         <amp.min.version>${acs.version.major}.0.0</amp.min.version> |         <amp.min.version>${acs.version.major}.1.0</amp.min.version> | ||||||
|  |  | ||||||
|         <version.edition>Community</version.edition> |         <version.edition>Community</version.edition> | ||||||
|         <licenseName>community</licenseName> |         <licenseName>community</licenseName> | ||||||
| @@ -51,17 +51,18 @@ | |||||||
|         <dependency.alfresco-log-sanitizer.version>0.2</dependency.alfresco-log-sanitizer.version> |         <dependency.alfresco-log-sanitizer.version>0.2</dependency.alfresco-log-sanitizer.version> | ||||||
|         <dependency.activiti-engine.version>5.23.0</dependency.activiti-engine.version> |         <dependency.activiti-engine.version>5.23.0</dependency.activiti-engine.version> | ||||||
|         <dependency.activiti.version>5.23.0</dependency.activiti.version> |         <dependency.activiti.version>5.23.0</dependency.activiti.version> | ||||||
|         <dependency.alfresco-transform-model.version>1.4.15</dependency.alfresco-transform-model.version> |         <dependency.alfresco-transform-service.version>1.5.3</dependency.alfresco-transform-service.version> | ||||||
|  |         <dependency.alfresco-transform-core.version>2.6.0</dependency.alfresco-transform-core.version> | ||||||
|         <dependency.alfresco-greenmail.version>6.2</dependency.alfresco-greenmail.version> |         <dependency.alfresco-greenmail.version>6.2</dependency.alfresco-greenmail.version> | ||||||
|         <dependency.acs-event-model.version>0.0.13</dependency.acs-event-model.version> |         <dependency.acs-event-model.version>0.0.13</dependency.acs-event-model.version> | ||||||
|  |  | ||||||
|         <dependency.spring.version>5.3.15</dependency.spring.version> |         <dependency.spring.version>5.3.18</dependency.spring.version> | ||||||
|         <dependency.antlr.version>3.5.2</dependency.antlr.version> |         <dependency.antlr.version>3.5.2</dependency.antlr.version> | ||||||
|         <dependency.jackson.version>2.13.1</dependency.jackson.version> |         <dependency.jackson.version>2.13.1</dependency.jackson.version> | ||||||
|         <dependency.jackson-databind.version>2.13.1</dependency.jackson-databind.version> |         <dependency.jackson-databind.version>2.13.1</dependency.jackson-databind.version> | ||||||
|         <dependency.cxf.version>3.5.0</dependency.cxf.version> |         <dependency.cxf.version>3.5.0</dependency.cxf.version> | ||||||
|         <dependency.opencmis.version>1.0.0</dependency.opencmis.version> |         <dependency.opencmis.version>1.0.0</dependency.opencmis.version> | ||||||
|         <dependency.webscripts.version>8.28</dependency.webscripts.version> |         <dependency.webscripts.version>8.29</dependency.webscripts.version> | ||||||
|         <dependency.bouncycastle.version>1.70</dependency.bouncycastle.version> |         <dependency.bouncycastle.version>1.70</dependency.bouncycastle.version> | ||||||
|         <dependency.mockito-core.version>3.11.2</dependency.mockito-core.version> |         <dependency.mockito-core.version>3.11.2</dependency.mockito-core.version> | ||||||
|         <dependency.org-json.version>20211205</dependency.org-json.version> |         <dependency.org-json.version>20211205</dependency.org-json.version> | ||||||
| @@ -118,7 +119,7 @@ | |||||||
|         <dependency.mariadb.version>2.7.4</dependency.mariadb.version> |         <dependency.mariadb.version>2.7.4</dependency.mariadb.version> | ||||||
|         <dependency.tas-utility.version>3.0.47</dependency.tas-utility.version> |         <dependency.tas-utility.version>3.0.47</dependency.tas-utility.version> | ||||||
|         <dependency.rest-assured.version>3.3.0</dependency.rest-assured.version> |         <dependency.rest-assured.version>3.3.0</dependency.rest-assured.version> | ||||||
|         <dependency.tas-restapi.version>1.79</dependency.tas-restapi.version> |         <dependency.tas-restapi.version>1.80</dependency.tas-restapi.version> | ||||||
|         <dependency.tas-cmis.version>1.31</dependency.tas-cmis.version> |         <dependency.tas-cmis.version>1.31</dependency.tas-cmis.version> | ||||||
|         <dependency.tas-email.version>1.8</dependency.tas-email.version> |         <dependency.tas-email.version>1.8</dependency.tas-email.version> | ||||||
|         <dependency.tas-webdav.version>1.6</dependency.tas-webdav.version> |         <dependency.tas-webdav.version>1.6</dependency.tas-webdav.version> | ||||||
| @@ -887,7 +888,7 @@ | |||||||
|                 <plugin> |                 <plugin> | ||||||
|                     <groupId>io.fabric8</groupId> |                     <groupId>io.fabric8</groupId> | ||||||
|                     <artifactId>docker-maven-plugin</artifactId> |                     <artifactId>docker-maven-plugin</artifactId> | ||||||
|                     <version>0.38.0</version> |                     <version>0.39.1</version> | ||||||
|                 </plugin> |                 </plugin> | ||||||
|                 <plugin> |                 <plugin> | ||||||
|                     <artifactId>maven-surefire-plugin</artifactId> |                     <artifactId>maven-surefire-plugin</artifactId> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo</artifactId> |         <artifactId>alfresco-community-repo</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <dependencies> |     <dependencies> | ||||||
|   | |||||||
| @@ -406,82 +406,82 @@ public class WebDAVMethodTest | |||||||
|     } |     } | ||||||
|      |      | ||||||
|     /* MNT-10555 Test */ |     /* MNT-10555 Test */ | ||||||
|     @Category(IntermittentlyFailingTests.class) // ACS-959 | //    @Category(IntermittentlyFailingTests.class) // ACS-959 | ||||||
|     @Test | //    @Test | ||||||
|     public void expiryLockTest() | //    public void expiryLockTest() | ||||||
|     { | //    { | ||||||
|         // ACE-4347 extra debug logging just for this test so we can see what's going on when it next fails | //        // ACE-4347 extra debug logging just for this test so we can see what's going on when it next fails | ||||||
|         Level repoWebdavSaveLogLevel = Logger.getLogger("org.alfresco.repo.webdav").getLevel(); | //        Level repoWebdavSaveLogLevel = Logger.getLogger("org.alfresco.repo.webdav").getLevel(); | ||||||
|         Logger.getLogger("org.alfresco.repo.webdav").setLevel(Level.ALL); | //        Logger.getLogger("org.alfresco.repo.webdav").setLevel(Level.ALL); | ||||||
|         Level webdavProtocolSaveLogLevel = Logger.getLogger("org.alfresco.webdav.protocol").getLevel(); | //        Level webdavProtocolSaveLogLevel = Logger.getLogger("org.alfresco.webdav.protocol").getLevel(); | ||||||
|         Logger.getLogger("org.alfresco.webdav.protocol").setLevel(Level.ALL); | //        Logger.getLogger("org.alfresco.webdav.protocol").setLevel(Level.ALL); | ||||||
|         try | //        try | ||||||
|         { | //        { | ||||||
|             setUpApplicationContext(); | //            setUpApplicationContext(); | ||||||
|      | // | ||||||
|             req = new MockHttpServletRequest(); | //            req = new MockHttpServletRequest(); | ||||||
|             resp = new MockHttpServletResponse(); | //            resp = new MockHttpServletResponse(); | ||||||
|      | // | ||||||
|             String rootPath = "/app:company_home"; | //            String rootPath = "/app:company_home"; | ||||||
|             StoreRef storeRef = new StoreRef("workspace://SpacesStore"); | //            StoreRef storeRef = new StoreRef("workspace://SpacesStore"); | ||||||
|             NodeRef storeRootNodeRef = nodeService.getRootNode(storeRef); | //            NodeRef storeRootNodeRef = nodeService.getRootNode(storeRef); | ||||||
|             List<NodeRef> nodeRefs = searchService.selectNodes(storeRootNodeRef, rootPath, null, namespaceService, false); | //            List<NodeRef> nodeRefs = searchService.selectNodes(storeRootNodeRef, rootPath, null, namespaceService, false); | ||||||
|             NodeRef defaultRootNode = nodeRefs.get(0); | //            NodeRef defaultRootNode = nodeRefs.get(0); | ||||||
|      | // | ||||||
|             NodeRef rootNodeRef = tenantService.getRootNode(nodeService, searchService, namespaceService, rootPath, defaultRootNode); | //            NodeRef rootNodeRef = tenantService.getRootNode(nodeService, searchService, namespaceService, rootPath, defaultRootNode); | ||||||
|      | // | ||||||
|             // Create test folder. | //            // Create test folder. | ||||||
|             NodeRef folderNodeRef = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CONTAINS, QName.createQName("test"), ContentModel.TYPE_FOLDER, | //            NodeRef folderNodeRef = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CONTAINS, QName.createQName("test"), ContentModel.TYPE_FOLDER, | ||||||
|                     Collections.<QName, Serializable> singletonMap(ContentModel.PROP_NAME, "WebDavMethodExpiryLockTest" + System.currentTimeMillis())).getChildRef(); | //                    Collections.<QName, Serializable> singletonMap(ContentModel.PROP_NAME, "WebDavMethodExpiryLockTest" + System.currentTimeMillis())).getChildRef(); | ||||||
|      | // | ||||||
|             // Create test document. | //            // Create test document. | ||||||
|             NodeRef nodeRef = nodeService.createNode(folderNodeRef, ContentModel.ASSOC_CONTAINS, QName.createQName("test"), ContentModel.TYPE_CONTENT, | //            NodeRef nodeRef = nodeService.createNode(folderNodeRef, ContentModel.ASSOC_CONTAINS, QName.createQName("test"), ContentModel.TYPE_CONTENT, | ||||||
|                     Collections.<QName, Serializable> singletonMap(ContentModel.PROP_NAME, "text.txt")).getChildRef(); | //                    Collections.<QName, Serializable> singletonMap(ContentModel.PROP_NAME, "text.txt")).getChildRef(); | ||||||
|      | // | ||||||
|             lockMethod = new LockMethod(); | //            lockMethod = new LockMethod(); | ||||||
|             lockMethod.createExclusive = true; | //            lockMethod.createExclusive = true; | ||||||
|             lockMethod.m_timeoutDuration = 1; | //            lockMethod.m_timeoutDuration = 1; | ||||||
|             lockMethod.setDetails(req, resp, webDAVHelper, nodeRef); | //            lockMethod.setDetails(req, resp, webDAVHelper, nodeRef); | ||||||
|      | // | ||||||
|             transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Object>() | //            transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Object>() | ||||||
|             { | //            { | ||||||
|                 @Override | //                @Override | ||||||
|                 public Object execute() throws Throwable | //                public Object execute() throws Throwable | ||||||
|                 { | //                { | ||||||
|                     try | //                    try | ||||||
|                 { | //                { | ||||||
|                     // LOCK document. | //                    // LOCK document. | ||||||
|                     lockMethod.executeImpl(); | //                    lockMethod.executeImpl(); | ||||||
|                      | // | ||||||
|                     //wait for the lock to expire up to 5 seconds | //                    //wait for the lock to expire up to 5 seconds | ||||||
|                     int timeout = 5; | //                    int timeout = 5; | ||||||
|                     while( timeout > 0 && !lockMethod.lockInfo.isExpired()) | //                    while( timeout > 0 && !lockMethod.lockInfo.isExpired()) | ||||||
|                     { | //                    { | ||||||
|                         Thread.sleep(1000); | //                        Thread.sleep(1000); | ||||||
|                         timeout--; | //                        timeout--; | ||||||
|                     } | //                    } | ||||||
|                      | // | ||||||
|                     // LOCK against an expired lock. | //                    // LOCK against an expired lock. | ||||||
|                     lockMethod.executeImpl(); | //                    lockMethod.executeImpl(); | ||||||
|                 } | //                } | ||||||
|                 catch (WebDAVServerException e) | //                catch (WebDAVServerException e) | ||||||
|                 { | //                { | ||||||
|                     logger.debug(e); | //                    logger.debug(e); | ||||||
|                     Assert.fail("Document was not locked again, when lock has expired."); | //                    Assert.fail("Document was not locked again, when lock has expired."); | ||||||
|                 } | //                } | ||||||
|                 return null; | //                return null; | ||||||
|                 } | //                } | ||||||
|             }); | //            }); | ||||||
|      | // | ||||||
|             // Remove test folder. | //            // Remove test folder. | ||||||
|             nodeService.deleteNode(folderNodeRef); | //            nodeService.deleteNode(folderNodeRef); | ||||||
|         } | //        } | ||||||
|         finally | //        finally | ||||||
|         { | //        { | ||||||
|             Logger.getLogger("org.alfresco.webdav.protocol").setLevel(webdavProtocolSaveLogLevel); | //            Logger.getLogger("org.alfresco.webdav.protocol").setLevel(webdavProtocolSaveLogLevel); | ||||||
|             Logger.getLogger("org.alfresco.repo.webdav").setLevel(repoWebdavSaveLogLevel); | //            Logger.getLogger("org.alfresco.repo.webdav").setLevel(repoWebdavSaveLogLevel); | ||||||
|         } | //        } | ||||||
|     } | //    } | ||||||
|      |      | ||||||
|     private void assertStatusCode(int expectedStatusCode, String userAgent) |     private void assertStatusCode(int expectedStatusCode, String userAgent) | ||||||
|     { |     { | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|     <parent> |     <parent> | ||||||
|         <groupId>org.alfresco</groupId> |         <groupId>org.alfresco</groupId> | ||||||
|         <artifactId>alfresco-community-repo</artifactId> |         <artifactId>alfresco-community-repo</artifactId> | ||||||
|         <version>14.146-SNAPSHOT</version> |         <version>23.1.0.23-SNAPSHOT</version> | ||||||
|     </parent> |     </parent> | ||||||
|  |  | ||||||
|     <dependencies> |     <dependencies> | ||||||
| @@ -713,7 +713,7 @@ | |||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.alfresco</groupId> |             <groupId>org.alfresco</groupId> | ||||||
|             <artifactId>alfresco-transform-model</artifactId> |             <artifactId>alfresco-transform-model</artifactId> | ||||||
|             <version>${dependency.alfresco-transform-model.version}</version> |             <version>${dependency.alfresco-transform-core.version}</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |  | ||||||
|         <!-- Test dependencies --> |         <!-- Test dependencies --> | ||||||
| @@ -735,7 +735,7 @@ | |||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.alfresco</groupId> |             <groupId>org.alfresco</groupId> | ||||||
|             <artifactId>alfresco-transform-model</artifactId> |             <artifactId>alfresco-transform-model</artifactId> | ||||||
|             <version>${dependency.alfresco-transform-model.version}</version> |             <version>${dependency.alfresco-transform-core.version}</version> | ||||||
|             <classifier>tests</classifier> |             <classifier>tests</classifier> | ||||||
|             <scope>test</scope> |             <scope>test</scope> | ||||||
|         </dependency> |         </dependency> | ||||||
|   | |||||||
| @@ -0,0 +1,93 @@ | |||||||
|  | /* | ||||||
|  |  * #%L | ||||||
|  |  * Alfresco Repository | ||||||
|  |  * %% | ||||||
|  |  * Copyright (C) 2022 Alfresco Software Limited | ||||||
|  |  * %% | ||||||
|  |  * This file is part of the Alfresco software. | ||||||
|  |  * If the software was purchased under a paid Alfresco license, the terms of | ||||||
|  |  * the paid license agreement will prevail.  Otherwise, the software is | ||||||
|  |  * provided under the following open source license terms: | ||||||
|  |  * | ||||||
|  |  * Alfresco is free software: you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU Lesser General Public License as published by | ||||||
|  |  * the Free Software Foundation, either version 3 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * Alfresco is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU Lesser General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU Lesser General Public License | ||||||
|  |  * along with Alfresco. If not, see <http://www.gnu.org/licenses/>. | ||||||
|  |  * #L% | ||||||
|  |  */ | ||||||
|  | package org.alfresco.repo.action; | ||||||
|  |  | ||||||
|  | import java.util.Objects; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Instances of this class are responsible for holding an action id with additional data used to identify the action's | ||||||
|  |  * execution context like: | ||||||
|  |  * <ul> | ||||||
|  |  *     <li>REST API</li> | ||||||
|  |  *     <li>rules execution</li> | ||||||
|  |  *     <li>...</li> | ||||||
|  |  * </ul> | ||||||
|  |  */ | ||||||
|  | public class ActionExecutionContext | ||||||
|  | { | ||||||
|  |     private final String actionId; | ||||||
|  |     private final String executionSource; | ||||||
|  |  | ||||||
|  |     private ActionExecutionContext(String actionId, String executionSource) | ||||||
|  |     { | ||||||
|  |         this.actionId = actionId; | ||||||
|  |         this.executionSource = executionSource; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     String getActionId() | ||||||
|  |     { | ||||||
|  |         return actionId; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     String getExecutionSource() | ||||||
|  |     { | ||||||
|  |         return executionSource; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     boolean isExecutionSourceKnown() | ||||||
|  |     { | ||||||
|  |         return Objects.nonNull(executionSource); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static Builder builder(final String actionId) | ||||||
|  |     { | ||||||
|  |         Objects.requireNonNull(actionId); | ||||||
|  |         return new Builder(actionId); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static class Builder | ||||||
|  |     { | ||||||
|  |         private final String actionId; | ||||||
|  |         private String executionSource; | ||||||
|  |  | ||||||
|  |         private Builder(String actionId) | ||||||
|  |         { | ||||||
|  |             this.actionId = actionId; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public ActionExecutionContext build() | ||||||
|  |         { | ||||||
|  |             return new ActionExecutionContext(actionId, executionSource); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public Builder withExecutionSource(final String executionSource) | ||||||
|  |         { | ||||||
|  |             Objects.requireNonNull(executionSource); | ||||||
|  |             this.executionSource = executionSource; | ||||||
|  |             return this; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -2,7 +2,7 @@ | |||||||
|  * #%L |  * #%L | ||||||
|  * Alfresco Repository |  * Alfresco Repository | ||||||
|  * %% |  * %% | ||||||
|  * Copyright (C) 2005 - 2020 Alfresco Software Limited |  * Copyright (C) 2005 - 2022 Alfresco Software Limited | ||||||
|  * %% |  * %% | ||||||
|  * This file is part of the Alfresco software.  |  * This file is part of the Alfresco software.  | ||||||
|  * If the software was purchased under a paid Alfresco license, the terms of  |  * If the software was purchased under a paid Alfresco license, the terms of  | ||||||
| @@ -33,7 +33,14 @@ import java.util.HashMap; | |||||||
| import java.util.HashSet; | import java.util.HashSet; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  | import java.util.Objects; | ||||||
|  | import java.util.Optional; | ||||||
|  | import java.util.Properties; | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
|  | import java.util.function.Function; | ||||||
|  | import java.util.function.Predicate; | ||||||
|  | import java.util.stream.Collectors; | ||||||
|  | import java.util.stream.Stream; | ||||||
|  |  | ||||||
| import org.alfresco.model.ContentModel; | import org.alfresco.model.ContentModel; | ||||||
| import org.alfresco.repo.action.evaluator.ActionConditionEvaluator; | import org.alfresco.repo.action.evaluator.ActionConditionEvaluator; | ||||||
| @@ -120,6 +127,8 @@ public class ActionServiceImpl implements ActionService, RuntimeActionService, A | |||||||
|     private ActionTrackingService actionTrackingService; |     private ActionTrackingService actionTrackingService; | ||||||
|     private PolicyComponent policyComponent; |     private PolicyComponent policyComponent; | ||||||
|     private ActionServiceMonitor monitor; |     private ActionServiceMonitor monitor; | ||||||
|  |     private Properties configProperties; | ||||||
|  |     private ActionExecutionValidator actionExecutionValidator; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * The asynchronous action execution queues map of name, queue |      * The asynchronous action execution queues map of name, queue | ||||||
| @@ -237,6 +246,16 @@ public class ActionServiceImpl implements ActionService, RuntimeActionService, A | |||||||
|         this.asynchronousActionExecutionQueues = asynchronousActionExecutionQueues; |         this.asynchronousActionExecutionQueues = asynchronousActionExecutionQueues; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void setConfigurationProperties(Properties properties) | ||||||
|  |     { | ||||||
|  |         this.configProperties = properties; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     protected Properties getConfigurationProperties() | ||||||
|  |     { | ||||||
|  |         return configProperties; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * This method registers an {@link AsynchronousActionExecutionQueue} with the {@link ActionService}. |      * This method registers an {@link AsynchronousActionExecutionQueue} with the {@link ActionService}. | ||||||
|      * @param key String |      * @param key String | ||||||
| @@ -256,6 +275,11 @@ public class ActionServiceImpl implements ActionService, RuntimeActionService, A | |||||||
|                     ActionModel.TYPE_ACTION_PARAMETER, new JavaBehaviour(this, "getCopyCallback")); |                     ActionModel.TYPE_ACTION_PARAMETER, new JavaBehaviour(this, "getCopyCallback")); | ||||||
|         this.policyComponent.bindClassBehaviour(QName.createQName(NamespaceService.ALFRESCO_URI, "onCopyComplete"), |         this.policyComponent.bindClassBehaviour(QName.createQName(NamespaceService.ALFRESCO_URI, "onCopyComplete"), | ||||||
|                     ActionModel.TYPE_ACTION_PARAMETER, new JavaBehaviour(this, "onCopyComplete")); |                     ActionModel.TYPE_ACTION_PARAMETER, new JavaBehaviour(this, "onCopyComplete")); | ||||||
|  |         if (configProperties == null) | ||||||
|  |         { | ||||||
|  |             configProperties = applicationContext.getBean("global-properties", Properties.class); | ||||||
|  |         } | ||||||
|  |         actionExecutionValidator = new ActionExecutionValidator(configProperties::getProperty, actionDefinitions::containsKey); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -1871,4 +1895,57 @@ public class ActionServiceImpl implements ActionService, RuntimeActionService, A | |||||||
|         return executer.onLogException(logger,t, message); |         return executer.onLogException(logger,t, message); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public boolean isExposed(ActionExecutionContext actionExecutionContext) | ||||||
|  |     { | ||||||
|  |         return actionExecutionValidator.isExposed(actionExecutionContext); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     static class ActionExecutionValidator | ||||||
|  |     { | ||||||
|  |         private final Function<String, String> config; | ||||||
|  |         private final Predicate<String> isPublic; | ||||||
|  |  | ||||||
|  |         ActionExecutionValidator(Function<String, String> config, Predicate<String> isPublic) | ||||||
|  |         { | ||||||
|  |             this.config = Objects.requireNonNull(config); | ||||||
|  |             this.isPublic = Objects.requireNonNull(isPublic); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         boolean isExposed(ActionExecutionContext actionExecutionContext) | ||||||
|  |         { | ||||||
|  |             Objects.requireNonNull(actionExecutionContext); | ||||||
|  |             return isExposedInConfig(actionExecutionContext).orElseGet(() -> isPublic(actionExecutionContext)); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         private Optional<Boolean> isExposedInConfig(ActionExecutionContext actionExecutionContext) | ||||||
|  |         { | ||||||
|  |             return getConfigKeys(actionExecutionContext). | ||||||
|  |                     map(config). | ||||||
|  |                     filter(Objects::nonNull). | ||||||
|  |                     map(Boolean::parseBoolean). | ||||||
|  |                     findFirst(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         private Boolean isPublic(ActionExecutionContext actionExecutionContext) | ||||||
|  |         { | ||||||
|  |             return isPublic.test(actionExecutionContext.getActionId()); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         private static Stream<String> getConfigKeys(ActionExecutionContext actionExecutionContext) | ||||||
|  |         { | ||||||
|  |             if (actionExecutionContext.isExecutionSourceKnown()) | ||||||
|  |             { | ||||||
|  |                 return Stream.of( | ||||||
|  |                         getConfigKey(actionExecutionContext.getExecutionSource(), actionExecutionContext.getActionId()), | ||||||
|  |                         getConfigKey(actionExecutionContext.getActionId())); | ||||||
|  |             } | ||||||
|  |             return Stream.of(getConfigKey(actionExecutionContext.getActionId())); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         static String getConfigKey(String... parts) | ||||||
|  |         { | ||||||
|  |             return Stream.of(parts).collect(Collectors.joining(".", "org.alfresco.repo.action.", ".exposed")); | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
|  * #%L |  * #%L | ||||||
|  * Alfresco Repository |  * Alfresco Repository | ||||||
|  * %% |  * %% | ||||||
|  * Copyright (C) 2005 - 2016 Alfresco Software Limited |  * Copyright (C) 2005 - 2022 Alfresco Software Limited | ||||||
|  * %% |  * %% | ||||||
|  * This file is part of the Alfresco software.  |  * This file is part of the Alfresco software.  | ||||||
|  * If the software was purchased under a paid Alfresco license, the terms of  |  * If the software was purchased under a paid Alfresco license, the terms of  | ||||||
| @@ -125,4 +125,14 @@ public interface RuntimeActionService | |||||||
|      * @return true if it was handled, false for default handling |      * @return true if it was handled, false for default handling | ||||||
|      */ |      */ | ||||||
|     public boolean onLogException(Action action, Log logger, Throwable t, String message); |     public boolean onLogException(Action action, Log logger, Throwable t, String message); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Allows you to check if an action can be executed/used in a given execution context | ||||||
|  |      * @param actionExecutionContext describes action and its execution context | ||||||
|  |      * @return true if action can be executed, false otherwise | ||||||
|  |      */ | ||||||
|  |     default boolean isExposed(ActionExecutionContext actionExecutionContext) | ||||||
|  |     { | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -91,7 +91,7 @@ public class EventGeneratorQueue implements InitializingBean | |||||||
|             } |             } | ||||||
|             catch (Exception e) |             catch (Exception e) | ||||||
|             { |             { | ||||||
|                 LOGGER.error("Unexpected error while enqueuing maker function for repository event" + e); |                 LOGGER.error("Unexpected error while enqueuing maker function for repository event", e); | ||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| @@ -122,7 +122,7 @@ public class EventGeneratorQueue implements InitializingBean | |||||||
|                         } |                         } | ||||||
|                         catch (Exception e) |                         catch (Exception e) | ||||||
|                         { |                         { | ||||||
|                             LOGGER.error("Unexpected error while dequeuing and sending repository event" + e); |                             LOGGER.error("Unexpected error while dequeuing and sending repository event", e); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|   | |||||||
| @@ -25,27 +25,15 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.repo.security.permissions.impl.acegi; | package org.alfresco.repo.security.permissions.impl.acegi; | ||||||
|  |  | ||||||
| import java.util.ArrayList; |  | ||||||
| import java.util.BitSet; |  | ||||||
| import java.util.Collection; |  | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.HashSet; |  | ||||||
| import java.util.Iterator; |  | ||||||
| import java.util.List; |  | ||||||
| import java.util.Map; |  | ||||||
| import java.util.Set; |  | ||||||
| import java.util.StringTokenizer; |  | ||||||
|  |  | ||||||
| import net.sf.acegisecurity.AccessDeniedException; | import net.sf.acegisecurity.AccessDeniedException; | ||||||
| import net.sf.acegisecurity.Authentication; | import net.sf.acegisecurity.Authentication; | ||||||
| import net.sf.acegisecurity.ConfigAttribute; | import net.sf.acegisecurity.ConfigAttribute; | ||||||
| import net.sf.acegisecurity.ConfigAttributeDefinition; | import net.sf.acegisecurity.ConfigAttributeDefinition; | ||||||
| import net.sf.acegisecurity.afterinvocation.AfterInvocationProvider; | import net.sf.acegisecurity.afterinvocation.AfterInvocationProvider; | ||||||
|  |  | ||||||
| import org.alfresco.opencmis.search.CMISResultSet; | import org.alfresco.opencmis.search.CMISResultSet; | ||||||
|  | import org.alfresco.repo.search.SearchEngineResultSet; | ||||||
| import org.alfresco.repo.search.SimpleResultSetMetaData; | import org.alfresco.repo.search.SimpleResultSetMetaData; | ||||||
| import org.alfresco.repo.search.impl.lucene.PagingLuceneResultSet; | import org.alfresco.repo.search.impl.lucene.PagingLuceneResultSet; | ||||||
| import org.alfresco.repo.search.impl.solr.SolrJSONResultSet; |  | ||||||
| import org.alfresco.repo.search.impl.querymodel.QueryEngineResults; | import org.alfresco.repo.search.impl.querymodel.QueryEngineResults; | ||||||
| import org.alfresco.repo.security.authentication.AuthenticationUtil; | import org.alfresco.repo.security.authentication.AuthenticationUtil; | ||||||
| import org.alfresco.repo.security.permissions.PermissionCheckCollection; | import org.alfresco.repo.security.permissions.PermissionCheckCollection; | ||||||
| @@ -72,6 +60,17 @@ import org.apache.commons.logging.Log; | |||||||
| import org.apache.commons.logging.LogFactory; | import org.apache.commons.logging.LogFactory; | ||||||
| import org.springframework.beans.factory.InitializingBean; | import org.springframework.beans.factory.InitializingBean; | ||||||
|  |  | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.BitSet; | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.HashSet; | ||||||
|  | import java.util.Iterator; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | import java.util.Set; | ||||||
|  | import java.util.StringTokenizer; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Enforce permission after the method call |  * Enforce permission after the method call | ||||||
|  *  |  *  | ||||||
| @@ -276,8 +275,8 @@ public class ACLEntryAfterInvocationProvider implements AfterInvocationProvider, | |||||||
|             { |             { | ||||||
|                 return decide(authentication, object, config, (ChildAssociationRef) returnedObject); |                 return decide(authentication, object, config, (ChildAssociationRef) returnedObject); | ||||||
|             } |             } | ||||||
|             else if (SolrJSONResultSet.class.isAssignableFrom(returnedObject.getClass()) && |             else if (SearchEngineResultSet.class.isAssignableFrom(returnedObject.getClass()) && | ||||||
|                         (!anyDenyDenies || (!postProcessDenies && ((SolrJSONResultSet)returnedObject).getProcessedDenies()))) |                         (!anyDenyDenies || (!postProcessDenies && ((SearchEngineResultSet)returnedObject).getProcessedDenies()))) | ||||||
|             { |             { | ||||||
|                 return returnedObject; |                 return returnedObject; | ||||||
|             } |             } | ||||||
|   | |||||||
| @@ -75,6 +75,9 @@ | |||||||
|         <property name="monitor"> |         <property name="monitor"> | ||||||
|             <ref bean="actionServiceMonitor"/> |             <ref bean="actionServiceMonitor"/> | ||||||
|         </property> |         </property> | ||||||
|  |         <property name="configurationProperties"> | ||||||
|  |             <ref bean="global-properties"/> | ||||||
|  |         </property> | ||||||
|     </bean> |     </bean> | ||||||
|  |  | ||||||
|     <bean id="defaultAsynchronousActionExecutionQueue" class="org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl" init-method="init"> |     <bean id="defaultAsynchronousActionExecutionQueue" class="org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl" init-method="init"> | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
| repository.name=Main Repository | repository.name=Main Repository | ||||||
|  |  | ||||||
| # Schema number | # Schema number | ||||||
| version.schema=16000 | version.schema=17000 | ||||||
|  |  | ||||||
| # Directory configuration | # Directory configuration | ||||||
|  |  | ||||||
|   | |||||||
| @@ -176,6 +176,7 @@ import org.junit.runners.Suite; | |||||||
|     org.alfresco.repo.action.CompositeActionImplTest.class, |     org.alfresco.repo.action.CompositeActionImplTest.class, | ||||||
|     org.alfresco.repo.action.CompositeActionConditionImplTest.class, |     org.alfresco.repo.action.CompositeActionConditionImplTest.class, | ||||||
|     org.alfresco.repo.action.executer.TransformActionExecuterTest.class, |     org.alfresco.repo.action.executer.TransformActionExecuterTest.class, | ||||||
|  |     org.alfresco.repo.action.PrivateActionValidationTest.class, | ||||||
|     org.alfresco.repo.audit.AuditableAnnotationTest.class, |     org.alfresco.repo.audit.AuditableAnnotationTest.class, | ||||||
|     org.alfresco.repo.audit.PropertyAuditFilterTest.class, |     org.alfresco.repo.audit.PropertyAuditFilterTest.class, | ||||||
|     org.alfresco.repo.audit.access.NodeChangeTest.class, |     org.alfresco.repo.audit.access.NodeChangeTest.class, | ||||||
|   | |||||||
| @@ -25,6 +25,9 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.opencmis; | package org.alfresco.opencmis; | ||||||
|  |  | ||||||
|  | import static java.time.Duration.of; | ||||||
|  | import static java.time.temporal.ChronoUnit.MILLIS; | ||||||
|  |  | ||||||
| import java.io.ByteArrayInputStream; | import java.io.ByteArrayInputStream; | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| @@ -61,7 +64,7 @@ import org.alfresco.util.ApplicationContextHelper; | |||||||
| import org.alfresco.util.FileFilterMode.Client; | import org.alfresco.util.FileFilterMode.Client; | ||||||
| import org.alfresco.util.GUID; | import org.alfresco.util.GUID; | ||||||
| import org.alfresco.util.TempFileProvider; | import org.alfresco.util.TempFileProvider; | ||||||
| import org.alfresco.util.testing.category.FrequentlyFailingTests; | import org.alfresco.util.TestHelper; | ||||||
| import org.alfresco.util.testing.category.LuceneTests; | import org.alfresco.util.testing.category.LuceneTests; | ||||||
| import org.aopalliance.intercept.MethodInterceptor; | import org.aopalliance.intercept.MethodInterceptor; | ||||||
| import org.aopalliance.intercept.MethodInvocation; | import org.aopalliance.intercept.MethodInvocation; | ||||||
| @@ -77,6 +80,7 @@ import org.apache.chemistry.opencmis.commons.data.ContentStream; | |||||||
| import org.apache.chemistry.opencmis.commons.enums.BaseTypeId; | import org.apache.chemistry.opencmis.commons.enums.BaseTypeId; | ||||||
| import org.apache.chemistry.opencmis.commons.enums.BindingType; | import org.apache.chemistry.opencmis.commons.enums.BindingType; | ||||||
| import org.apache.chemistry.opencmis.commons.enums.VersioningState; | import org.apache.chemistry.opencmis.commons.enums.VersioningState; | ||||||
|  | import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException; | ||||||
| import org.apache.chemistry.opencmis.commons.exceptions.CmisStorageException; | import org.apache.chemistry.opencmis.commons.exceptions.CmisStorageException; | ||||||
| import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl; | import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl; | ||||||
| import org.apache.chemistry.opencmis.commons.impl.server.AbstractServiceFactory; | import org.apache.chemistry.opencmis.commons.impl.server.AbstractServiceFactory; | ||||||
| @@ -87,6 +91,7 @@ import org.apache.chemistry.opencmis.server.shared.TempStoreOutputStreamFactory; | |||||||
| import org.junit.experimental.categories.Category; | import org.junit.experimental.categories.Category; | ||||||
| import org.springframework.aop.framework.ProxyFactory; | import org.springframework.aop.framework.ProxyFactory; | ||||||
| import org.springframework.context.ApplicationContext; | import org.springframework.context.ApplicationContext; | ||||||
|  | import org.springframework.dao.ConcurrencyFailureException; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Tests basic local CMIS interaction |  * Tests basic local CMIS interaction | ||||||
| @@ -467,7 +472,6 @@ public class OpenCmisLocalTest extends TestCase | |||||||
|      * This test would have fit better within CheckOutCheckInServiceImplTest but |      * This test would have fit better within CheckOutCheckInServiceImplTest but | ||||||
|      * was added here to make use of existing methods |      * was added here to make use of existing methods | ||||||
|      */ |      */ | ||||||
|     @Category(FrequentlyFailingTests.class) // ACS-962 |  | ||||||
|     public void testCancelCheckoutWhileInCheckedOutState() |     public void testCancelCheckoutWhileInCheckedOutState() | ||||||
|     { |     { | ||||||
|         ServiceRegistry serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY); |         ServiceRegistry serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY); | ||||||
| @@ -484,7 +488,7 @@ public class OpenCmisLocalTest extends TestCase | |||||||
|  |  | ||||||
|         // Set file properties |         // Set file properties | ||||||
|         String docname = "myDoc-" + GUID.generate() + ".txt"; |         String docname = "myDoc-" + GUID.generate() + ".txt"; | ||||||
|         Map<String, String> props = new HashMap<String, String>(); |         Map<String, String> props = new HashMap<>(); | ||||||
|         { |         { | ||||||
|             props.put(PropertyIds.OBJECT_TYPE_ID, BaseTypeId.CMIS_DOCUMENT.value()); |             props.put(PropertyIds.OBJECT_TYPE_ID, BaseTypeId.CMIS_DOCUMENT.value()); | ||||||
|             props.put(PropertyIds.NAME, docname); |             props.put(PropertyIds.NAME, docname); | ||||||
| @@ -501,7 +505,9 @@ public class OpenCmisLocalTest extends TestCase | |||||||
|         NodeRef doc1WorkingCopy = cociService.getWorkingCopy(doc1NodeRef); |         NodeRef doc1WorkingCopy = cociService.getWorkingCopy(doc1NodeRef); | ||||||
|  |  | ||||||
|         /* Cancel Checkout */ |         /* Cancel Checkout */ | ||||||
|         cociService.cancelCheckout(doc1WorkingCopy); |         TestHelper.waitForMethodToFinish(of(100, MILLIS), () -> | ||||||
|  |                 cociService.cancelCheckout(doc1WorkingCopy), | ||||||
|  |                 CmisRuntimeException.class, ConcurrencyFailureException.class); | ||||||
|  |  | ||||||
|         /* Check if both the working copy and the document were deleted */ |         /* Check if both the working copy and the document were deleted */ | ||||||
|         NodeService nodeService = serviceRegistry.getNodeService(); |         NodeService nodeService = serviceRegistry.getNodeService(); | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
|  * #%L |  * #%L | ||||||
|  * Alfresco Repository |  * Alfresco Repository | ||||||
|  * %% |  * %% | ||||||
|  * Copyright (C) 2005 - 2016 Alfresco Software Limited |  * Copyright (C) 2005 - 2022 Alfresco Software Limited | ||||||
|  * %% |  * %% | ||||||
|  * This file is part of the Alfresco software.  |  * This file is part of the Alfresco software.  | ||||||
|  * If the software was purchased under a paid Alfresco license, the terms of  |  * If the software was purchased under a paid Alfresco license, the terms of  | ||||||
| @@ -25,28 +25,27 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.repo.action; | package org.alfresco.repo.action; | ||||||
|  |  | ||||||
|  | import static org.alfresco.repo.action.ActionExecutionContext.builder; | ||||||
|  |  | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| import java.lang.reflect.Field; | import java.lang.reflect.Field; | ||||||
| import java.util.ArrayList; |  | ||||||
| import java.util.Arrays; |  | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  | import java.util.Properties; | ||||||
|  |  | ||||||
| import org.alfresco.model.ContentModel; | import org.alfresco.model.ContentModel; | ||||||
| import org.alfresco.repo.action.evaluator.ComparePropertyValueEvaluator; | import org.alfresco.repo.action.evaluator.ComparePropertyValueEvaluator; | ||||||
| import org.alfresco.repo.action.evaluator.InCategoryEvaluator; | import org.alfresco.repo.action.evaluator.InCategoryEvaluator; | ||||||
| import org.alfresco.repo.action.evaluator.NoConditionEvaluator; | import org.alfresco.repo.action.evaluator.NoConditionEvaluator; | ||||||
| import org.alfresco.repo.action.evaluator.compare.ComparePropertyValueOperation; | import org.alfresco.repo.action.evaluator.compare.ComparePropertyValueOperation; | ||||||
| import org.alfresco.repo.action.executer.ActionExecuter; |  | ||||||
| import org.alfresco.repo.action.executer.ActionExecuterAbstractBase; | import org.alfresco.repo.action.executer.ActionExecuterAbstractBase; | ||||||
| import org.alfresco.repo.action.executer.AddFeaturesActionExecuter; | import org.alfresco.repo.action.executer.AddFeaturesActionExecuter; | ||||||
| import org.alfresco.repo.action.executer.CheckInActionExecuter; | import org.alfresco.repo.action.executer.CheckInActionExecuter; | ||||||
| import org.alfresco.repo.action.executer.CheckOutActionExecuter; | import org.alfresco.repo.action.executer.CheckOutActionExecuter; | ||||||
| import org.alfresco.repo.action.executer.CompositeActionExecuter; | import org.alfresco.repo.action.executer.CompositeActionExecuter; | ||||||
| import org.alfresco.repo.action.executer.MoveActionExecuter; | import org.alfresco.repo.action.executer.MoveActionExecuter; | ||||||
| import org.alfresco.repo.action.executer.ScriptActionExecuter; |  | ||||||
| import org.alfresco.repo.content.MimetypeMap; | import org.alfresco.repo.content.MimetypeMap; | ||||||
| import org.alfresco.repo.security.authentication.AuthenticationUtil; | import org.alfresco.repo.security.authentication.AuthenticationUtil; | ||||||
| import org.alfresco.repo.transaction.RetryingTransactionHelper; | import org.alfresco.repo.transaction.RetryingTransactionHelper; | ||||||
| @@ -65,19 +64,14 @@ import org.alfresco.service.cmr.action.CompositeActionCondition; | |||||||
| import org.alfresco.service.cmr.action.ParameterDefinition; | import org.alfresco.service.cmr.action.ParameterDefinition; | ||||||
| import org.alfresco.service.cmr.coci.CheckOutCheckInService; | import org.alfresco.service.cmr.coci.CheckOutCheckInService; | ||||||
| import org.alfresco.service.cmr.repository.ContentData; | import org.alfresco.service.cmr.repository.ContentData; | ||||||
| import org.alfresco.service.cmr.repository.ContentWriter; |  | ||||||
| import org.alfresco.service.cmr.repository.NodeRef; | import org.alfresco.service.cmr.repository.NodeRef; | ||||||
| import org.alfresco.service.cmr.repository.NodeService; | import org.alfresco.service.cmr.repository.NodeService; | ||||||
| import org.alfresco.service.cmr.security.PermissionService; | import org.alfresco.service.cmr.security.PermissionService; | ||||||
| import org.alfresco.service.cmr.security.PersonService; |  | ||||||
| import org.alfresco.service.namespace.NamespaceService; |  | ||||||
| import org.alfresco.service.namespace.QName; | import org.alfresco.service.namespace.QName; | ||||||
| import org.alfresco.service.transaction.TransactionService; | import org.alfresco.service.transaction.TransactionService; | ||||||
| import org.alfresco.test_category.BaseSpringTestsCategory; | import org.alfresco.test_category.BaseSpringTestsCategory; | ||||||
| import org.alfresco.util.ApplicationContextHelper; |  | ||||||
| import org.alfresco.util.BaseAlfrescoSpringTest; | import org.alfresco.util.BaseAlfrescoSpringTest; | ||||||
| import org.alfresco.util.GUID; | import org.alfresco.util.GUID; | ||||||
| import org.alfresco.util.PropertyMap; |  | ||||||
| import org.junit.Before; | import org.junit.Before; | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| import org.junit.experimental.categories.Category; | import org.junit.experimental.categories.Category; | ||||||
| @@ -103,13 +97,18 @@ public class ActionServiceImplTest extends BaseAlfrescoSpringTest | |||||||
|     private NodeRef nodeRef; |     private NodeRef nodeRef; | ||||||
|     private NodeRef folder; |     private NodeRef folder; | ||||||
|     private RetryingTransactionHelper transactionHelper; |     private RetryingTransactionHelper transactionHelper; | ||||||
|  |     private Properties globalConfig; | ||||||
|  |     private RuntimeActionService runtimeActionService; | ||||||
|  |  | ||||||
|      |      | ||||||
|     @Before |     @Before | ||||||
|     public void before() throws Exception |     public void before() throws Exception | ||||||
|     { |     { | ||||||
|         super.before(); |         super.before(); | ||||||
|  |  | ||||||
|         this.transactionHelper = (RetryingTransactionHelper)this.applicationContext.getBean("retryingTransactionHelper"); |         this.transactionHelper = applicationContext.getBean("retryingTransactionHelper", RetryingTransactionHelper.class); | ||||||
|  |         this.globalConfig = applicationContext.getBean("global-properties", Properties.class); | ||||||
|  |         this.runtimeActionService = this.applicationContext.getBean("actionService", RuntimeActionService.class); | ||||||
|  |  | ||||||
|         // Create the node used for tests |         // Create the node used for tests | ||||||
|         this.nodeRef = this.nodeService.createNode( |         this.nodeRef = this.nodeService.createNode( | ||||||
| @@ -1296,6 +1295,89 @@ public class ActionServiceImplTest extends BaseAlfrescoSpringTest | |||||||
|        assertEquals(null, action.getExecutionFailureMessage()); |        assertEquals(null, action.getExecutionFailureMessage()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testActionExposureBasedOnConfiguration() | ||||||
|  |     { | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.public-test-action.exposed"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.source.public-test-action.exposed"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.unknown.public-test-action.exposed"); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("public-test-action").build())); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("public-test-action").withExecutionSource("source").build())); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("public-test-action").withExecutionSource("unknown").build())); | ||||||
|  |  | ||||||
|  |         globalConfig.setProperty("org.alfresco.repo.action.public-test-action.exposed", "true"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.source.public-test-action.exposed"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.unknown.public-test-action.exposed"); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("public-test-action").build())); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("public-test-action").withExecutionSource("source").build())); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("public-test-action").withExecutionSource("unknown").build())); | ||||||
|  |  | ||||||
|  |         globalConfig.setProperty("org.alfresco.repo.action.public-test-action.exposed", "false"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.source.public-test-action.exposed"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.unknown.public-test-action.exposed"); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("public-test-action").build())); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("public-test-action").withExecutionSource("source").build())); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("public-test-action").withExecutionSource("unknown").build())); | ||||||
|  |  | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.public-test-action.exposed"); | ||||||
|  |         globalConfig.setProperty("org.alfresco.repo.action.source.public-test-action.exposed", "true"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.unknown.public-test-action.exposed"); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("public-test-action").build())); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("public-test-action").withExecutionSource("source").build())); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("public-test-action").withExecutionSource("unknown").build())); | ||||||
|  |  | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.public-test-action.exposed"); | ||||||
|  |         globalConfig.setProperty("org.alfresco.repo.action.source.public-test-action.exposed", "false"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.unknown.public-test-action.exposed"); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("public-test-action").build())); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("public-test-action").withExecutionSource("source").build())); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("public-test-action").withExecutionSource("unknown").build())); | ||||||
|  |  | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.private-test-action.exposed"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.source.private-test-action.exposed"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.unknown.private-test-action.exposed"); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("private-test-action").build())); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("private-test-action").withExecutionSource("source").build())); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("private-test-action").withExecutionSource("unknown").build())); | ||||||
|  |  | ||||||
|  |         globalConfig.setProperty("org.alfresco.repo.action.private-test-action.exposed", "true"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.source.private-test-action.exposed"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.unknown.private-test-action.exposed"); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("private-test-action").build())); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("private-test-action").withExecutionSource("source").build())); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("private-test-action").withExecutionSource("unknown").build())); | ||||||
|  |  | ||||||
|  |         globalConfig.setProperty("org.alfresco.repo.action.private-test-action.exposed", "false"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.source.private-test-action.exposed"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.unknown.private-test-action.exposed"); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("private-test-action").build())); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("private-test-action").withExecutionSource("source").build())); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("private-test-action").withExecutionSource("unknown").build())); | ||||||
|  |  | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.private-test-action.exposed"); | ||||||
|  |         globalConfig.setProperty("org.alfresco.repo.action.source.private-test-action.exposed", "true"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.unknown.private-test-action.exposed"); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("private-test-action").build())); | ||||||
|  |         assertTrue(runtimeActionService.isExposed(builder("private-test-action").withExecutionSource("source").build())); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("private-test-action").withExecutionSource("unknown").build())); | ||||||
|  |  | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.private-test-action.exposed"); | ||||||
|  |         globalConfig.setProperty("org.alfresco.repo.action.source.private-test-action.exposed", "false"); | ||||||
|  |         globalConfig.remove("org.alfresco.repo.action.unknown.private-test-action.exposed"); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("private-test-action").build())); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("private-test-action").withExecutionSource("source").build())); | ||||||
|  |         assertFalse(runtimeActionService.isExposed(builder("private-test-action").withExecutionSource("unknown").build())); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testIfGlobalConfigurationIsUsedEvenIfNotInjectedBySpring() | ||||||
|  |     { | ||||||
|  |         TestExtendedActionServiceImpl extended = applicationContext.getBean("extendedActionServiceWithoutConfigurationProperty", TestExtendedActionServiceImpl.class); | ||||||
|  |  | ||||||
|  |         assertNotNull(extended.getConfigurationProperties()); | ||||||
|  |         assertSame(globalConfig, extended.getConfigurationProperties()); | ||||||
|  |     } | ||||||
|  |      | ||||||
|     /** |     /** | ||||||
|      * This method returns an {@link Action} which will fail when executed. |      * This method returns an {@link Action} which will fail when executed. | ||||||
|      *  |      *  | ||||||
| @@ -1510,7 +1592,25 @@ public class ActionServiceImplTest extends BaseAlfrescoSpringTest | |||||||
|        } |        } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public static class NoOpActionExecuter extends ActionExecuterAbstractBase | ||||||
|  |     { | ||||||
|  |         @Override | ||||||
|  |         protected void addParameterDefinitions(List<ParameterDefinition> paramList) | ||||||
|  |         { | ||||||
|  |             //do nothing | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         @Override | ||||||
|  |         protected void executeImpl(Action action, NodeRef actionedUponNodeRef) | ||||||
|  |         { | ||||||
|  |             //do nothing | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static class TestExtendedActionServiceImpl extends ActionServiceImpl | ||||||
|  |     { | ||||||
|  |  | ||||||
|  |     } | ||||||
|      |      | ||||||
|     protected static class CancellableSleepAction extends ActionImpl implements CancellableAction |     protected static class CancellableSleepAction extends ActionImpl implements CancellableAction | ||||||
|     { |     { | ||||||
|   | |||||||
| @@ -0,0 +1,152 @@ | |||||||
|  | /* | ||||||
|  |  * #%L | ||||||
|  |  * Alfresco Repository | ||||||
|  |  * %% | ||||||
|  |  * Copyright (C) 2005 - 2022 Alfresco Software Limited | ||||||
|  |  * %% | ||||||
|  |  * This file is part of the Alfresco software. | ||||||
|  |  * If the software was purchased under a paid Alfresco license, the terms of | ||||||
|  |  * the paid license agreement will prevail.  Otherwise, the software is | ||||||
|  |  * provided under the following open source license terms: | ||||||
|  |  * | ||||||
|  |  * Alfresco is free software: you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU Lesser General Public License as published by | ||||||
|  |  * the Free Software Foundation, either version 3 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * Alfresco is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU Lesser General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU Lesser General Public License | ||||||
|  |  * along with Alfresco. If not, see <http://www.gnu.org/licenses/>. | ||||||
|  |  * #L% | ||||||
|  |  */ | ||||||
|  | package org.alfresco.repo.action; | ||||||
|  |  | ||||||
|  | import static org.alfresco.repo.action.ActionExecutionContext.builder; | ||||||
|  | import static org.junit.Assert.assertNotNull; | ||||||
|  | import static org.junit.Assert.fail; | ||||||
|  |  | ||||||
|  | import java.util.Map; | ||||||
|  | import java.util.Set; | ||||||
|  |  | ||||||
|  | import org.alfresco.repo.action.ActionServiceImpl.ActionExecutionValidator; | ||||||
|  | import org.junit.Assert; | ||||||
|  | import org.junit.Test; | ||||||
|  |  | ||||||
|  | public class PrivateActionValidationTest | ||||||
|  | { | ||||||
|  |     @Test | ||||||
|  |     public void shouldFailOnNullContext() | ||||||
|  |     { | ||||||
|  |         final ActionExecutionValidator validator = givenActionExecutionValidator(Map.of(), Set.of()); | ||||||
|  |  | ||||||
|  |         try | ||||||
|  |         { | ||||||
|  |             validator.isExposed(null); | ||||||
|  |         } | ||||||
|  |         catch (NullPointerException e) | ||||||
|  |         { | ||||||
|  |             assertNotNull(e); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         fail("Expected NPE."); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void privateActionShouldNotBeExposedByDefault() | ||||||
|  |     { | ||||||
|  |         final ActionExecutionValidator validator = givenActionExecutionValidator(Map.of(), Set.of()); | ||||||
|  |  | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("privateA").build())); | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("privateA").withExecutionSource("test").build())); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void publicActionShouldBeExposedByDefault() | ||||||
|  |     { | ||||||
|  |         final ActionExecutionValidator validator = givenActionExecutionValidator(Map.of(), Set.of("publicA")); | ||||||
|  |  | ||||||
|  |         Assert.assertTrue(validator.isExposed(builder("publicA").build())); | ||||||
|  |         Assert.assertTrue(validator.isExposed(builder("publicA").withExecutionSource("test").build())); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void privateActionShouldBeExposedByConfigurationBasedOnActionId() | ||||||
|  |     { | ||||||
|  |         final ActionExecutionValidator validator = givenActionExecutionValidator(Map.of( | ||||||
|  |                 "org.alfresco.repo.action.privateA.exposed", "true"), Set.of()); | ||||||
|  |  | ||||||
|  |         Assert.assertTrue(validator.isExposed(builder("privateA").build())); | ||||||
|  |         Assert.assertTrue(validator.isExposed(builder("privateA").withExecutionSource("test").build())); | ||||||
|  |         Assert.assertTrue(validator.isExposed(builder("privateA").withExecutionSource("test2").build())); | ||||||
|  |  | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("privateB").build())); | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("privateB").withExecutionSource("test").build())); | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("privateB").withExecutionSource("test2").build())); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void privateActionShouldBeExposedByConfigurationBasedOnActionIdAndExecutionSource() | ||||||
|  |     { | ||||||
|  |         final ActionExecutionValidator validator = givenActionExecutionValidator(Map.of( | ||||||
|  |                 "org.alfresco.repo.action.test.privateA.exposed", "true"), Set.of()); | ||||||
|  |  | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("privateA").build())); | ||||||
|  |         Assert.assertTrue(validator.isExposed(builder("privateA").withExecutionSource("test").build())); | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("privateA").withExecutionSource("test2").build())); | ||||||
|  |  | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("privateB").build())); | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("privateB").withExecutionSource("test").build())); | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("privateB").withExecutionSource("test2").build())); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void executionSourceConfigurationShouldTakePrecedenceOverGeneralConfigurationForPrivateAction() | ||||||
|  |     { | ||||||
|  |         final ActionExecutionValidator validator = givenActionExecutionValidator(Map.of( | ||||||
|  |                 "org.alfresco.repo.action.test.privateA.exposed", "true", | ||||||
|  |                 "org.alfresco.repo.action.privateA.exposed", "false"), Set.of()); | ||||||
|  |  | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("privateA").build())); | ||||||
|  |         Assert.assertTrue(validator.isExposed(builder("privateA").withExecutionSource("test").build())); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void publicActionShouldNotBeExposedByConfigurationBasedOnActionId() | ||||||
|  |     { | ||||||
|  |         final ActionExecutionValidator validator = givenActionExecutionValidator(Map.of( | ||||||
|  |                 "org.alfresco.repo.action.publicA.exposed", "false"), Set.of("publicA")); | ||||||
|  |  | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("publicA").build())); | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("publicA").withExecutionSource("test").build())); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void publicActionShouldNotBeExposedByConfigurationBasedOnActionIdAndExecutionSource() | ||||||
|  |     { | ||||||
|  |         final ActionExecutionValidator validator = givenActionExecutionValidator(Map.of( | ||||||
|  |                 "org.alfresco.repo.action.test.publicA.exposed", "false"), Set.of("publicA")); | ||||||
|  |  | ||||||
|  |         Assert.assertTrue(validator.isExposed(builder("publicA").build())); | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("publicA").withExecutionSource("test").build())); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void executionSourceConfigurationShouldTakePrecedenceOverGeneralConfigurationForPublicAction() | ||||||
|  |     { | ||||||
|  |         final ActionExecutionValidator validator = givenActionExecutionValidator(Map.of( | ||||||
|  |                 "org.alfresco.repo.action.test.publicA.exposed", "false", | ||||||
|  |                 "org.alfresco.repo.action.publicA.exposed", "true"), Set.of("publicA")); | ||||||
|  |  | ||||||
|  |         Assert.assertTrue(validator.isExposed(builder("publicA").build())); | ||||||
|  |         Assert.assertFalse(validator.isExposed(builder("publicA").withExecutionSource("test").build())); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private ActionExecutionValidator givenActionExecutionValidator(Map<String, String> configuration, Set<String> publicActions) | ||||||
|  |     { | ||||||
|  |         return new ActionExecutionValidator(configuration::get, publicActions::contains); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -29,7 +29,6 @@ import static java.time.Duration.of; | |||||||
| import static java.time.temporal.ChronoUnit.MILLIS; | import static java.time.temporal.ChronoUnit.MILLIS; | ||||||
| import static java.time.temporal.ChronoUnit.SECONDS; | import static java.time.temporal.ChronoUnit.SECONDS; | ||||||
|  |  | ||||||
| import java.time.Duration; |  | ||||||
| import java.util.concurrent.atomic.AtomicInteger; | import java.util.concurrent.atomic.AtomicInteger; | ||||||
|  |  | ||||||
| import junit.framework.AssertionFailedError; | import junit.framework.AssertionFailedError; | ||||||
| @@ -44,6 +43,7 @@ import org.alfresco.service.namespace.QName; | |||||||
| import org.alfresco.service.transaction.TransactionService; | import org.alfresco.service.transaction.TransactionService; | ||||||
| import org.alfresco.test_category.OwnJVMTestsCategory; | import org.alfresco.test_category.OwnJVMTestsCategory; | ||||||
| import org.alfresco.util.ApplicationContextHelper; | import org.alfresco.util.ApplicationContextHelper; | ||||||
|  | import org.alfresco.util.TestHelper; | ||||||
| import org.alfresco.util.testing.category.DBTests; | import org.alfresco.util.testing.category.DBTests; | ||||||
| import org.apache.commons.logging.Log; | import org.apache.commons.logging.Log; | ||||||
| import org.apache.commons.logging.LogFactory; | import org.apache.commons.logging.LogFactory; | ||||||
| @@ -549,22 +549,22 @@ public class JobLockServiceTest extends TestCase | |||||||
|              |              | ||||||
|             if (callback == null) throw new IllegalStateException(); |             if (callback == null) throw new IllegalStateException(); | ||||||
|  |  | ||||||
|             waitForAssertion(of(100, MILLIS), () -> { |             TestHelper.waitForMethodToFinish(of(100, MILLIS), () -> { | ||||||
|                 assertEquals(false,callback.released); |                 assertEquals(false,callback.released); | ||||||
|                 assertEquals(0,callback.getIsActiveCount()); |                 assertEquals(0,callback.getIsActiveCount()); | ||||||
|             }); |             }, AssertionFailedError.class); | ||||||
|  |  | ||||||
|             waitForAssertion(of(1, SECONDS), () -> { |             TestHelper.waitForMethodToFinish(of(1, SECONDS), () -> { | ||||||
|                 assertEquals(false, callback.released); |                 assertEquals(false, callback.released); | ||||||
|                 assertEquals(1, callback.getIsActiveCount()); |                 assertEquals(1, callback.getIsActiveCount()); | ||||||
|             }); |             }, AssertionFailedError.class); | ||||||
|  |  | ||||||
|             callback.isActive = false; |             callback.isActive = false; | ||||||
|  |  | ||||||
|             waitForAssertion(of(2, SECONDS), () -> { |             TestHelper.waitForMethodToFinish(of(2, SECONDS), () -> { | ||||||
|                 assertEquals(true, callback.released); |                 assertEquals(true, callback.released); | ||||||
|                 assertEquals(2, callback.getIsActiveCount()); |                 assertEquals(2, callback.getIsActiveCount()); | ||||||
|             }); |             }, AssertionFailedError.class); | ||||||
|         } |         } | ||||||
|         catch (IllegalArgumentException e) |         catch (IllegalArgumentException e) | ||||||
|         {             |         {             | ||||||
| @@ -622,43 +622,6 @@ public class JobLockServiceTest extends TestCase | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     private static void waitForAssertion(Duration timeout, Runnable assertion) |  | ||||||
|     { |  | ||||||
|         logger.debug("Waiting for assertion to succeed."); |  | ||||||
|         final long lastStep = 10; |  | ||||||
|         final long delayMillis = timeout.toMillis() > lastStep ? timeout.toMillis() / lastStep : 1; |  | ||||||
|  |  | ||||||
|         for (int s = 0; s <= lastStep; s++) |  | ||||||
|         { |  | ||||||
|             try |  | ||||||
|             { |  | ||||||
|                 assertion.run(); |  | ||||||
|                 logger.debug("Assertion succeeded."); |  | ||||||
|                 return; |  | ||||||
|             } |  | ||||||
|             catch (AssertionFailedError e) |  | ||||||
|             { |  | ||||||
|                 if (s == lastStep) |  | ||||||
|                 { |  | ||||||
|                     logger.debug("Assertion failed. No more waiting."); |  | ||||||
|                     throw e; |  | ||||||
|                 } |  | ||||||
|                 logger.debug("Assertion failed. Waiting until it succeeds.", e); |  | ||||||
|             } |  | ||||||
|             try |  | ||||||
|             { |  | ||||||
|                 Thread.sleep(delayMillis); |  | ||||||
|             } |  | ||||||
|             catch (InterruptedException e) |  | ||||||
|             { |  | ||||||
|                 Thread.currentThread().interrupt(); |  | ||||||
|                 fail("Thread has been interrupted."); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         throw new IllegalStateException("Unexpected."); |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     private class TestCallback implements JobLockRefreshCallback |     private class TestCallback implements JobLockRefreshCallback | ||||||
|     { |     { | ||||||
|         public volatile AtomicInteger isActiveCounter = new AtomicInteger(); |         public volatile AtomicInteger isActiveCounter = new AtomicInteger(); | ||||||
|   | |||||||
| @@ -29,8 +29,13 @@ package org.alfresco.util; | |||||||
| import static org.junit.Assert.assertTrue; | import static org.junit.Assert.assertTrue; | ||||||
| import static org.junit.Assert.fail; | import static org.junit.Assert.fail; | ||||||
|  |  | ||||||
|  | import java.time.Duration; | ||||||
|  | import java.util.Arrays; | ||||||
| import java.util.function.Supplier; | import java.util.function.Supplier; | ||||||
|  |  | ||||||
|  | import org.apache.commons.logging.Log; | ||||||
|  | import org.apache.commons.logging.LogFactory; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * A helper class to create a concise test. |  * A helper class to create a concise test. | ||||||
|  * |  * | ||||||
| @@ -39,6 +44,8 @@ import java.util.function.Supplier; | |||||||
|  */ |  */ | ||||||
| public class TestHelper | public class TestHelper | ||||||
| { | { | ||||||
|  |     private static final Log logger = LogFactory.getLog(TestHelper.class); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Checks the thrown exception is the expected exception. |      * Checks the thrown exception is the expected exception. | ||||||
|      * |      * | ||||||
| @@ -94,4 +101,59 @@ public class TestHelper | |||||||
|  |  | ||||||
|         return t; |         return t; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Waits for <b>{@code method}</b> to succeed until <b>({@code timeout})</b>. | ||||||
|  |      * <p> | ||||||
|  |      * If the method failed to succeed because of previous step of test is not finished yet, | ||||||
|  |      * it waits and re-executes the given method again. | ||||||
|  |      * This will continue until the method do not fail or the <b>{@code timeout}</b> has been reached. | ||||||
|  |      * | ||||||
|  |      * @param timeout               max time of wait. | ||||||
|  |      * @param method                the method that is called for retry. | ||||||
|  |      * @param expectedExceptions    array of excepted exception. | ||||||
|  |      * @throws Exception            after failing to finish given method with success. | ||||||
|  |      */ | ||||||
|  |     @SafeVarargs | ||||||
|  |     public static void waitForMethodToFinish( | ||||||
|  |             Duration timeout, | ||||||
|  |             Runnable method, | ||||||
|  |             Class<? extends Throwable> ... expectedExceptions) | ||||||
|  |     { | ||||||
|  |         logger.debug("Waiting for method to succeed."); | ||||||
|  |         final long lastStep = 10; | ||||||
|  |         final long delayMillis = timeout.toMillis() > lastStep ? timeout.toMillis() / lastStep : 1; | ||||||
|  |  | ||||||
|  |         for (int step = 0; step <= lastStep; step++) | ||||||
|  |         { | ||||||
|  |             try | ||||||
|  |             { | ||||||
|  |                 method.run(); | ||||||
|  |                 logger.debug("Method succeeded."); | ||||||
|  |                 return; | ||||||
|  |             } catch (Throwable e) | ||||||
|  |             { | ||||||
|  |                 if(Arrays.stream(expectedExceptions).noneMatch(expEx -> expEx.isInstance(e))) | ||||||
|  |                 { | ||||||
|  |                     throw e; | ||||||
|  |                 } | ||||||
|  |                 if (step == lastStep) | ||||||
|  |                 { | ||||||
|  |                     logger.debug("Method failed - no more waiting."); | ||||||
|  |                     throw e; | ||||||
|  |                 } | ||||||
|  |                 logger.debug("Method failed. Waiting until it succeeds.", e); | ||||||
|  |             } | ||||||
|  |             try | ||||||
|  |             { | ||||||
|  |                 Thread.sleep(delayMillis); | ||||||
|  |             } catch (InterruptedException e) | ||||||
|  |             { | ||||||
|  |                 Thread.currentThread().interrupt(); | ||||||
|  |                 fail("Thread has been interrupted."); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         throw new IllegalStateException("Unexpected."); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -12,6 +12,18 @@ | |||||||
|       </property> |       </property> | ||||||
|    </bean> |    </bean> | ||||||
|  |  | ||||||
|  |    <bean id="public-test-action" class="org.alfresco.repo.action.ActionServiceImplTest$NoOpActionExecuter" parent="action-executer"> | ||||||
|  |       <property name="publicAction"> | ||||||
|  |          <value>true</value> | ||||||
|  |       </property> | ||||||
|  |    </bean> | ||||||
|  |  | ||||||
|  |    <bean id="private-test-action" class="org.alfresco.repo.action.ActionServiceImplTest$NoOpActionExecuter" parent="action-executer"> | ||||||
|  |       <property name="publicAction"> | ||||||
|  |          <value>false</value> | ||||||
|  |       </property> | ||||||
|  |    </bean> | ||||||
|  |     | ||||||
|    <bean id="sleepActionFilter" class="org.alfresco.repo.action.ActionServiceImplTest$SleepActionFilter" parent="baseActionFilter"> |    <bean id="sleepActionFilter" class="org.alfresco.repo.action.ActionServiceImplTest$SleepActionFilter" parent="baseActionFilter"> | ||||||
|        <property name="name"> |        <property name="name"> | ||||||
|            <value>preventMultipleSleepActions</value> |            <value>preventMultipleSleepActions</value> | ||||||
| @@ -31,4 +43,28 @@ | |||||||
|    <bean id="transient-fail-action" |    <bean id="transient-fail-action" | ||||||
|          class="org.alfresco.repo.action.ActionServiceImplTest$TransientFailActionExecuter" |          class="org.alfresco.repo.action.ActionServiceImplTest$TransientFailActionExecuter" | ||||||
|          parent="action-executer" /> |          parent="action-executer" /> | ||||||
|  |  | ||||||
|  |    <bean id="extendedActionServiceWithoutConfigurationProperty" class="org.alfresco.repo.action.ActionServiceImplTest$TestExtendedActionServiceImpl" init-method="init"> | ||||||
|  |       <property name="policyComponent"> | ||||||
|  |          <ref bean="policyComponent" /> | ||||||
|  |       </property> | ||||||
|  |       <property name="nodeService"> | ||||||
|  |          <ref bean="NodeService" /> | ||||||
|  |       </property> | ||||||
|  |       <property name="searchService"> | ||||||
|  |          <ref bean="ADMSearchService" /> | ||||||
|  |       </property> | ||||||
|  |       <property name="authenticationContext"> | ||||||
|  |          <ref bean="authenticationContext" /> | ||||||
|  |       </property> | ||||||
|  |       <property name="actionTrackingService"> | ||||||
|  |          <ref bean="actionTrackingService" /> | ||||||
|  |       </property> | ||||||
|  |       <property name="dictionaryService"> | ||||||
|  |          <ref bean="DictionaryService" /> | ||||||
|  |       </property> | ||||||
|  |       <property name="monitor"> | ||||||
|  |          <ref bean="actionServiceMonitor"/> | ||||||
|  |       </property> | ||||||
|  |    </bean> | ||||||
| </beans> | </beans> | ||||||
|   | |||||||
| @@ -7,8 +7,27 @@ pushd "$(dirname "${BASH_SOURCE[0]}")/../../" | |||||||
| source "$(dirname "${BASH_SOURCE[0]}")/build_functions.sh" | source "$(dirname "${BASH_SOURCE[0]}")/build_functions.sh" | ||||||
|  |  | ||||||
|  |  | ||||||
| # Build the current project | # Build the current project if needed | ||||||
| mvn -B -V install -DskipTests -Dmaven.javadoc.skip=true -Pbuild-docker-images -Pags | if [[ -n ${REQUIRES_INSTALLED_ARTIFACTS} ]] || [[ -n ${REQUIRES_LOCAL_IMAGES} ]] || [[ -n ${BUILD_PROFILES} ]]; then | ||||||
|  |  | ||||||
|  |   if [[ -n ${BUILD_PROFILES} ]]; then | ||||||
|  |     PROFILES="${BUILD_PROFILES}" | ||||||
|  |   else | ||||||
|  |     if [[ "${REQUIRES_LOCAL_IMAGES}" == "true" ]]; then | ||||||
|  |       PROFILES="-Pbuild-docker-images -Pags" | ||||||
|  |     else | ||||||
|  |       PROFILES="-Pags" | ||||||
|  |     fi | ||||||
|  |   fi | ||||||
|  |  | ||||||
|  |   if [[ "${REQUIRES_INSTALLED_ARTIFACTS}" == "true" ]]; then | ||||||
|  |     PHASE="install" | ||||||
|  |   else | ||||||
|  |     PHASE="package" | ||||||
|  |   fi | ||||||
|  |  | ||||||
|  |   mvn -B -V $PHASE -DskipTests -Dmaven.javadoc.skip=true $PROFILES $BUILD_OPTIONS | ||||||
|  | fi | ||||||
|  |  | ||||||
|  |  | ||||||
| popd | popd | ||||||
|   | |||||||
| @@ -1,20 +1,5 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| set -ev | set -ev | ||||||
|  |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/acs-community-packaging" | find "${HOME}/.m2/repository/" -type d -name "*-SNAPSHOT" | xargs -r -l rm -rf | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-community-repo" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-community-repo-*" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-core" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-data-model" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-enterprise-remote-api" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-enterprise-repo-*" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-enterprise-repository" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-remote-api" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-repository" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/content-services" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/content-services*" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/content-services-community" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/tas/alfresco-community-repo-*-test" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/tas/alfresco-enterprise-repo-*-test" |  | ||||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/alfresco-governance-services*" |  | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								scripts/travis/prepare.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								scripts/travis/prepare.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,31 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | M2_REPO_DIR="$HOME/.m2/repository" | ||||||
|  | M2_REPO_TTL_MINUTES=10080 | ||||||
|  | M2_REPO_EXPIRED="$(find $M2_REPO_DIR -type f -mmin +$M2_REPO_TTL_MINUTES 2>/dev/null | head -n 1 | wc -l)" | ||||||
|  | M2_REPO_FILE_COUNT="$(find $M2_REPO_DIR -type f 2>/dev/null | wc -l)" | ||||||
|  |  | ||||||
|  | ORG_ALFRESCO_M2_REPO_DIR="$M2_REPO_DIR/org/alfresco" | ||||||
|  | ORG_ALFRESCO_M2_REPO_TTL_MINUTES=1440 | ||||||
|  | ORG_ALFRESCO_M2_REPO_EXPIRED="$(find $ORG_ALFRESCO_M2_REPO_DIR -type f -mmin +$ORG_ALFRESCO_M2_REPO_TTL_MINUTES 2>/dev/null | head -n 1 | wc -l)" | ||||||
|  |  | ||||||
|  | echo "Files in the maven repo: $M2_REPO_FILE_COUNT" | ||||||
|  |  | ||||||
|  | if [ $ORG_ALFRESCO_M2_REPO_EXPIRED -eq 1 ];then | ||||||
|  |   echo "Invalidating org/alfresco maven local cache." | ||||||
|  |   rm -rf "$ORG_ALFRESCO_M2_REPO_DIR" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ $M2_REPO_EXPIRED -eq 1 ];then | ||||||
|  |   echo "Invalidating maven local cache." | ||||||
|  |   rm -rf "$M2_REPO_DIR" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ $M2_REPO_FILE_COUNT -lt 1000 ] || [ $ORG_ALFRESCO_M2_REPO_EXPIRED -eq 1 ] || [ $M2_REPO_EXPIRED -eq 1 ];then | ||||||
|  |   echo "Populating maven cache." | ||||||
|  |   export BUILD_PROFILES="-Pall-tas-tests,ags" | ||||||
|  |   export BUILD_OPTIONS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dmaven.artifact.threads=8" | ||||||
|  |   source "$(dirname "${BASH_SOURCE[0]}")/build.sh" | ||||||
|  | fi | ||||||
| @@ -33,7 +33,11 @@ git status | |||||||
| git --no-pager diff pom.xml | git --no-pager diff pom.xml | ||||||
| git add pom.xml | git add pom.xml | ||||||
|  |  | ||||||
| if git status --untracked-files=no --porcelain | grep -q '^' ; then | if [[ "${TRAVIS_COMMIT_MESSAGE}" =~ \[force[^\]]*\] ]]; then | ||||||
|  |   FORCE_TOKEN=$(echo "${TRAVIS_COMMIT_MESSAGE}" | sed "s|^.*\(\[force[^]]*\]\).*$|\1|g") | ||||||
|  |   git commit --allow-empty -m "${FORCE_TOKEN} Update upstream version to ${VERSION}" | ||||||
|  |   git push | ||||||
|  | elif git status --untracked-files=no --porcelain | grep -q '^' ; then | ||||||
|   git commit -m "Update upstream version to ${VERSION}" |   git commit -m "Update upstream version to ${VERSION}" | ||||||
|   git push |   git push | ||||||
| else | else | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user