mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-22 15:12:38 +00:00 
			
		
		
		
	Compare commits
	
		
			82 Commits
		
	
	
		
			14.143
			...
			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 | ||
|  | 5ecd4c2593 | ||
|  | b4a2e2d8cf | ||
|  | bdf4fd7e16 | ||
|  | e3b3e4b099 | ||
|  | 895ab9dbbf | ||
|  | 85054a7649 | ||
|  | c60a182b89 | 
							
								
								
									
										160
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										160
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -26,13 +26,16 @@ branches: | ||||
|  | ||||
| env: | ||||
|   global: | ||||
|     - TRANSFORMERS_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-core.version -q -DforceStdout) | ||||
|     - TAS_SCRIPTS=../alfresco-community-repo/packaging/tests/scripts | ||||
|     - TAS_ENVIRONMENT=./packaging/tests/environment | ||||
|     - LOG_WARN="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" | ||||
|  | ||||
| stages: | ||||
|   - name: prepare | ||||
|     if: commit_message !~ /\[skip tests\]/ AND commit_message !~ /\[force[^\]]*\]/ | ||||
|   - name: test | ||||
|     if: commit_message !~ /\[skip tests\]/ | ||||
|     if: commit_message !~ /\[skip tests\]/ AND commit_message !~ /\[force[^\]]*\]/ | ||||
|   - name: release | ||||
|     if: commit_message !~ /\[no release\]/ AND (branch = master OR branch =~ /release\/.*/) AND type != pull_request AND fork = false | ||||
|   - name: update_downstream | ||||
| @@ -43,7 +46,13 @@ install: travis_retry travis_wait 40 bash scripts/travis/build.sh | ||||
|  | ||||
| jobs: | ||||
|   include: | ||||
|     - name: "Prepare" | ||||
|       stage: prepare | ||||
|       install: skip | ||||
|       script: travis_retry travis_wait 80 bash scripts/travis/prepare.sh | ||||
|  | ||||
|     - name: "Source Clear Scan (SCA)" | ||||
|       stage: test | ||||
|       if: branch = master OR branch =~ /release\/.*/ | ||||
|       # Run Veracode | ||||
|       install: skip | ||||
| @@ -51,43 +60,49 @@ jobs: | ||||
|  | ||||
|     - name: "Core, Data-Model, Repository - AllUnitTestsSuite - Build and test" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       script: | ||||
|         - travis_retry mvn -B test -pl core,data-model | ||||
|         - travis_retry mvn -B test -pl "repository,mmt" "-Dtest=AllUnitTestsSuite,AllMmtUnitTestSuite" | ||||
|         - travis_retry mvn -B test -pl core,data-model -am -DfailIfNoTests=false | ||||
|         - travis_retry mvn -B test -pl "repository,mmt" -am "-Dtest=AllUnitTestsSuite,AllMmtUnitTestSuite" -DfailIfNoTests=false | ||||
|  | ||||
|     - name: "Repository - AppContext01TestSuite" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       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 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 | ||||
|       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 | ||||
|         - 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 -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" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       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 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 | ||||
|       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 | ||||
|         - 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 -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" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       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 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 | ||||
|       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 | ||||
|         - 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 -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" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|         - 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 | ||||
|       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" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       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 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 | ||||
|       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 | ||||
|         - 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 -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" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       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 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 | ||||
|       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 | ||||
|         - 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 -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" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       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 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 | ||||
|       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 | ||||
|         - 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 -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" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       # 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\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       # 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\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       # 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\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       # We only run DB tests on the latest version of PostgreSQL on feature branches | ||||
|       if: commit_message !~ /\[skip db\]/ OR commit_message =~ /\[latest db\]/ | ||||
|       install: skip | ||||
|       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 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" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       before_script: | ||||
|         - 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" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||
|       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 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||
| @@ -238,30 +272,34 @@ jobs: | ||||
|  | ||||
|     - name: "Remote-api - AppContext02TestSuite" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||
|       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 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 | ||||
|  | ||||
|     - name: "Remote-api - AppContext03TestSuite" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||
|       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 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 | ||||
|  | ||||
|     - name: "Remote-api - AppContext04TestSuite" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||
|       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 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 | ||||
|  | ||||
|     - name: "Remote-api - AppContextExtraTestSuite" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: travis_retry travis_wait 40 env REQUIRES_INSTALLED_ARTIFACTS=true bash scripts/travis/build.sh | ||||
|       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 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||
| @@ -270,99 +308,126 @@ jobs: | ||||
|     - 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 | ||||
|       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: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||
|         - ${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" | ||||
|       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: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||
|         - ${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" | ||||
|       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: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||
|         - ${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" | ||||
|       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: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||
|         - ${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" | ||||
|       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: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||
|         - ${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" | ||||
|       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: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||
|         - ${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" | ||||
|       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: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml | ||||
|         - ${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" | ||||
|       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: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml | ||||
|         - ${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" | ||||
|       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: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml | ||||
|         - ${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" | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       install: skip | ||||
|       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' | ||||
|       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)" | ||||
|       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} | ||||
|  | ||||
|     - name: "AGS        Integration Tests 02 (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 -PagsAllTestSuitePt2 -f amps/ags/pom.xml ${LOG_WARN} | ||||
|  | ||||
|     - name: "AGS        Integration Tests 03 (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 -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) " | ||||
|       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} | ||||
|  | ||||
|     - name: "AGS        Integration Tests 02 (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} | ||||
|  | ||||
|     - 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} | ||||
|  | ||||
|     - 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" | ||||
|       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: | ||||
|         artifacts: | ||||
|           paths: | ||||
| @@ -373,11 +438,12 @@ jobs: | ||||
|       before_script: | ||||
|         - ${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" | ||||
|       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 | ||||
|  | ||||
|     - name: "Push to Nexus" | ||||
|       stage: release | ||||
|       install: skip | ||||
|       before_script: bash scripts/travis/verify_release_tag.sh | ||||
|       script: travis_wait 40 bash scripts/travis/maven_release.sh | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|    <parent> | ||||
|       <groupId>org.alfresco</groupId> | ||||
|       <artifactId>alfresco-community-repo-amps</artifactId> | ||||
|       <version>14.143</version> | ||||
|       <version>23.1.0.23-SNAPSHOT</version> | ||||
|    </parent> | ||||
|  | ||||
|    <modules> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|    <parent> | ||||
|       <groupId>org.alfresco</groupId> | ||||
|       <artifactId>alfresco-governance-services-community-parent</artifactId> | ||||
|       <version>14.143</version> | ||||
|       <version>23.1.0.23-SNAPSHOT</version> | ||||
|    </parent> | ||||
|  | ||||
|    <modules> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|    <parent> | ||||
|       <groupId>org.alfresco</groupId> | ||||
|       <artifactId>alfresco-governance-services-automation-community-repo</artifactId> | ||||
|       <version>14.143</version> | ||||
|       <version>23.1.0.23-SNAPSHOT</version> | ||||
|    </parent> | ||||
|  | ||||
|    <build> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|    <parent> | ||||
|       <groupId>org.alfresco</groupId> | ||||
|       <artifactId>alfresco-governance-services-community-parent</artifactId> | ||||
|       <version>14.143</version> | ||||
|       <version>23.1.0.23-SNAPSHOT</version> | ||||
|    </parent> | ||||
|  | ||||
|    <modules> | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
| TRANSFORMERS_TAG=2.5.7 | ||||
| SOLR6_TAG=2.0.3 | ||||
| POSTGRES_TAG=13.3 | ||||
| ACTIVEMQ_TAG=5.16.1 | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    <parent> | ||||
|       <groupId>org.alfresco</groupId> | ||||
|       <artifactId>alfresco-governance-services-community-repo-parent</artifactId> | ||||
|       <version>14.143</version> | ||||
|       <version>23.1.0.23-SNAPSHOT</version> | ||||
|    </parent> | ||||
|  | ||||
|    <properties> | ||||
| @@ -361,6 +361,12 @@ | ||||
|                <integrationTestSuite>**/AllTestSuitePt3.class</integrationTestSuite> | ||||
|            </properties> | ||||
|        </profile> | ||||
|        <profile> | ||||
|            <id>agsAllTestSuitePt4</id> | ||||
|            <properties> | ||||
|                <integrationTestSuite>**/AllTestSuitePt4.class</integrationTestSuite> | ||||
|            </properties> | ||||
|        </profile> | ||||
|  | ||||
|       <profile> | ||||
|          <id>use-mysql</id> | ||||
|   | ||||
| @@ -43,19 +43,16 @@ import org.junit.runner.RunWith; | ||||
| @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\\.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\\.webscript\\..*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. | ||||
|     "org\\.alfresco\\.module\\.org_alfresco_module_rm\\.test\\.legacy\\.jscript\\..*Test", | ||||
|  | ||||
|     // Exclude all UnitTests | ||||
|     "!.*UnitTest", | ||||
|  | ||||
|     // 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", | ||||
|     "!.*RM2072Test", | ||||
|     "!.*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.major=7 | ||||
| version.minor=0 | ||||
| version.major=23 | ||||
| version.minor=1 | ||||
| version.revision=0 | ||||
| version.label= | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-governance-services-community-repo-parent</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <build> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <modules> | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo-amps</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <properties> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|    <parent> | ||||
|       <groupId>org.alfresco</groupId> | ||||
|       <artifactId>alfresco-community-repo</artifactId> | ||||
|       <version>14.143</version> | ||||
|       <version>23.1.0.23-SNAPSHOT</version> | ||||
|    </parent> | ||||
|  | ||||
|    <dependencies> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <properties> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <dependencies> | ||||
|   | ||||
| @@ -9,6 +9,6 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo-packaging</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
| </project> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo-packaging</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <properties> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <modules> | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
| TRANSFORMERS_TAG=2.5.7 | ||||
| SOLR6_TAG=2.0.3 | ||||
| POSTGRES_TAG=13.3 | ||||
| ACTIVEMQ_TAG=5.16.1 | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo-packaging</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <modules> | ||||
|   | ||||
| @@ -27,8 +27,11 @@ fi | ||||
|  | ||||
| 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+ | ||||
| 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 ] | ||||
| then | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo-tests</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <developers> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo-tests</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <developers> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo-tests</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <developers> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo-tests</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <developers> | ||||
|   | ||||
| @@ -7,9 +7,7 @@ import org.alfresco.utility.Utility; | ||||
| import org.alfresco.utility.model.FileModel; | ||||
| import org.alfresco.utility.model.FolderModel; | ||||
| import org.alfresco.utility.model.SiteModel; | ||||
|  | ||||
| import org.alfresco.utility.model.UserModel; | ||||
|  | ||||
| import org.springframework.http.HttpStatus; | ||||
| import org.testng.Assert; | ||||
| import org.testng.annotations.BeforeClass; | ||||
| @@ -40,17 +38,20 @@ public abstract class RenditionIntegrationTests extends RestTest | ||||
|         FileModel file = new FileModel(); | ||||
|         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); | ||||
|         Assert.assertEquals(Integer.valueOf(restClient.getStatusCode()).intValue(), HttpStatus.ACCEPTED.value(), | ||||
|                 "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); | ||||
|         Assert.assertEquals(Integer.valueOf(restClient.getStatusCode()).intValue(), HttpStatus.OK.value(), | ||||
|                 "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", | ||||
|                 "Rendition was created but it has the wrong Content-Type. [" + fileName+ ", " + renditionId + "] [source file, rendition ID]"); | ||||
|  | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo-tests</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <developers> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo-packaging</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <properties> | ||||
|   | ||||
							
								
								
									
										23
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								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"> | ||||
|     <modelVersion>4.0.0</modelVersion> | ||||
|     <artifactId>alfresco-community-repo</artifactId> | ||||
|     <version>14.143</version>  | ||||
|     <version>23.1.0.23-SNAPSHOT</version> | ||||
|     <packaging>pom</packaging> | ||||
|     <name>Alfresco Community Repo Parent</name> | ||||
|  | ||||
| @@ -23,11 +23,11 @@ | ||||
|     </modules> | ||||
|  | ||||
|     <properties> | ||||
|         <acs.version.major>7</acs.version.major> | ||||
|         <acs.version.minor>2</acs.version.minor> | ||||
|         <acs.version.major>23</acs.version.major> | ||||
|         <acs.version.minor>1</acs.version.minor> | ||||
|         <acs.version.revision>0</acs.version.revision> | ||||
|         <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> | ||||
|         <licenseName>community</licenseName> | ||||
| @@ -51,17 +51,18 @@ | ||||
|         <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.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.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.jackson.version>2.13.1</dependency.jackson.version> | ||||
|         <dependency.jackson-databind.version>2.13.1</dependency.jackson-databind.version> | ||||
|         <dependency.cxf.version>3.5.0</dependency.cxf.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.mockito-core.version>3.11.2</dependency.mockito-core.version> | ||||
|         <dependency.org-json.version>20211205</dependency.org-json.version> | ||||
| @@ -110,7 +111,7 @@ | ||||
|         <alfresco.api-explorer.version>7.2.0</alfresco.api-explorer.version> <!-- Also in alfresco-enterprise-share --> | ||||
|  | ||||
|         <alfresco.maven-plugin.version>2.2.0</alfresco.maven-plugin.version> | ||||
|         <license-maven-plugin.version>2.0.1.alfresco-1</license-maven-plugin.version> | ||||
|         <license-maven-plugin.version>2.0.1.alfresco-2</license-maven-plugin.version> | ||||
|  | ||||
|         <dependency.postgresql.version>42.3.2</dependency.postgresql.version> | ||||
|         <dependency.mysql.version>8.0.27</dependency.mysql.version> | ||||
| @@ -118,7 +119,7 @@ | ||||
|         <dependency.mariadb.version>2.7.4</dependency.mariadb.version> | ||||
|         <dependency.tas-utility.version>3.0.47</dependency.tas-utility.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-email.version>1.8</dependency.tas-email.version> | ||||
|         <dependency.tas-webdav.version>1.6</dependency.tas-webdav.version> | ||||
| @@ -146,7 +147,7 @@ | ||||
|         <connection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</connection> | ||||
|         <developerConnection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</developerConnection> | ||||
|         <url>https://github.com/Alfresco/alfresco-community-repo</url> | ||||
|         <tag>14.143</tag> | ||||
|         <tag>HEAD</tag> | ||||
|     </scm> | ||||
|  | ||||
|     <distributionManagement> | ||||
| @@ -887,7 +888,7 @@ | ||||
|                 <plugin> | ||||
|                     <groupId>io.fabric8</groupId> | ||||
|                     <artifactId>docker-maven-plugin</artifactId> | ||||
|                     <version>0.38.0</version> | ||||
|                     <version>0.39.1</version> | ||||
|                 </plugin> | ||||
|                 <plugin> | ||||
|                     <artifactId>maven-surefire-plugin</artifactId> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <dependencies> | ||||
|   | ||||
| @@ -406,82 +406,82 @@ public class WebDAVMethodTest | ||||
|     } | ||||
|      | ||||
|     /* MNT-10555 Test */ | ||||
|     @Category(IntermittentlyFailingTests.class) // ACS-959 | ||||
|     @Test | ||||
|     public void expiryLockTest() | ||||
|     { | ||||
|         // 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(); | ||||
|         Logger.getLogger("org.alfresco.repo.webdav").setLevel(Level.ALL); | ||||
|         Level webdavProtocolSaveLogLevel = Logger.getLogger("org.alfresco.webdav.protocol").getLevel(); | ||||
|         Logger.getLogger("org.alfresco.webdav.protocol").setLevel(Level.ALL); | ||||
|         try | ||||
|         { | ||||
|             setUpApplicationContext(); | ||||
|      | ||||
|             req = new MockHttpServletRequest(); | ||||
|             resp = new MockHttpServletResponse(); | ||||
|      | ||||
|             String rootPath = "/app:company_home"; | ||||
|             StoreRef storeRef = new StoreRef("workspace://SpacesStore"); | ||||
|             NodeRef storeRootNodeRef = nodeService.getRootNode(storeRef); | ||||
|             List<NodeRef> nodeRefs = searchService.selectNodes(storeRootNodeRef, rootPath, null, namespaceService, false); | ||||
|             NodeRef defaultRootNode = nodeRefs.get(0); | ||||
|      | ||||
|             NodeRef rootNodeRef = tenantService.getRootNode(nodeService, searchService, namespaceService, rootPath, defaultRootNode); | ||||
|      | ||||
|             // Create test 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(); | ||||
|      | ||||
|             // Create test document. | ||||
|             NodeRef nodeRef = nodeService.createNode(folderNodeRef, ContentModel.ASSOC_CONTAINS, QName.createQName("test"), ContentModel.TYPE_CONTENT, | ||||
|                     Collections.<QName, Serializable> singletonMap(ContentModel.PROP_NAME, "text.txt")).getChildRef(); | ||||
|      | ||||
|             lockMethod = new LockMethod(); | ||||
|             lockMethod.createExclusive = true; | ||||
|             lockMethod.m_timeoutDuration = 1; | ||||
|             lockMethod.setDetails(req, resp, webDAVHelper, nodeRef); | ||||
|      | ||||
|             transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Object>() | ||||
|             { | ||||
|                 @Override | ||||
|                 public Object execute() throws Throwable | ||||
|                 { | ||||
|                     try | ||||
|                 { | ||||
|                     // LOCK document. | ||||
|                     lockMethod.executeImpl(); | ||||
|                      | ||||
|                     //wait for the lock to expire up to 5 seconds | ||||
|                     int timeout = 5; | ||||
|                     while( timeout > 0 && !lockMethod.lockInfo.isExpired()) | ||||
|                     { | ||||
|                         Thread.sleep(1000); | ||||
|                         timeout--; | ||||
|                     } | ||||
|                      | ||||
|                     // LOCK against an expired lock. | ||||
|                     lockMethod.executeImpl(); | ||||
|                 } | ||||
|                 catch (WebDAVServerException e) | ||||
|                 { | ||||
|                     logger.debug(e); | ||||
|                     Assert.fail("Document was not locked again, when lock has expired."); | ||||
|                 } | ||||
|                 return null; | ||||
|                 } | ||||
|             }); | ||||
|      | ||||
|             // Remove test folder. | ||||
|             nodeService.deleteNode(folderNodeRef); | ||||
|         } | ||||
|         finally | ||||
|         { | ||||
|             Logger.getLogger("org.alfresco.webdav.protocol").setLevel(webdavProtocolSaveLogLevel); | ||||
|             Logger.getLogger("org.alfresco.repo.webdav").setLevel(repoWebdavSaveLogLevel); | ||||
|         } | ||||
|     } | ||||
| //    @Category(IntermittentlyFailingTests.class) // ACS-959 | ||||
| //    @Test | ||||
| //    public void expiryLockTest() | ||||
| //    { | ||||
| //        // 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(); | ||||
| //        Logger.getLogger("org.alfresco.repo.webdav").setLevel(Level.ALL); | ||||
| //        Level webdavProtocolSaveLogLevel = Logger.getLogger("org.alfresco.webdav.protocol").getLevel(); | ||||
| //        Logger.getLogger("org.alfresco.webdav.protocol").setLevel(Level.ALL); | ||||
| //        try | ||||
| //        { | ||||
| //            setUpApplicationContext(); | ||||
| // | ||||
| //            req = new MockHttpServletRequest(); | ||||
| //            resp = new MockHttpServletResponse(); | ||||
| // | ||||
| //            String rootPath = "/app:company_home"; | ||||
| //            StoreRef storeRef = new StoreRef("workspace://SpacesStore"); | ||||
| //            NodeRef storeRootNodeRef = nodeService.getRootNode(storeRef); | ||||
| //            List<NodeRef> nodeRefs = searchService.selectNodes(storeRootNodeRef, rootPath, null, namespaceService, false); | ||||
| //            NodeRef defaultRootNode = nodeRefs.get(0); | ||||
| // | ||||
| //            NodeRef rootNodeRef = tenantService.getRootNode(nodeService, searchService, namespaceService, rootPath, defaultRootNode); | ||||
| // | ||||
| //            // Create test 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(); | ||||
| // | ||||
| //            // Create test document. | ||||
| //            NodeRef nodeRef = nodeService.createNode(folderNodeRef, ContentModel.ASSOC_CONTAINS, QName.createQName("test"), ContentModel.TYPE_CONTENT, | ||||
| //                    Collections.<QName, Serializable> singletonMap(ContentModel.PROP_NAME, "text.txt")).getChildRef(); | ||||
| // | ||||
| //            lockMethod = new LockMethod(); | ||||
| //            lockMethod.createExclusive = true; | ||||
| //            lockMethod.m_timeoutDuration = 1; | ||||
| //            lockMethod.setDetails(req, resp, webDAVHelper, nodeRef); | ||||
| // | ||||
| //            transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Object>() | ||||
| //            { | ||||
| //                @Override | ||||
| //                public Object execute() throws Throwable | ||||
| //                { | ||||
| //                    try | ||||
| //                { | ||||
| //                    // LOCK document. | ||||
| //                    lockMethod.executeImpl(); | ||||
| // | ||||
| //                    //wait for the lock to expire up to 5 seconds | ||||
| //                    int timeout = 5; | ||||
| //                    while( timeout > 0 && !lockMethod.lockInfo.isExpired()) | ||||
| //                    { | ||||
| //                        Thread.sleep(1000); | ||||
| //                        timeout--; | ||||
| //                    } | ||||
| // | ||||
| //                    // LOCK against an expired lock. | ||||
| //                    lockMethod.executeImpl(); | ||||
| //                } | ||||
| //                catch (WebDAVServerException e) | ||||
| //                { | ||||
| //                    logger.debug(e); | ||||
| //                    Assert.fail("Document was not locked again, when lock has expired."); | ||||
| //                } | ||||
| //                return null; | ||||
| //                } | ||||
| //            }); | ||||
| // | ||||
| //            // Remove test folder. | ||||
| //            nodeService.deleteNode(folderNodeRef); | ||||
| //        } | ||||
| //        finally | ||||
| //        { | ||||
| //            Logger.getLogger("org.alfresco.webdav.protocol").setLevel(webdavProtocolSaveLogLevel); | ||||
| //            Logger.getLogger("org.alfresco.repo.webdav").setLevel(repoWebdavSaveLogLevel); | ||||
| //        } | ||||
| //    } | ||||
|      | ||||
|     private void assertStatusCode(int expectedStatusCode, String userAgent) | ||||
|     { | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|     <parent> | ||||
|         <groupId>org.alfresco</groupId> | ||||
|         <artifactId>alfresco-community-repo</artifactId> | ||||
|         <version>14.143</version> | ||||
|         <version>23.1.0.23-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <dependencies> | ||||
| @@ -713,7 +713,7 @@ | ||||
|         <dependency> | ||||
|             <groupId>org.alfresco</groupId> | ||||
|             <artifactId>alfresco-transform-model</artifactId> | ||||
|             <version>${dependency.alfresco-transform-model.version}</version> | ||||
|             <version>${dependency.alfresco-transform-core.version}</version> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- Test dependencies --> | ||||
| @@ -735,7 +735,7 @@ | ||||
|         <dependency> | ||||
|             <groupId>org.alfresco</groupId> | ||||
|             <artifactId>alfresco-transform-model</artifactId> | ||||
|             <version>${dependency.alfresco-transform-model.version}</version> | ||||
|             <version>${dependency.alfresco-transform-core.version}</version> | ||||
|             <classifier>tests</classifier> | ||||
|             <scope>test</scope> | ||||
|         </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 | ||||
|  * Alfresco Repository | ||||
|  * %% | ||||
|  * Copyright (C) 2005 - 2020 Alfresco Software Limited | ||||
|  * 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  | ||||
| @@ -33,7 +33,14 @@ import java.util.HashMap; | ||||
| import java.util.HashSet; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Objects; | ||||
| import java.util.Optional; | ||||
| import java.util.Properties; | ||||
| 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.repo.action.evaluator.ActionConditionEvaluator; | ||||
| @@ -120,6 +127,8 @@ public class ActionServiceImpl implements ActionService, RuntimeActionService, A | ||||
|     private ActionTrackingService actionTrackingService; | ||||
|     private PolicyComponent policyComponent; | ||||
|     private ActionServiceMonitor monitor; | ||||
|     private Properties configProperties; | ||||
|     private ActionExecutionValidator actionExecutionValidator; | ||||
|  | ||||
|     /** | ||||
|      * The asynchronous action execution queues map of name, queue | ||||
| @@ -237,6 +246,16 @@ public class ActionServiceImpl implements ActionService, RuntimeActionService, A | ||||
|         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}. | ||||
|      * @param key String | ||||
| @@ -256,6 +275,11 @@ public class ActionServiceImpl implements ActionService, RuntimeActionService, A | ||||
|                     ActionModel.TYPE_ACTION_PARAMETER, new JavaBehaviour(this, "getCopyCallback")); | ||||
|         this.policyComponent.bindClassBehaviour(QName.createQName(NamespaceService.ALFRESCO_URI, "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); | ||||
|     } | ||||
|  | ||||
|     @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 | ||||
|  * Alfresco Repository | ||||
|  * %% | ||||
|  * Copyright (C) 2005 - 2016 Alfresco Software Limited | ||||
|  * 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  | ||||
| @@ -125,4 +125,14 @@ public interface RuntimeActionService | ||||
|      * @return true if it was handled, false for default handling | ||||
|      */ | ||||
|     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) | ||||
|             { | ||||
|                 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) | ||||
|                         { | ||||
|                             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; | ||||
|  | ||||
| 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.Authentication; | ||||
| import net.sf.acegisecurity.ConfigAttribute; | ||||
| import net.sf.acegisecurity.ConfigAttributeDefinition; | ||||
| import net.sf.acegisecurity.afterinvocation.AfterInvocationProvider; | ||||
|  | ||||
| import org.alfresco.opencmis.search.CMISResultSet; | ||||
| import org.alfresco.repo.search.SearchEngineResultSet; | ||||
| import org.alfresco.repo.search.SimpleResultSetMetaData; | ||||
| 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.security.authentication.AuthenticationUtil; | ||||
| 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.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 | ||||
|  *  | ||||
| @@ -276,8 +275,8 @@ public class ACLEntryAfterInvocationProvider implements AfterInvocationProvider, | ||||
|             { | ||||
|                 return decide(authentication, object, config, (ChildAssociationRef) returnedObject); | ||||
|             } | ||||
|             else if (SolrJSONResultSet.class.isAssignableFrom(returnedObject.getClass()) && | ||||
|                         (!anyDenyDenies || (!postProcessDenies && ((SolrJSONResultSet)returnedObject).getProcessedDenies()))) | ||||
|             else if (SearchEngineResultSet.class.isAssignableFrom(returnedObject.getClass()) && | ||||
|                         (!anyDenyDenies || (!postProcessDenies && ((SearchEngineResultSet)returnedObject).getProcessedDenies()))) | ||||
|             { | ||||
|                 return returnedObject; | ||||
|             } | ||||
|   | ||||
| @@ -75,6 +75,9 @@ | ||||
|         <property name="monitor"> | ||||
|             <ref bean="actionServiceMonitor"/> | ||||
|         </property> | ||||
|         <property name="configurationProperties"> | ||||
|             <ref bean="global-properties"/> | ||||
|         </property> | ||||
|     </bean> | ||||
|  | ||||
|     <bean id="defaultAsynchronousActionExecutionQueue" class="org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl" init-method="init"> | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| repository.name=Main Repository | ||||
|  | ||||
| # Schema number | ||||
| version.schema=16000 | ||||
| version.schema=17000 | ||||
|  | ||||
| # Directory configuration | ||||
|  | ||||
|   | ||||
| @@ -176,6 +176,7 @@ import org.junit.runners.Suite; | ||||
|     org.alfresco.repo.action.CompositeActionImplTest.class, | ||||
|     org.alfresco.repo.action.CompositeActionConditionImplTest.class, | ||||
|     org.alfresco.repo.action.executer.TransformActionExecuterTest.class, | ||||
|     org.alfresco.repo.action.PrivateActionValidationTest.class, | ||||
|     org.alfresco.repo.audit.AuditableAnnotationTest.class, | ||||
|     org.alfresco.repo.audit.PropertyAuditFilterTest.class, | ||||
|     org.alfresco.repo.audit.access.NodeChangeTest.class, | ||||
|   | ||||
| @@ -25,6 +25,9 @@ | ||||
|  */ | ||||
| package org.alfresco.opencmis; | ||||
|  | ||||
| import static java.time.Duration.of; | ||||
| import static java.time.temporal.ChronoUnit.MILLIS; | ||||
|  | ||||
| import java.io.ByteArrayInputStream; | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| @@ -61,7 +64,7 @@ import org.alfresco.util.ApplicationContextHelper; | ||||
| import org.alfresco.util.FileFilterMode.Client; | ||||
| import org.alfresco.util.GUID; | ||||
| 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.aopalliance.intercept.MethodInterceptor; | ||||
| 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.BindingType; | ||||
| 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.impl.dataobjects.ContentStreamImpl; | ||||
| 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.springframework.aop.framework.ProxyFactory; | ||||
| import org.springframework.context.ApplicationContext; | ||||
| import org.springframework.dao.ConcurrencyFailureException; | ||||
|  | ||||
| /** | ||||
|  * Tests basic local CMIS interaction | ||||
| @@ -467,7 +472,6 @@ public class OpenCmisLocalTest extends TestCase | ||||
|      * This test would have fit better within CheckOutCheckInServiceImplTest but | ||||
|      * was added here to make use of existing methods | ||||
|      */ | ||||
|     @Category(FrequentlyFailingTests.class) // ACS-962 | ||||
|     public void testCancelCheckoutWhileInCheckedOutState() | ||||
|     { | ||||
|         ServiceRegistry serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY); | ||||
| @@ -484,7 +488,7 @@ public class OpenCmisLocalTest extends TestCase | ||||
|  | ||||
|         // Set file properties | ||||
|         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.NAME, docname); | ||||
| @@ -501,7 +505,9 @@ public class OpenCmisLocalTest extends TestCase | ||||
|         NodeRef doc1WorkingCopy = cociService.getWorkingCopy(doc1NodeRef); | ||||
|  | ||||
|         /* 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 */ | ||||
|         NodeService nodeService = serviceRegistry.getNodeService(); | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  * #%L | ||||
|  * Alfresco Repository | ||||
|  * %% | ||||
|  * Copyright (C) 2005 - 2016 Alfresco Software Limited | ||||
|  * 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  | ||||
| @@ -25,28 +25,27 @@ | ||||
|  */ | ||||
| package org.alfresco.repo.action; | ||||
|  | ||||
| import static org.alfresco.repo.action.ActionExecutionContext.builder; | ||||
|  | ||||
| import java.io.Serializable; | ||||
| import java.lang.reflect.Field; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| import java.util.Date; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Properties; | ||||
|  | ||||
| import org.alfresco.model.ContentModel; | ||||
| import org.alfresco.repo.action.evaluator.ComparePropertyValueEvaluator; | ||||
| import org.alfresco.repo.action.evaluator.InCategoryEvaluator; | ||||
| import org.alfresco.repo.action.evaluator.NoConditionEvaluator; | ||||
| 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.AddFeaturesActionExecuter; | ||||
| import org.alfresco.repo.action.executer.CheckInActionExecuter; | ||||
| import org.alfresco.repo.action.executer.CheckOutActionExecuter; | ||||
| import org.alfresco.repo.action.executer.CompositeActionExecuter; | ||||
| import org.alfresco.repo.action.executer.MoveActionExecuter; | ||||
| import org.alfresco.repo.action.executer.ScriptActionExecuter; | ||||
| import org.alfresco.repo.content.MimetypeMap; | ||||
| import org.alfresco.repo.security.authentication.AuthenticationUtil; | ||||
| 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.coci.CheckOutCheckInService; | ||||
| 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.NodeService; | ||||
| 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.transaction.TransactionService; | ||||
| import org.alfresco.test_category.BaseSpringTestsCategory; | ||||
| import org.alfresco.util.ApplicationContextHelper; | ||||
| import org.alfresco.util.BaseAlfrescoSpringTest; | ||||
| import org.alfresco.util.GUID; | ||||
| import org.alfresco.util.PropertyMap; | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
| import org.junit.experimental.categories.Category; | ||||
| @@ -103,13 +97,18 @@ public class ActionServiceImplTest extends BaseAlfrescoSpringTest | ||||
|     private NodeRef nodeRef; | ||||
|     private NodeRef folder; | ||||
|     private RetryingTransactionHelper transactionHelper; | ||||
|     private Properties globalConfig; | ||||
|     private RuntimeActionService runtimeActionService; | ||||
|  | ||||
|      | ||||
|     @Before | ||||
|     public void before() throws Exception | ||||
|     { | ||||
|         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 | ||||
|         this.nodeRef = this.nodeService.createNode( | ||||
| @@ -1296,6 +1295,89 @@ public class ActionServiceImplTest extends BaseAlfrescoSpringTest | ||||
|        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. | ||||
|      *  | ||||
| @@ -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 | ||||
|     { | ||||
|   | ||||
| @@ -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.SECONDS; | ||||
|  | ||||
| import java.time.Duration; | ||||
| import java.util.concurrent.atomic.AtomicInteger; | ||||
|  | ||||
| import junit.framework.AssertionFailedError; | ||||
| @@ -44,6 +43,7 @@ import org.alfresco.service.namespace.QName; | ||||
| import org.alfresco.service.transaction.TransactionService; | ||||
| import org.alfresco.test_category.OwnJVMTestsCategory; | ||||
| import org.alfresco.util.ApplicationContextHelper; | ||||
| import org.alfresco.util.TestHelper; | ||||
| import org.alfresco.util.testing.category.DBTests; | ||||
| import org.apache.commons.logging.Log; | ||||
| import org.apache.commons.logging.LogFactory; | ||||
| @@ -549,22 +549,22 @@ public class JobLockServiceTest extends TestCase | ||||
|              | ||||
|             if (callback == null) throw new IllegalStateException(); | ||||
|  | ||||
|             waitForAssertion(of(100, MILLIS), () -> { | ||||
|             TestHelper.waitForMethodToFinish(of(100, MILLIS), () -> { | ||||
|                 assertEquals(false,callback.released); | ||||
|                 assertEquals(0,callback.getIsActiveCount()); | ||||
|             }); | ||||
|             }, AssertionFailedError.class); | ||||
|  | ||||
|             waitForAssertion(of(1, SECONDS), () -> { | ||||
|             TestHelper.waitForMethodToFinish(of(1, SECONDS), () -> { | ||||
|                 assertEquals(false, callback.released); | ||||
|                 assertEquals(1, callback.getIsActiveCount()); | ||||
|             }); | ||||
|             }, AssertionFailedError.class); | ||||
|  | ||||
|             callback.isActive = false; | ||||
|  | ||||
|             waitForAssertion(of(2, SECONDS), () -> { | ||||
|             TestHelper.waitForMethodToFinish(of(2, SECONDS), () -> { | ||||
|                 assertEquals(true, callback.released); | ||||
|                 assertEquals(2, callback.getIsActiveCount()); | ||||
|             }); | ||||
|             }, AssertionFailedError.class); | ||||
|         } | ||||
|         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 | ||||
|     { | ||||
|         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.fail; | ||||
|  | ||||
| import java.time.Duration; | ||||
| import java.util.Arrays; | ||||
| 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. | ||||
|  * | ||||
| @@ -39,6 +44,8 @@ import java.util.function.Supplier; | ||||
|  */ | ||||
| public class TestHelper | ||||
| { | ||||
|     private static final Log logger = LogFactory.getLog(TestHelper.class); | ||||
|  | ||||
|     /** | ||||
|      * Checks the thrown exception is the expected exception. | ||||
|      * | ||||
| @@ -94,4 +101,59 @@ public class TestHelper | ||||
|  | ||||
|         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> | ||||
|    </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"> | ||||
|        <property name="name"> | ||||
|            <value>preventMultipleSleepActions</value> | ||||
| @@ -31,4 +43,28 @@ | ||||
|    <bean id="transient-fail-action" | ||||
|          class="org.alfresco.repo.action.ActionServiceImplTest$TransientFailActionExecuter" | ||||
|          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> | ||||
|   | ||||
| @@ -7,8 +7,27 @@ pushd "$(dirname "${BASH_SOURCE[0]}")/../../" | ||||
| source "$(dirname "${BASH_SOURCE[0]}")/build_functions.sh" | ||||
|  | ||||
|  | ||||
| # Build the current project | ||||
| mvn -B -V install -DskipTests -Dmaven.javadoc.skip=true -Pbuild-docker-images -Pags | ||||
| # Build the current project if needed | ||||
| 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 | ||||
|   | ||||
| @@ -1,20 +1,5 @@ | ||||
| #!/usr/bin/env bash | ||||
| set -ev | ||||
|  | ||||
| rm -rf "${HOME}/.m2/repository/org/alfresco/acs-community-packaging" | ||||
| 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*" | ||||
| find "${HOME}/.m2/repository/" -type d -name "*-SNAPSHOT" | xargs -r -l rm -rf | ||||
|  | ||||
|   | ||||
							
								
								
									
										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 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 push | ||||
| else | ||||
|   | ||||
		Reference in New Issue
	
	Block a user