diff --git a/e2e-test/qa/compatibility/.env b/e2e-test/qa/compatibility/.env new file mode 100644 index 000000000..be96f1b9c --- /dev/null +++ b/e2e-test/qa/compatibility/.env @@ -0,0 +1,11 @@ +# docker-compose related environments +ALFRESCO_IMAGE=quay.io/alfresco/alfresco-governance-repository-enterprise +ALFRESCO_TAG=latest +SHARE_IMAGE=quay.io/alfresco/alfresco-governance-share-enterprise +SHARE_TAG=latest +POSTGRES_IMAGE=postgres +POSTGRES_TAG=10.1 +SEARCH_IMAGE=quay.io/alfresco/insight-engine +SEARCH_TAG=latest +ACTIVEMQ_IMAGE=alfresco/alfresco-activemq +ACTIVEMQ_TAG=5.15.6 \ No newline at end of file diff --git a/e2e-test/qa/compatibility/Makefile b/e2e-test/qa/compatibility/Makefile new file mode 100644 index 000000000..2844d8cb6 --- /dev/null +++ b/e2e-test/qa/compatibility/Makefile @@ -0,0 +1,9 @@ +include ../Makefile +include .env + +# CURRENT_DIR is the folder where this Makefile is saved +CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + +start: ## 0 - starts search service with SSL enabled + $(dc) config && $(dc) up -d && \ + make wait \ No newline at end of file diff --git a/e2e-test/qa/compatibility/docker-compose.yml b/e2e-test/qa/compatibility/docker-compose.yml new file mode 100644 index 000000000..6c07160e3 --- /dev/null +++ b/e2e-test/qa/compatibility/docker-compose.yml @@ -0,0 +1,65 @@ +version: '3' +services: + alfresco: + image: ${ALFRESCO_IMAGE}:${ALFRESCO_TAG} + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=search + -Dsolr.port=8983 + -Dsolr.secureComms=none + -Dsolr.base.url=/solr + -Dindex.subsystem.name=solr6 + -Dalfresco.restApi.basicAuthScheme=true + -Ddeployment.method=DOCKER_COMPOSE + -Dcsrf.filter.enabled=false + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Xms1g -Xmx1g + " + ports: + - "7203:7203" #JMX connect via service:jmx:rmi:///jndi/rmi://localhost:7203/jmxrmi + - "5005:5005" #Java debugging + - "8081:8080" #Browser port for Alfresco + + share: + image: ${SHARE_IMAGE}:${SHARE_TAG} + environment: + - REPO_HOST=alfresco + - REPO_PORT=8080 + - "CATALINA_OPTS= -Xms500m -Xmx500m" + ports: + - 8082:8080 #Browser port for Share + + postgres: + image: ${POSTGRES_IMAGE}:${POSTGRES_TAG} + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + ports: + - 5432:5432 + + search: + image: ${SEARCH_IMAGE}:${SEARCH_TAG} + environment: + #Solr needs to know how to register itself with Alfresco + - SOLR_ALFRESCO_HOST=alfresco + - SOLR_ALFRESCO_PORT=8080 + #Alfresco needs to know how to call solr + - SOLR_SOLR_HOST=search + - SOLR_SOLR_PORT=8983 + #Create the default alfresco and archive cores + - SOLR_CREATE_ALFRESCO_DEFAULTS=alfresco,archive + ports: + - 8083:8983 #Browser port + + activemq: + image: ${ACTIVEMQ_IMAGE}:${ACTIVEMQ_TAG} + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP diff --git a/e2e-test/qa/search/backup/.env b/e2e-test/qa/search/backup/.env new file mode 100644 index 000000000..4b81b609b --- /dev/null +++ b/e2e-test/qa/search/backup/.env @@ -0,0 +1,11 @@ +# docker-compose related environments +ALFRESCO_IMAGE=alfresco/alfresco-content-repository +ALFRESCO_TAG=6.1.0-EA3 +SHARE_IMAGE=alfresco/alfresco-share +SHARE_TAG=6.0 +POSTGRES_IMAGE=postgres +POSTGRES_TAG=10.1 +SEARCH_IMAGE=quay.io/alfresco/search-services +SEARCH_TAG=latest +ACTIVEMQ_IMAGE=alfresco/alfresco-activemq +ACTIVEMQ_TAG=5.15.6 \ No newline at end of file diff --git a/e2e-test/qa/search/backup/Makefile b/e2e-test/qa/search/backup/Makefile new file mode 100644 index 000000000..16a5472df --- /dev/null +++ b/e2e-test/qa/search/backup/Makefile @@ -0,0 +1,68 @@ +include ../../Makefile +include .env + +# the suffix of the backup taken in time. It can be overriden on runtime: make SUFIX=T1 backup-perform +SUFIX ?=T0 +# CURRENT_DIR is the folder where this Makefile is saved +CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + +# this is used also in compose yml files +export HOST_BACKUP_LOCATION:=$(CURRENT_DIR)/host-bkp + +ifeq ($(dc-backup),) + dc-backup:=$(dc) -f ../docker-compose.yml -f docker-compose.backup.yml +endif + +backup-prepare: clean ## 1 - prepare backup for testing + @echo "Starting Backup Prepare" && \ + $(sudo) rm -rf $(HOST_BACKUP_LOCATION) && \ + mkdir -p $(HOST_BACKUP_LOCATION)/alf_data && \ + mkdir -p $(HOST_BACKUP_LOCATION)/solr/archive && \ + mkdir -p $(HOST_BACKUP_LOCATION)/solr/alfresco && \ + mkdir -p $(HOST_BACKUP_LOCATION)/db && \ + $(sudo) chmod -R 777 $(HOST_BACKUP_LOCATION) && \ + $(dc-backup) up -d + +backup-perform: ## 2 - perform the backup of alf_data and db data + @echo "Starting Backup Perform" && \ + $(sudo) rm -rf $(HOST_BACKUP_LOCATION)_$(SUFIX) && \ + $(sudo) chmod -R 777 $(HOST_BACKUP_LOCATION) && \ + $(dc-backup) stop alfresco && \ + $(dc-backup) exec postgres bash -c 'pg_dump --dbname=postgresql://alfresco:alfresco@127.0.0.1:5432/alfresco' > $(HOST_BACKUP_LOCATION)/db/alfresco.pg && \ + cp -R $(HOST_BACKUP_LOCATION) $(HOST_BACKUP_LOCATION)_$(SUFIX) && \ + $(dc-backup) start alfresco + +backup-restore: clean ## 3 - start restoring from backup location + @echo "Starting Backup Restore" && \ + $(sudo) rm -rf $(HOST_BACKUP_LOCATION) && \ + mkdir -p $(HOST_BACKUP_LOCATION) && \ + cp -rf $(HOST_BACKUP_LOCATION)_$(SUFIX)/alf_data $(HOST_BACKUP_LOCATION)/alf_data && \ + cp -rf $(HOST_BACKUP_LOCATION)_$(SUFIX)/db/ $(HOST_BACKUP_LOCATION)/db/ && \ + cp -rf $(HOST_BACKUP_LOCATION)_$(SUFIX)/solr $(HOST_BACKUP_LOCATION)/solr && \ + $(sudo) chmod -R 777 $(HOST_BACKUP_LOCATION) && \ + $(dc-backup) up -d postgres && sleep 30 && \ + $(dc-backup) exec postgres bash -c 'psql --dbname=postgresql://alfresco:alfresco@127.0.0.1:5432/alfresco < /backup/db/alfresco.pg' && \ + $(dc-backup) up -d + +all: show-config ## 0 - executes the entire backup process + # perform the backup and waits until the server is starting + # do some change on backed up data + # then restore from backup and check the content is restored as expected + make backup-prepare wait && \ + make run-mvn-tests suiteXmlFile=./src/test/resources/search-pre-backup-suite.xml + + make backup-perform wait && \ + make run-mvn-tests suiteXmlFile=./src/test/resources/search-on-backup-suite.xml + + make backup-restore wait && \ + make run-mvn-tests suiteXmlFile=./src/test/resources/search-post-backup-suite.xml + +show-config: ## show compose configuration + $(dc-backup) config + +clean: ## kill containers, remove volumes and data + $(dc-backup) kill && $(dc-backup) rm -fv + $(sudo) rm -rf $(HOST_BACKUP_LOCATION) + +tail-logs: ## tails all container logs + $(dc-backup) logs -f diff --git a/e2e-test/qa/search/backup/README.md b/e2e-test/qa/search/backup/README.md new file mode 100644 index 000000000..2f1679ccc --- /dev/null +++ b/e2e-test/qa/search/backup/README.md @@ -0,0 +1,49 @@ +# About + +Testing the Backup of SearchService product + +**Build Plan:** https://bamboo.alfresco.com/bamboo/browse/SAD-QAB + +![](docs/backup.png?raw=true) + +# Steps + +* **a)** prepare the backup +```shel +make backup-prepare wait +``` +>more details on Makefile [task](Makefile#L27). + +* **b)** create some data manually or using automated tests found on this project +```shel +make run-mvn-tests suiteXmlFile=./src/test/resources/search-pre-backup-suite.xml +``` + +* **c)** perform the backup of data +```shel +make backup-perform wait +``` +* **d)** now you can also update the data/remove it from TS, or even remove the entire volumes +```shel +make run-mvn-tests suiteXmlFile=./src/test/resources/search-on-backup-suite.xml +# or +make clean +``` +* **e)** at any time you can restore the backup +```shel +make backup-restore wait +``` +* **f)** now you can check the data from point **b)** is corectly recovered +```shel +make run-mvn-tests suiteXmlFile=./src/test/resources/search-post-backup-suite.xml +``` + +# All in one +At any time you can run the `make all` taks that will execute all the above commands for you + +```shel +make all +``` + +# Environment Settings +Pay attention at the values that exist in [.env](.env) file. These settings will be picked up in custom docker-compose.*.yml file(s) diff --git a/e2e-test/qa/search/backup/docker-compose.backup.yml b/e2e-test/qa/search/backup/docker-compose.backup.yml new file mode 100644 index 000000000..71b61f3e4 --- /dev/null +++ b/e2e-test/qa/search/backup/docker-compose.backup.yml @@ -0,0 +1,39 @@ +version: '3' +services: + alfresco: + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=search + -Dsolr.port=8983 + -Dsolr.secureComms=none + -Dsolr.base.url=/solr + -Dindex.subsystem.name=solr6 + -Dalfresco.restApi.basicAuthScheme=true + -Ddeployment.method=DOCKER_COMPOSE + -Dcsrf.filter.enabled=false + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + -Dsolr.backup.alfresco.remoteBackupLocation=/backup/solr/alfresco/ + -Dsolr.backup.alfresco.numberToKeep=1 + -Dsolr.backup.archive.remoteBackupLocation=/backup/solr/archive/ + -Dsolr.backup.archive.numberToKeep=1" + volumes: + - ${HOST_BACKUP_LOCATION}/alf_data:/usr/local/tomcat/alf_data + + search: + environment: + - VERSION=${SEARCH_TAG} + image: ${SEARCH_IMAGE}:${SEARCH_TAG} + volumes: + - ${HOST_BACKUP_LOCATION}/solr:/backup/solr + + postgres: + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + volumes: + - ${HOST_BACKUP_LOCATION}/db:/backup/db \ No newline at end of file diff --git a/e2e-test/qa/search/backup/docs/backup.png b/e2e-test/qa/search/backup/docs/backup.png new file mode 100644 index 000000000..2bec6377f Binary files /dev/null and b/e2e-test/qa/search/backup/docs/backup.png differ diff --git a/e2e-test/qa/search/custom/.env b/e2e-test/qa/search/custom/.env new file mode 100644 index 000000000..4b81b609b --- /dev/null +++ b/e2e-test/qa/search/custom/.env @@ -0,0 +1,11 @@ +# docker-compose related environments +ALFRESCO_IMAGE=alfresco/alfresco-content-repository +ALFRESCO_TAG=6.1.0-EA3 +SHARE_IMAGE=alfresco/alfresco-share +SHARE_TAG=6.0 +POSTGRES_IMAGE=postgres +POSTGRES_TAG=10.1 +SEARCH_IMAGE=quay.io/alfresco/search-services +SEARCH_TAG=latest +ACTIVEMQ_IMAGE=alfresco/alfresco-activemq +ACTIVEMQ_TAG=5.15.6 \ No newline at end of file diff --git a/e2e-test/qa/search/custom/Dockerfile b/e2e-test/qa/search/custom/Dockerfile new file mode 100644 index 000000000..b37b029ff --- /dev/null +++ b/e2e-test/qa/search/custom/Dockerfile @@ -0,0 +1,16 @@ +ARG SEARCH_TAG=latest +FROM quay.io/alfresco/search-services:$SEARCH_TAG +LABEL creator="Paul Brodner" maintainer="Alfresco Search Services Team" + +ARG SCRIPTS_FOLDER= + +USER root +RUN echo " &" >> $DIST_DIR/solr/bin/search_config_setup.sh && \ + echo "bash -c \"find $DIST_DIR/scripts/ -maxdepth 1 -type f -executable -name '*.sh' -exec {} \\;\"" >> $DIST_DIR/solr/bin/search_config_setup.sh && \ + echo "bash -c \"tail -f $DIST_DIR/logs/solr.log\"" >> $DIST_DIR/solr/bin/search_config_setup.sh + +USER solr +COPY ${SCRIPTS_FOLDER}/* ${DIST_DIR}/scripts/ + +# we need this, because we tail on it in the search_config_setup.sh (see above) +RUN touch ./logs/solr.log \ No newline at end of file diff --git a/e2e-test/qa/search/custom/Makefile b/e2e-test/qa/search/custom/Makefile new file mode 100644 index 000000000..3114c2a0d --- /dev/null +++ b/e2e-test/qa/search/custom/Makefile @@ -0,0 +1,21 @@ +include ../../Makefile +include .env + +# CURRENT_DIR is the folder where this Makefile is saved +CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + +ifeq ($(dc-custom),) + dc-custom:=$(dc) -f ../docker-compose.yml -f docker-compose.custom.yml +endif + + +## ---- CUSTOM +build: ## 1 - build a custom image: $ make SCRIPTS_FOLDER=spellcheck build +ifndef SCRIPTS_FOLDER + @echo SCRIPTS_FOLDER not defined "Usage: make SCRIPTS_FOLDER=spellcheck build" + exit 1 +endif + $(dc-custom) build --force-rm --no-cache --pull --build-arg SCRIPTS_FOLDER=$(SCRIPTS_FOLDER) + +start: ## 2 - starts the custom image built: $ make start + $(dc-custom) up -d && make wait diff --git a/e2e-test/qa/search/custom/README.md b/e2e-test/qa/search/custom/README.md new file mode 100644 index 000000000..082a1eb01 --- /dev/null +++ b/e2e-test/qa/search/custom/README.md @@ -0,0 +1,25 @@ +# About + +Start Search Service with a custom configuration + +# Steps + +* **a)** under `custom` folder create a new folder that will hold all settings +>checkout [spellcheck](.spellcheck) folder for example + +>add here any shell scripts that will enable/disable a particular setting + +* **b)** build the new image setting SCRIPTS_FOLDER to you folder already created +```shel +make SCRIPTS_FOLDER=spellcheck build +``` +>notice that out [docker-compose.custom.yml](.custom/docker-compose.custom.yml) file is using a [Dockerfile](.custom/Dockerfile) to built you new image. +> at runtime, all shell scripts from your folder are executed and the settings are applied. + +* **c)** the image is built locally, now start it up +```shel +make start +``` + +# Environment Settings +Pay attention at the values that exist in [.env](.env) file. These settings will be picked up in custom docker-compose.*.yml file(s) diff --git a/e2e-test/qa/search/custom/docker-compose.custom.yml b/e2e-test/qa/search/custom/docker-compose.custom.yml new file mode 100644 index 000000000..bba4ea17c --- /dev/null +++ b/e2e-test/qa/search/custom/docker-compose.custom.yml @@ -0,0 +1,9 @@ +version: '3' +services: + search: + build: + context: ./custom + dockerfile: Dockerfile + image: quay.io/alfresco/search-services-custom:${SEARCH_TAG} + volumes: + - .:/backup diff --git a/e2e-test/qa/search/custom/spellcheck/enable-spellcheck.sh b/e2e-test/qa/search/custom/spellcheck/enable-spellcheck.sh new file mode 100755 index 000000000..d241ed55d --- /dev/null +++ b/e2e-test/qa/search/custom/spellcheck/enable-spellcheck.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -ex + +echo "Enabling SpellCheck" +cat <> /opt/alfresco-search-services/solrhome/conf/shared.properties + +# Enabling SpellCheck +# configuration: +# * http://docs.alfresco.com/6.0/concepts/solr-shared-properties.html +# * https://docs.alfresco.com/5.2/tasks/solr6-install-withoutSSL.html +# test it: http://docs.alfresco.com/6.0/concepts/search-api-spellcheck.html + +# Suggestable Properties +alfresco.suggestable.property.0={http://www.alfresco.org/model/content/1.0}name +alfresco.suggestable.property.1={http://www.alfresco.org/model/content/1.0}title +alfresco.suggestable.property.2={http://www.alfresco.org/model/content/1.0}description +alfresco.suggestable.property.3={http://www.alfresco.org/model/content/1.0}content + +EOF \ No newline at end of file diff --git a/e2e-test/qa/search/docker-compose.yml b/e2e-test/qa/search/docker-compose.yml new file mode 100644 index 000000000..b18d4fdd1 --- /dev/null +++ b/e2e-test/qa/search/docker-compose.yml @@ -0,0 +1,63 @@ +version: '3' +services: + alfresco: + image: ${ALFRESCO_IMAGE}:${ALFRESCO_TAG} + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=search + -Dsolr.port=8983 + -Dsolr.secureComms=none + -Dsolr.base.url=/solr + -Dindex.subsystem.name=solr6 + -Dalfresco.restApi.basicAuthScheme=true + -Ddeployment.method=DOCKER_COMPOSE + -Dcsrf.filter.enabled=false + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + " + ports: + - "7203:7203" #JMX connect via service:jmx:rmi:///jndi/rmi://localhost:7203/jmxrmi + - "5005:5005" #Java debugging + - "8081:8080" #Browser port for Alfresco + + share: + image: ${SHARE_IMAGE}:${SHARE_TAG} + environment: + - REPO_HOST=alfresco + - REPO_PORT=8080 + ports: + - 8082:8080 #Browser port for Share + + postgres: + image: ${POSTGRES_IMAGE}:${POSTGRES_TAG} + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + ports: + - 5432:5432 + + search: + image: ${SEARCH_IMAGE}:${SEARCH_TAG} + environment: + #Solr needs to know how to register itself with Alfresco + - SOLR_ALFRESCO_HOST=alfresco + - SOLR_ALFRESCO_PORT=8080 + #Alfresco needs to know how to call solr + - SOLR_SOLR_HOST=search + - SOLR_SOLR_PORT=8983 + #Create the default alfresco and archive cores + - SOLR_CREATE_ALFRESCO_DEFAULTS=alfresco,archive + ports: + - 8083:8983 #Browser port + + activemq: + image: ${ACTIVEMQ_IMAGE}:${ACTIVEMQ_TAG} + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP diff --git a/e2e-test/qa/search/master-master/.env b/e2e-test/qa/search/master-master/.env new file mode 100644 index 000000000..4b81b609b --- /dev/null +++ b/e2e-test/qa/search/master-master/.env @@ -0,0 +1,11 @@ +# docker-compose related environments +ALFRESCO_IMAGE=alfresco/alfresco-content-repository +ALFRESCO_TAG=6.1.0-EA3 +SHARE_IMAGE=alfresco/alfresco-share +SHARE_TAG=6.0 +POSTGRES_IMAGE=postgres +POSTGRES_TAG=10.1 +SEARCH_IMAGE=quay.io/alfresco/search-services +SEARCH_TAG=latest +ACTIVEMQ_IMAGE=alfresco/alfresco-activemq +ACTIVEMQ_TAG=5.15.6 \ No newline at end of file diff --git a/e2e-test/qa/search/master-master/README.md b/e2e-test/qa/search/master-master/README.md new file mode 100644 index 000000000..9a7c342f2 --- /dev/null +++ b/e2e-test/qa/search/master-master/README.md @@ -0,0 +1,22 @@ +# About + +Start Alfresco services and scale SOLR to multiple instances, behind a LB. + +# Steps + +* **a)** Start Alfresco + +``` +docker-compose up -d +``` + +* **b)** Scale SOLR to 2 instances + +``` +docker-compose scale solr=2 +``` + +>it's possible at this time to restart `alfresco` service if there are not results returned by LB +``` + docker-compose restart alfresco + ``` \ No newline at end of file diff --git a/e2e-test/qa/search/master-master/docker-compose.yml b/e2e-test/qa/search/master-master/docker-compose.yml new file mode 100644 index 000000000..b7047bcd4 --- /dev/null +++ b/e2e-test/qa/search/master-master/docker-compose.yml @@ -0,0 +1,72 @@ +version: '3' +services: + alfresco: + image: ${ALFRESCO_IMAGE}:${ALFRESCO_TAG} + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=search + -Dsolr.port=80 + -Dsolr.secureComms=none + -Dsolr.base.url=/solr + -Dindex.subsystem.name=solr6 + -Dalfresco.restApi.basicAuthScheme=true + -Ddeployment.method=DOCKER_COMPOSE + -Dcsrf.filter.enabled=false + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + " + ports: + - "7203:7203" #JMX connect via service:jmx:rmi:///jndi/rmi://localhost:7203/jmxrmi + - "5005:5005" #Java debugging + - "8081:8080" #Browser port for Alfresco + + share: + image: ${SHARE_IMAGE}:${SHARE_TAG} + environment: + - REPO_HOST=alfresco + - REPO_PORT=8080 + ports: + - 8082:8080 #Browser port for Share + + postgres: + image: ${POSTGRES_IMAGE}:${POSTGRES_TAG} + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + ports: + - 5432:5432 + + search: + image: dockercloud/haproxy + links: + - solr + ports: + - 8083:80 #Browser port + volumes: + - /var/run/docker.sock:/var/run/docker.sock + + solr: + image: ${SEARCH_IMAGE}:${SEARCH_TAG} + environment: + #Solr needs to know how to register itself with Alfresco + - SOLR_ALFRESCO_HOST=alfresco + - SOLR_ALFRESCO_PORT=8080 + #Alfresco needs to know how to call solr + - SOLR_SOLR_HOST=search + - SOLR_SOLR_PORT=8983 + #Create the default alfresco and archive cores + - SOLR_CREATE_ALFRESCO_DEFAULTS=alfresco,archive + ports: + - 8983 #Browser port + + activemq: + image: ${ACTIVEMQ_IMAGE}:${ACTIVEMQ_TAG} + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP \ No newline at end of file diff --git a/e2e-test/qa/search/upgrade/.env b/e2e-test/qa/search/upgrade/.env new file mode 100644 index 000000000..4b81b609b --- /dev/null +++ b/e2e-test/qa/search/upgrade/.env @@ -0,0 +1,11 @@ +# docker-compose related environments +ALFRESCO_IMAGE=alfresco/alfresco-content-repository +ALFRESCO_TAG=6.1.0-EA3 +SHARE_IMAGE=alfresco/alfresco-share +SHARE_TAG=6.0 +POSTGRES_IMAGE=postgres +POSTGRES_TAG=10.1 +SEARCH_IMAGE=quay.io/alfresco/search-services +SEARCH_TAG=latest +ACTIVEMQ_IMAGE=alfresco/alfresco-activemq +ACTIVEMQ_TAG=5.15.6 \ No newline at end of file diff --git a/e2e-test/qa/search/upgrade/Makefile b/e2e-test/qa/search/upgrade/Makefile new file mode 100644 index 000000000..f4cf4dad8 --- /dev/null +++ b/e2e-test/qa/search/upgrade/Makefile @@ -0,0 +1,41 @@ +include ../../Makefile +include .env + +# CURRENT_DIR is the folder where this Makefile is saved +CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + +ifeq ($(dc-upgrade),) + dc-upgrade:=$(dc) -f ../docker-compose.yml -f docker-compose.upgrade.yml +endif + +## ---- UPGRADE +set_version ?=latest # default version that will be used in tasks + +as-previous: clean ## 1 - install the previous version: $ make set_version=1.2.1 as-previous + rm -rf ./solr-data && \ + rm -rf ./solr-contentstore && \ + rm -f ./image-digests.txt + export SEARCH_TAG=$(set_version) && \ + $(dc-upgrade) pull && \ + echo "\n====Previous====" > image-digests.txt && \ + $(dc-upgrade) config --resolve-image-digests >> image-digests.txt && \ + $(dc-upgrade) up -d && \ + docker ps + +as-current: ## 2 - upgrade previous to this version $ make set_version=2.0.x as-current + $(dc-upgrade) kill search && \ + $(dc-upgrade) rm -f search && \ + export SEARCH_TAG=$(set_version) && \ + $(dc-upgrade) pull search && \ + echo "\n====Current====" >> image-digests.txt && \ + $(dc-upgrade) config --resolve-image-digests >> image-digests.txt && \ + $(dc-upgrade) up -d search && \ + docker ps + +# +# Run the following commands if you need to test the upgrade e2e +# +#make set_version=1.2.1 as-previous wait +#make run-mvn-tests suiteXmlFile=./src/test/resources/search-pre-upgrade-suite.xml +#make set_version=2.0.x as-current wait +#make run-mvn-tests suiteXmlFile=./src/test/resources/search-post-upgrade-suite.xml \ No newline at end of file diff --git a/e2e-test/qa/search/upgrade/README.md b/e2e-test/qa/search/upgrade/README.md new file mode 100644 index 000000000..fae181d47 --- /dev/null +++ b/e2e-test/qa/search/upgrade/README.md @@ -0,0 +1,31 @@ +# About + +Testing the Upgrade of SearchService product + +**Build Plan:** https://bamboo.alfresco.com/bamboo/browse/SAD-QAUP + +![](docs/upgrade.png?raw=true) + +# Steps + +* **a)** start the initial version +```shel +make set_version=1.2.1 as-previous wait +``` +>notice that new folders will appear on you "upgrade" folder with data from container(s) + +* **b)** create some data manually or using automated tests found on this project +```shel +make run-mvn-tests suiteXmlFile=./src/test/resources/search-pre-upgrade-suite.xml +``` +* **c)** now upgrade to new version +```shel +make set_version=2.0.x as-current wait +``` +* **d)** and test that upgrade data exist +```shel +make run-mvn-tests suiteXmlFile=./src/test/resources/search-post-upgrade-suite.xml +``` + +# Environment Settings +Pay attention at the values that exist in [.env](.env) file. These settings will be picked up in custom docker-compose.*.yml file(s) diff --git a/e2e-test/qa/search/upgrade/docker-compose.upgrade.yml b/e2e-test/qa/search/upgrade/docker-compose.upgrade.yml new file mode 100644 index 000000000..63ed716b2 --- /dev/null +++ b/e2e-test/qa/search/upgrade/docker-compose.upgrade.yml @@ -0,0 +1,10 @@ +version: '3' +services: + search: + environment: + - VERSION=${SEARCH_TAG} + image: quay.io/alfresco/search-services:${SEARCH_TAG} + volumes: + - "./upgrade/solr-data:/opt/alfresco-search-services/data" + - "./upgrade/solr-contentstore:/opt/alfresco-search-services/contentstore" + \ No newline at end of file diff --git a/e2e-test/qa/search/upgrade/docs/upgrade.png b/e2e-test/qa/search/upgrade/docs/upgrade.png new file mode 100644 index 000000000..3d36c9e54 Binary files /dev/null and b/e2e-test/qa/search/upgrade/docs/upgrade.png differ diff --git a/e2e-test/qa/upgrade/.env b/e2e-test/qa/upgrade/.env new file mode 100644 index 000000000..12e1e73f3 --- /dev/null +++ b/e2e-test/qa/upgrade/.env @@ -0,0 +1,15 @@ +# docker-compose related environments +ALFRESCO_IMAGE=alfresco/alfresco-content-repository +ALFRESCO_TAG=6.1.0-EA3 +SHARE_IMAGE=alfresco/alfresco-share +SHARE_TAG=6.0 +POSTGRES_IMAGE=postgres +POSTGRES_TAG=10.1 +SEARCH_IMAGE=quay.io/alfresco/search-services +SEARCH_TAG=latest +DIST_DIR_PATH=/opt/alfresco-search-services +#SEARCH_IMAGE=quay.io/alfresco/insight-engine +#SEARCH_TAG=lates +#DIST_DIR_PATH=/opt/alfresco-insight-engine +ACTIVEMQ_IMAGE=alfresco/alfresco-activemq +ACTIVEMQ_TAG=5.15.6 \ No newline at end of file diff --git a/e2e-test/qa/upgrade/Makefile b/e2e-test/qa/upgrade/Makefile new file mode 100644 index 000000000..b6be7f6dd --- /dev/null +++ b/e2e-test/qa/upgrade/Makefile @@ -0,0 +1,39 @@ +include ../Makefile +include .env + +# CURRENT_DIR is the folder where this Makefile is saved +CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + +SEARCH_IMAGE ?=quay.io/alfresco/search-services +SEARCH_TAG ?=latest # default version that will be used in tasks + +as-previous: clean ## 1 - install the previous version: $ make SEARCH_IMAGE=quay.io/alfresco/search-services SEARCH_TAG=1.2.1 as-previous + rm -rf ./solr-data && \ + rm -rf ./solr-contentstore && \ + rm -f ./image-digests.txt && \ + export SEARCH_TAG=$(SEARCH_TAG) && \ + export SEARCH_IMAGE=$(SEARCH_IMAGE) && \ + $(dc) pull && \ + echo "\n====Previous====" > image-digests.txt && \ + $(dc) config --resolve-image-digests >> image-digests.txt && \ + $(dc) up -d && \ + docker ps + +as-current: ## 2 - upgrade previous to this version $ make SEARCH_IMAGE=quay.io/alfresco/search-services SEARCH_TAG=2.0.x as-current + $(dc) kill search && \ + $(dc) rm -f search && \ + export SEARCH_TAG=$(SEARCH_TAG) && \ + export SEARCH_IMAGE=$(SEARCH_IMAGE) && \ + $(dc) pull search && \ + echo "\n====Current====" >> image-digests.txt && \ + $(dc) config --resolve-image-digests >> image-digests.txt && \ + $(dc) up -d search && \ + docker ps +# +# Run the following commands if you need to test the upgrade e2e +# +#make SEARCH_IMAGE=quay.io/alfresco/search-services SEARCH_TAG=1.2.1 as-previous wait +#make run-mvn-tests suiteXmlFile=./src/test/resources/search-pre-upgrade-suite.xml + +#make SEARCH_IMAGE=quay.io/alfresco/search-services SEARCH_TAG=2.0.x as-current wait +#make run-mvn-tests suiteXmlFile=./src/test/resources/search-post-upgrade-suite.xml \ No newline at end of file diff --git a/e2e-test/qa/upgrade/docker-compose.yml b/e2e-test/qa/upgrade/docker-compose.yml new file mode 100644 index 000000000..a25eaeebd --- /dev/null +++ b/e2e-test/qa/upgrade/docker-compose.yml @@ -0,0 +1,66 @@ +version: '3' +services: + alfresco: + image: ${ALFRESCO_IMAGE}:${ALFRESCO_TAG} + environment: + JAVA_OPTS : " + -Ddb.driver=org.postgresql.Driver + -Ddb.username=alfresco + -Ddb.password=alfresco + -Ddb.url=jdbc:postgresql://postgres:5432/alfresco + -Dsolr.host=search + -Dsolr.port=8983 + -Dsolr.secureComms=none + -Dsolr.base.url=/solr + -Dindex.subsystem.name=solr6 + -Dalfresco.restApi.basicAuthScheme=true + -Ddeployment.method=DOCKER_COMPOSE + -Dcsrf.filter.enabled=false + -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\" + " + ports: + - "7203:7203" #JMX connect via service:jmx:rmi:///jndi/rmi://localhost:7203/jmxrmi + - "5005:5005" #Java debugging + - "8081:8080" #Browser port for Alfresco + + share: + image: ${SHARE_IMAGE}:${SHARE_TAG} + environment: + - REPO_HOST=alfresco + - REPO_PORT=8080 + ports: + - 8082:8080 #Browser port for Share + + postgres: + image: ${POSTGRES_IMAGE}:${POSTGRES_TAG} + environment: + - POSTGRES_PASSWORD=alfresco + - POSTGRES_USER=alfresco + - POSTGRES_DB=alfresco + ports: + - 5432:5432 + + search: + image: ${SEARCH_IMAGE}:${SEARCH_TAG} + environment: + #Solr needs to know how to register itself with Alfresco + - SOLR_ALFRESCO_HOST=alfresco + - SOLR_ALFRESCO_PORT=8080 + #Alfresco needs to know how to call solr + - SOLR_SOLR_HOST=search + - SOLR_SOLR_PORT=8983 + #Create the default alfresco and archive cores + - SOLR_CREATE_ALFRESCO_DEFAULTS=alfresco,archive + ports: + - 8083:8983 #Browser port + volumes: + - "./upgrade/solr-data:${DIST_DIR_PATH}/data" + - "./upgrade/solr-contentstore:/opt/${DIST_DIR_PATH}/contentstore" + + activemq: + image: ${ACTIVEMQ_IMAGE}:${ACTIVEMQ_TAG} + ports: + - 8161:8161 # Web Console + - 5672:5672 # AMQP + - 61616:61616 # OpenWire + - 61613:61613 # STOMP