From 029f3cb7260d6f532a4e4462537f23773a9fa127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Garc=C3=ADa=20Crespo?= Date: Fri, 22 Sep 2017 21:10:47 +0200 Subject: [PATCH] Add archivematica-acceptance-tests --- compose/Makefile | 38 ++++++++++++++ compose/README.md | 24 ++++++++- compose/docker-compose.acceptance-tests.yml | 55 +++++++++++++++++++++ src/archivematica-acceptance-tests | 2 +- 4 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 compose/docker-compose.acceptance-tests.yml diff --git a/compose/Makefile b/compose/Makefile index 29d6db6..2ba0c2c 100644 --- a/compose/Makefile +++ b/compose/Makefile @@ -4,6 +4,11 @@ AM_PIPELINE_DATA ?= /tmp/am-pipeline-data SS_LOCATION_DATA ?= /tmp/ss-location-data +.PHONY: list + +list: + @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' + create-volumes: mkdir -p ${AM_PIPELINE_DATA} docker volume create \ @@ -39,6 +44,12 @@ bootstrap-storage-service: --password="test" \ --email="test@test.com" \ --api-key="test" + docker-compose exec --user root archivematica-storage-service \ + git clone https://github.com/artefactual/archivematica-sampledata.git \ + /home/archivematica/archivematica-sampledata + docker-compose exec --user root archivematica-storage-service \ + chown -R archivematica:archivematica \ + /home/archivematica/archivematica-sampledata bootstrap-dashboard-db: docker-compose exec mysql mysql -hlocalhost -uroot -p12345 -e "\ @@ -85,6 +96,33 @@ restart-am-services: docker-compose restart archivematica-dashboard docker-compose restart archivematica-storage-service +at-up: + docker-compose -f docker-compose.yml -f docker-compose.acceptance-tests.yml up -d + +at-check: at-up + docker-compose -f docker-compose.yml -f docker-compose.acceptance-tests.yml run --rm --no-deps archivematica-acceptance-tests simplehubtest + +at-run: at-up + docker-compose -f docker-compose.yml -f docker-compose.acceptance-tests.yml run --rm --no-deps archivematica-acceptance-tests all + +at-run-firefox: at-up + docker-compose -f docker-compose.yml -f docker-compose.acceptance-tests.yml run --rm --no-deps archivematica-acceptance-tests firefox + +at-run-chrome: at-up + docker-compose -f docker-compose.yml -f docker-compose.acceptance-tests.yml run --rm --no-deps archivematica-acceptance-tests chrome + +at-restarted: + docker-compose -f docker-compose.yml -f docker-compose.acceptance-tests.yml up -d --force-recreate --no-deps selenium-hub selenium-firefox selenium-chrome archivematica-acceptance-tests + +at-rebuilt: + docker-compose -f docker-compose.yml -f docker-compose.acceptance-tests.yml up -d --build --force-recreate --no-deps selenium-hub selenium-firefox selenium-chrome archivematica-acceptance-tests + +at-logs: + docker-compose -f docker-compose.yml -f docker-compose.acceptance-tests.yml logs -f selenium-hub selenium-firefox selenium-chrome archivematica-acceptance-tests + +at-stop: + docker-compose -f docker-compose.yml -f docker-compose.acceptance-tests.yml stop selenium-hub selenium-firefox selenium-chrome archivematica-acceptance-tests + db: mysql -h127.0.0.1 --port=62001 -uroot -p12345 diff --git a/compose/README.md b/compose/README.md index 355b007..b466f10 100644 --- a/compose/README.md +++ b/compose/README.md @@ -6,6 +6,7 @@ - [Web UIs](#web-uis) - [Source code auto-reloading](#source-code-auto-reloading) - [Ports](#ports) +- [Acceptance tests](#acceptance-tests) - [Cleaning up](#cleaning-up) ## Audience @@ -26,7 +27,7 @@ may work: $ sudo apt install -y build-essential python-dev git $ sudo pip install -U ansible docker-compose -And install Docker CE following [https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/](these instructions). +And install Docker CE following [these instructions](https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/). ## Installation @@ -79,6 +80,27 @@ container is using the newest image, e.g.: | clamavd | `tcp/3310` | `tcp/62006` | | nginx » archivematica-dashboard | `tcp/80` | `tcp/62080` | | nginx » archivematica-storage-service | `tcp/8000` | `tcp/62081` | +| selenium-hub | `tcp/4444` | `tcp/62100` | + +### Acceptance tests + +There is an extra Compose file called `docker-compose.acceptance-tests.yml` that defines some extra services to run our acceptance tests, e.g. Selenium Standalone Server, Selenium Chrome Node or Selenium Firefox Node. In order to run the tests use the following command: + + $ make at-run + +There are some extra targets that you may find useful: + +- `make at-check`: make sure that both Firefox and Chrome are working. +- `make at-logs`: watch the logs generated by the containers for debugging purposes. +- `make at-rebuilt`: ensure that all the containers are rebuilt and restarted. +- `make at-restarted`: ensure that all the containers are restarted. +- `make at-run-chrome`: run the tests using just Chrome. +- `make at-run-firefox`: run the tests using just Firefox. +- `make at-stop`: stop services - because browsers are not particularly lightweight. + +The sources of the [acceptance tests](../src/archivematica-acceptance-tests) +have been made available inside Docker using volumes so you can edit them and +the changes will apply immediately. ## Resetting the environment diff --git a/compose/docker-compose.acceptance-tests.yml b/compose/docker-compose.acceptance-tests.yml new file mode 100644 index 0000000..95e5e3b --- /dev/null +++ b/compose/docker-compose.acceptance-tests.yml @@ -0,0 +1,55 @@ +--- +version: "2" + +# Based on "Getting Started with Docker Compose" (https://goo.gl/pBpyyY) +# More notes here: https://goo.gl/yDLK7f (incl. debugging instructions). + +services: + + selenium-hub: + image: "selenium/hub:3.6.0" + expose: + - "4444" + ports: + - "62100:4444" + environment: + GRID_BROWSER_TIMEOUT: "10" + GRID_DEBUG: "false" + + selenium-firefox: + image: "selenium/node-firefox:3.6.0" + links: + - "selenium-hub" + - "nginx" + environment: + FIREFOX_VERSION: "55.0.3" + GECKODRIVER_VERSION: "0.18.0" + HUB_PORT_4444_TCP_ADDR: "selenium-hub" + HUB_PORT_4444_TCP_PORT: "4444" + + selenium-chrome: + image: "selenium/node-chrome:3.6.0" + links: + - "selenium-hub" + - "nginx" + volumes: + # Mitigates the Chromium issue described at https://goo.gl/fBzwcm + - /dev/shm:/dev/shm + shm_size: 2g # TODO: Do I need this? + privileged: true # TODO: Do I need this? + environment: + CHROME_VERSION: "google-chrome-stable" + CHROME_DRIVER_VERSION: "latest" + HUB_PORT_4444_TCP_ADDR: "selenium-hub" + HUB_PORT_4444_TCP_PORT: "4444" + + archivematica-acceptance-tests: + build: + context: "../src/archivematica-acceptance-tests" + dockerfile: "Dockerfile" + links: + - "selenium-hub:hub" + volumes: + - "../src/archivematica-acceptance-tests:/home/archivematica/acceptance-tests:rw" + environment: + HUB_ADDRESS: "http://hub:4444/wd/hub" diff --git a/src/archivematica-acceptance-tests b/src/archivematica-acceptance-tests index 55749ac..5fd5c5c 160000 --- a/src/archivematica-acceptance-tests +++ b/src/archivematica-acceptance-tests @@ -1 +1 @@ -Subproject commit 55749ac001fa420079ecdd843c60686333390e7d +Subproject commit 5fd5c5c6a5201bde9c5d64393b86e9ac619b7922