diff --git a/Makefile b/Makefile deleted file mode 100644 index e224274f..00000000 --- a/Makefile +++ /dev/null @@ -1,82 +0,0 @@ -.PHONY: build -build: debian-jessie-build osmo-ggsn-master osmo-stp-master sctp-test sigtran-tests m3ua-test sua-test debian-stretch-titan ttcn3-ggsn-test - -.PHONY: debian-jessie-build -debian-jessie-build: - $(MAKE) -C debian-jessie-build - -.PHONY: debian-stretch-titan -debian-stretch-titan: - $(MAKE) -C debian-stretch-titan - -.PHONY: osmo-bsc-master -osmo-bsc-master: debian-jessie-build - $(MAKE) -C osmo-bsc-master - -.PHONY: osmo-bts-master -osmo-bts-master: debian-jessie-build - $(MAKE) -C osmo-bts-master - -.PHONY: osmo-msc-master -osmo-msc-master: debian-jessie-build - $(MAKE) -C osmo-msc-master - -.PHONY: osmo-stp-master -osmo-stp-master: debian-jessie-build - $(MAKE) -C osmo-stp-master - -.PHONY: osmocom-bb-host-master -osmocom-bb-host-master: debian-jessie-build - $(MAKE) -C osmocom-bb-host-master - -.PHONY: osmo-ggsn-master -osmo-ggsn-master: debian-jessie-build - $(MAKE) -C osmo-ggsn-master - -.PHONY: osmo-hlr-master -osmo-hlr-master: debian-jessie-build - $(MAKE) -C osmo-hlr-master - -.PHONY: ttcn3-bsc-test -ttcn3-bsc-test: debian-stretch-titan osmo-stp-master osmo-bsc-master osmo-bts-master ttcn3-bsc-test - $(MAKE) -C ttcn3-bsc-test - -.PHONY: ttcn3-bts-test -ttcn3-bts-test: debian-stretch-titan osmo-bsc-master osmo-bts-master osmocom-bb-host-master ttcn3-bts-test - $(MAKE) -C ttcn3-bts-test - -.PHONY: ttcn3-msc-test -ttcn3-msc-test: debian-stretch-titan osmo-stp-master osmo-msc-master ttcn3-msc-test - $(MAKE) -C ttcn3-msc-test - -.PHONY: ttcn3-ggsn-test -ttcn3-ggsn-test: osmo-ggsn-test - $(MAKE) -C ggsn-test - -.PHONY: ttcn3-mgw-test -ttcn3-mgw-test: debian-stretch-titan osmo-mgw-master - $(MAKE) -C ttcn3-mgw-test - -.PHONY: ttcn3-hlr-test -ttcn3-hlr-test: debian-stretch-titan osmo-hlr-master - $(MAKE) -C ttcn3-hlr-test - -.PHONY: sctp-test -sctp-test: debian-jessie-build - $(MAKE) -C sctp-test - -.PHONY: sigtran-tests -sigtran-tests: debian-jessie-build - $(MAKE) -C sigtran-tests - -.PHONY: sua-test -sua-test: osmo-stp-master - $(MAKE) -C sua-test - -.PHONY: m3ua-test -m3ua-test: osmo-stp-master sigtran-tests - $(MAKE) -C m3ua-test - -.PHONY: gr-gsm-master -gr-gsm-master: - $(MAKE) -C gr-gsm-master diff --git a/README.md b/README.md index bb354c0a..adb64209 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,72 @@ This repository contains some humble attempts at creating some Docker containers + related stacks around Osmocom. So far, the main focus is test automation. -See http://laforge.gnumonks.org/blog/20170503-docker-overhyped/ for -related rambling on why this doesn't work as well as one would want. +## Running a testsuite +All testsuite folders start with `ttcn3` or `nplab`. Run the following +to build/update all required containers and start a specific testsuite: + +``` +$ cd ttcn3-mgw-test +$ ./jenkins.sh +``` + +Environment variables: +* `IMAGE_SUFFIX`: the version of the Osmocom stack to run the testsuite + against. Default is `master`, set this to `latest` to test the last + stable releases. +* `NO_DOCKER_IMAGE_BUILD`: when set to `1`, it won't try to update the + containers (see "caching" below) + +## Building containers manually +Most folders in this repository contain a `Dockerfile`. Build a docker +container with the same name as the folder like this: + +``` +$ cd debian-jessie-build +$ make +``` + +## Caching +All folders named `osmo-*-latest` and `osmo-*-master` build the latest +stable or most recent commit from `master` of the corresponding Osmocom +program's git repository. When you have built it already, running `make` +will only do a small HTTP request to check if the sources are outdated +and skip the build in case it is still up-to-date. + +## Dependencies +Folders that don't have a `jenkins.sh` usually only depend on the +container that is specified in the `FROM` line of their `Dockerfile`. +Testsuites depend on multiple containers, they are defined on top of +each `jenkins.sh`: + +```shell +. ../jenkins-common.sh +IMAGE_SUFFIX="${IMAGE_SUFFIX:-master}" +docker_images_require \ + "debian-jessie-build" \ + "osmo-stp-$IMAGE_SUFFIX" \ + "osmo-bsc-$IMAGE_SUFFIX" \ + "osmo-bts-$IMAGE_SUFFIX" \ + "debian-stretch-titan" \ + "ttcn3-bsc-test" +``` + +#### Reasoning for this implementation +Before having the `docker_images_require` lines, there used to be a +top-level `Makefile` for resolving dependencies between the containers. +But it was prone to mistakes: when new folders in the repository +were added without related targets in the `Makefile`, `make` would +always assume that the targets where the always existing folders and +therefore never build the containers. + +In order to implement testing `latest` in addition to `master` +([OS#3268](https://osmocom.org/issues/3268)), it would have been +necessary to add further complexity to the `Makefile`. Instead it was +decided to scrap the file, and just keep the short list of dependencies +right above where they would be needed in the `jenkins.sh`. + +## See also +* [Overhyped Docker](http://laforge.gnumonks.org/blog/20170503-docker-overhyped/) + for related rambling on why this doesn't work as well as one would + want. +* [Osmocom wiki: Titan TTCN3 Testsuites](https://osmocom.org/projects/cellular-infrastructure/wiki/Titan_TTCN3_Testsuites)