aboutsummaryrefslogtreecommitdiffstats
path: root/tests/files/ansible/roles
diff options
context:
space:
mode:
Diffstat (limited to 'tests/files/ansible/roles')
-rw-r--r--tests/files/ansible/roles/common/handlers/main.yml4
-rw-r--r--tests/files/ansible/roles/common/tasks/main.yml13
-rw-r--r--tests/files/ansible/roles/docker/handlers/main.yml4
-rw-r--r--tests/files/ansible/roles/docker/tasks/main.yml40
-rw-r--r--tests/files/ansible/roles/ec2/tasks/setup.yml32
-rw-r--r--tests/files/ansible/roles/ec2/tasks/terminate.yml8
-rw-r--r--tests/files/ansible/roles/ec2/vars/main.yml17
-rw-r--r--tests/files/ansible/roles/testrunner/tasks/main.yml34
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 }}