diff options
Diffstat (limited to 'tests/files/ansible/roles')
-rw-r--r-- | tests/files/ansible/roles/common/handlers/main.yml | 4 | ||||
-rw-r--r-- | tests/files/ansible/roles/common/tasks/main.yml | 13 | ||||
-rw-r--r-- | tests/files/ansible/roles/docker/handlers/main.yml | 4 | ||||
-rw-r--r-- | tests/files/ansible/roles/docker/tasks/main.yml | 40 | ||||
-rw-r--r-- | tests/files/ansible/roles/ec2/tasks/setup.yml | 32 | ||||
-rw-r--r-- | tests/files/ansible/roles/ec2/tasks/terminate.yml | 8 | ||||
-rw-r--r-- | tests/files/ansible/roles/ec2/vars/main.yml | 17 | ||||
-rw-r--r-- | tests/files/ansible/roles/testrunner/tasks/main.yml | 34 |
8 files changed, 152 insertions, 0 deletions
diff --git a/tests/files/ansible/roles/common/handlers/main.yml b/tests/files/ansible/roles/common/handlers/main.yml new file mode 100644 index 000000000..767fc7ba6 --- /dev/null +++ b/tests/files/ansible/roles/common/handlers/main.yml @@ -0,0 +1,4 @@ +--- +- name: restart sshd + sudo: true + service: name=ssh state=restarted diff --git a/tests/files/ansible/roles/common/tasks/main.yml b/tests/files/ansible/roles/common/tasks/main.yml new file mode 100644 index 000000000..6c0c7a119 --- /dev/null +++ b/tests/files/ansible/roles/common/tasks/main.yml @@ -0,0 +1,13 @@ +--- +- name: install package dependencies + sudo: true + apt: name={{ item }} + with_items: + - parallel + - htop + +- name: checkout test repo + git: + repo: https://github.com/ethereum/tests.git + version: develop + dest: git diff --git a/tests/files/ansible/roles/docker/handlers/main.yml b/tests/files/ansible/roles/docker/handlers/main.yml new file mode 100644 index 000000000..767fc7ba6 --- /dev/null +++ b/tests/files/ansible/roles/docker/handlers/main.yml @@ -0,0 +1,4 @@ +--- +- name: restart sshd + sudo: true + service: name=ssh state=restarted diff --git a/tests/files/ansible/roles/docker/tasks/main.yml b/tests/files/ansible/roles/docker/tasks/main.yml new file mode 100644 index 000000000..c434b34a5 --- /dev/null +++ b/tests/files/ansible/roles/docker/tasks/main.yml @@ -0,0 +1,40 @@ +--- +- name: update package list + sudo: true + apt: update_cache=true + +- name: install docker dependencies + sudo: true + apt: name={{ item }} install_recommends=false + with_items: + # Docker has serious problems on EC2: http://www.danstutzman.com/2014/07/speed-up-docker-on-ec2 + # and https://github.com/docker/docker/issues/4036 + - linux-generic + - python-pip + +- name: Kernel update needs a restart + sudo: true + command: shutdown -r now + async: 0 + poll: 0 + ignore_errors: true + +- name: waiting for server to come back + local_action: wait_for host={{ inventory_hostname }} port=22 + state=started + sudo: false + +- name: install docker + sudo: true + # install script from https://docs.docker.com/installation/ubuntulinux/ + # TODO this is not idempotent + shell: curl -sSL https://get.docker.com/ubuntu/ | sudo sh + +- name: install docker python API + sudo: true + pip: name=docker-py + +- name: enable docker for standard user + sudo: true + user: name={{ ansible_ssh_user }} groups=docker append=yes + notify: restart sshd diff --git a/tests/files/ansible/roles/ec2/tasks/setup.yml b/tests/files/ansible/roles/ec2/tasks/setup.yml new file mode 100644 index 000000000..299b55c35 --- /dev/null +++ b/tests/files/ansible/roles/ec2/tasks/setup.yml @@ -0,0 +1,32 @@ +--- +- name: create default security group + ec2_group: + name: "{{ security_group }}" + region: "{{ region }}" + description: "{{ project_description }}" + rules: + # ssh + - proto: tcp + from_port: 22 + to_port: 22 + cidr_ip: "{{ ip_access_range }}" + rules_egress: + - proto: all + cidr_ip: "{{ ip_access_range }}" + + +- name: start ec2 instances + ec2: + group: "{{ security_group }}" + instance_type: "{{ instance_type }}" + image: "{{ image }}" + wait: true + region: "{{ region }}" + key_name: "{{ keypair }}" + instance_tags: + Name: "{{ item }}" + Role: client-tests + count_tag: + Name: "{{ item }}" + exact_count: 1 + with_sequence: start=0 end={{ total_no_instances - 1 }} format=testrunner-%1u diff --git a/tests/files/ansible/roles/ec2/tasks/terminate.yml b/tests/files/ansible/roles/ec2/tasks/terminate.yml new file mode 100644 index 000000000..e3d3df672 --- /dev/null +++ b/tests/files/ansible/roles/ec2/tasks/terminate.yml @@ -0,0 +1,8 @@ +--- +- name: Terminate ec2 instances + local_action: ec2 + state=absent + instance_ids={{ ec2_id }} + region={{ region }} + wait=true + diff --git a/tests/files/ansible/roles/ec2/vars/main.yml b/tests/files/ansible/roles/ec2/vars/main.yml new file mode 100644 index 000000000..3166da02c --- /dev/null +++ b/tests/files/ansible/roles/ec2/vars/main.yml @@ -0,0 +1,17 @@ +--- +# default config for ec2 instances + +instance_type: c4.8xlarge +security_group: client-tests + +image: ami-9eaa1cf6 +region: us-east-1 +keypair: christoph + +# limit access to AWS to these clients in CDIR notation +ip_access_range: 0.0.0.0/0 + + +project_description: https://github.com/ethereum/tests + +total_no_instances: 3 diff --git a/tests/files/ansible/roles/testrunner/tasks/main.yml b/tests/files/ansible/roles/testrunner/tasks/main.yml new file mode 100644 index 000000000..41c195f24 --- /dev/null +++ b/tests/files/ansible/roles/testrunner/tasks/main.yml @@ -0,0 +1,34 @@ +--- +- name: update C++ client + docker_image: + path: /home/{{ ansible_ssh_user }}/git/ansible/test-files/docker-cppjit + name: ethereum/cppjit-testrunner + state: build + async: 1200 + poll: 5 + +- name: update Go client + docker_image: + path: /home/{{ ansible_ssh_user }}/git/ansible/test-files/docker-go + name: ethereum/go-testrunner + state: build + async: 1200 + poll: 5 + +- name: update Python client + docker_image: + path: /home/{{ ansible_ssh_user }}/git/ansible/test-files/docker-python + name: ethereum/python-testrunner + state: build + async: 1200 + poll: 5 + +- name: Run infinite tests + shell: seq {{ ansible_processor_vcpus }} | parallel --max-args=0 /home/{{ ansible_ssh_user }}/git/ansible/test-files/testrunner.sh + # run for two months + async: "{{ 60 * 60 * 24 * 30 * 2 }}" + poll: 0 + register: log_runner + +- name: verify previous task + async_status: jid={{ log_runner.ansible_job_id }} |