-
Notifications
You must be signed in to change notification settings - Fork 20.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #48 from sveneh/develop
Testrunner deployment
- Loading branch information
Showing
11 changed files
with
288 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
venv/ | ||
*~ | ||
*.swp | ||
.vagrant/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# Automatic deployment of the random test generator | ||
|
||
Testing is done in a Vagrant virtual machine | ||
|
||
install vagrant, virtualbox, ansible, then do `vagrant up`. It should provison a basic machine. `vagrant ssh` to verify the machine is working as expected. `vagrant terminate` to reset machine to clean state. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
# -*- mode: ruby -*- | ||
# vi: set ft=ruby : | ||
|
||
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! | ||
VAGRANTFILE_API_VERSION ||= "2" | ||
|
||
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| | ||
# All Vagrant configuration is done here. The most common configuration | ||
# options are documented and commented below. For a complete reference, | ||
# please see the online documentation at vagrantup.com. | ||
|
||
# Every Vagrant virtual environment requires a box to build off of. | ||
config.vm.box = "ubuntu/trusty64" | ||
config.vm.define "random-test" | ||
|
||
# Disable automatic box update checking. If you disable this, then | ||
# boxes will only be checked for updates when the user runs | ||
# `vagrant box outdated`. This is not recommended. | ||
# config.vm.box_check_update = false | ||
|
||
# Create a forwarded port mapping which allows access to a specific port | ||
# within the machine from a port on the host machine. In the example below, | ||
# accessing "localhost:8080" will access port 80 on the guest machine. | ||
# config.vm.network "forwarded_port", guest: 80, host: 8080 | ||
|
||
# Create a private network, which allows host-only access to the machine | ||
# using a specific IP. | ||
# config.vm.network "private_network", ip: "192.168.33.10" | ||
|
||
# Create a public network, which generally matched to bridged network. | ||
# Bridged networks make the machine appear as another physical device on | ||
# your network. | ||
# config.vm.network "public_network" | ||
|
||
# If true, then any SSH connections made will enable agent forwarding. | ||
# Default value: false | ||
# config.ssh.forward_agent = true | ||
|
||
# Share an additional folder to the guest VM. The first argument is | ||
# the path on the host to the actual folder. The second argument is | ||
# the path on the guest to mount the folder. And the optional third | ||
# argument is a set of non-required options. | ||
# config.vm.synced_folder "../data", "/vagrant_data" | ||
|
||
# Provider-specific configuration so you can fine-tune various | ||
# backing providers for Vagrant. These expose provider-specific options. | ||
# Example for VirtualBox: | ||
# | ||
# config.vm.provider "virtualbox" do |vb| | ||
# # Don't boot with headless mode | ||
# vb.gui = true | ||
# | ||
# # Use VBoxManage to customize the VM. For example to change memory: | ||
# vb.customize ["modifyvm", :id, "--memory", "1024"] | ||
# end | ||
|
||
|
||
config.vm.provider "virtualbox" do |vb| | ||
# Ubuntu / Virtualbox workaround. | ||
# see http://askubuntu.com/questions/238040/how-do-i-fix-name-service-for-vagrant-client | ||
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] | ||
|
||
# cpp client needs a lot of RAM to build | ||
vb.customize ["modifyvm", :id, "--memory", "2048"] | ||
end | ||
|
||
# | ||
# View the documentation for the provider you're using for more | ||
# information on available options. | ||
|
||
|
||
# Ansible | ||
config.vm.provision "ansible" do |ansible| | ||
ansible.playbook = "site.yml" | ||
end | ||
|
||
end | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
--- | ||
- name: Provision the operation system for tests | ||
# testing | ||
hosts: all | ||
# live | ||
# hosts: TDB | ||
roles: | ||
- common |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
--- | ||
- name: install docker | ||
sudo: true | ||
# install script from https://docs.docker.com/installation/ubuntulinux/ | ||
shell: curl -sSL https://get.docker.com/ubuntu/ | sudo sh | ||
|
||
- name: install package dependencies | ||
sudo: true | ||
apt: name={{ item }} | ||
with_items: | ||
- python-pip | ||
- htop | ||
|
||
- name: install python dependencies | ||
sudo: true | ||
pip: name=docker-py | ||
|
||
|
||
- name: enable docker for standard user | ||
sudo: true | ||
# todo: how to logout after this command, otherwise won't be effective in this play | ||
user: name=vagrant groups=docker append=yes | ||
|
||
- name: checkout test repo | ||
git: | ||
repo: https://github.com/sveneh/tests.git | ||
version: develop | ||
dest: git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
--- | ||
- name: update C++ client | ||
docker_image: | ||
path: git/ansible/test-files/docker-cpp | ||
name: cpp | ||
state: build | ||
|
||
- name: update Go client | ||
docker_image: | ||
path: git/ansible/test-files/docker-go | ||
name: go | ||
state: build | ||
|
||
- name: Run infinite tests (press ^C to stop) | ||
sudo: true | ||
shell: git/ansible/test-files/testrunner.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
- include: host-config.yml | ||
- include: testrunner-config.yml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# adjusted from https://github.com/ethereum/cpp-ethereum/blob/develop/docker/Dockerfile | ||
FROM ubuntu:14.04 | ||
|
||
ENV DEBIAN_FRONTEND noninteractive | ||
RUN apt-get update | ||
RUN apt-get upgrade -y | ||
|
||
# Ethereum dependencies | ||
RUN apt-get install -qy build-essential g++-4.8 git cmake libboost-all-dev libcurl4-openssl-dev wget | ||
RUN apt-get install -qy automake unzip libgmp-dev libtool libleveldb-dev yasm libminiupnpc-dev libreadline-dev scons | ||
RUN apt-get install -qy libjsoncpp-dev libargtable2-dev | ||
|
||
# NCurses based GUI (not optional though for a succesful compilation, see https://github.com/ethereum/cpp-ethereum/issues/452 ) | ||
RUN apt-get install -qy libncurses5-dev | ||
|
||
# Qt-based GUI | ||
# RUN apt-get install -qy qtbase5-dev qt5-default qtdeclarative5-dev libqt5webkit5-dev | ||
|
||
# Ethereum PPA | ||
RUN apt-get install -qy software-properties-common | ||
RUN add-apt-repository ppa:ethereum/ethereum | ||
RUN apt-get update | ||
RUN apt-get install -qy libcryptopp-dev libjson-rpc-cpp-dev | ||
|
||
# Build Ethereum (HEADLESS) | ||
RUN git clone --depth=1 --branch develop https://github.com/ethereum/cpp-ethereum | ||
RUN mkdir -p cpp-ethereum/build | ||
RUN cd cpp-ethereum/build && cmake .. -DCMAKE_BUILD_TYPE=Release -DHEADLESS=1 && make -j $(cat /proc/cpuinfo | grep processor | wc -l) && make install | ||
RUN ldconfig | ||
|
||
ENTRYPOINT ["/cpp-ethereum/build/test/createRandomTest"] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# Adjusted from https://github.com/ethereum/go-ethereum/blob/develop/Dockerfile | ||
FROM ubuntu:14.04 | ||
|
||
## Environment setup | ||
ENV HOME /root | ||
ENV GOPATH /root/go | ||
ENV PATH /go/bin:/root/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games | ||
|
||
RUN mkdir -p /root/go | ||
ENV DEBIAN_FRONTEND noninteractive | ||
|
||
## Install base dependencies | ||
RUN apt-get update && apt-get upgrade -y | ||
RUN apt-get install -y git mercurial build-essential software-properties-common pkg-config libgmp3-dev libreadline6-dev libpcre3-dev libpcre++-dev | ||
|
||
## Build and install Go | ||
RUN hg clone -u release https://code.google.com/p/go | ||
RUN cd go && hg update go1.4 | ||
RUN cd go/src && ./make.bash && go version | ||
|
||
## Install GUI dependencies | ||
RUN add-apt-repository ppa:ubuntu-sdk-team/ppa -y | ||
RUN apt-get update -y | ||
RUN apt-get install -y qtbase5-private-dev qtdeclarative5-private-dev libqt5opengl5-dev | ||
|
||
## Fetch and install serpent-go | ||
RUN go get -v -d github.com/ethereum/serpent-go | ||
WORKDIR $GOPATH/src/github.com/ethereum/serpent-go | ||
# RUN git checkout master | ||
RUN git submodule update --init | ||
RUN go install -v | ||
|
||
# Fetch and install go-ethereum | ||
RUN go get -v -d github.com/ethereum/go-ethereum/... | ||
WORKDIR $GOPATH/src/github.com/ethereum/go-ethereum | ||
|
||
RUN git checkout develop | ||
|
||
RUN git pull | ||
RUN ETH_DEPS=$(go list -f '{{.Imports}} {{.TestImports}} {{.XTestImports}}' github.com/ethereum/go-ethereum/... | sed -e 's/\[//g' | sed -e 's/\]//g' | sed -e 's/C //g'); if [ "$ETH_DEPS" ]; then go get $ETH_DEPS; fi | ||
RUN go install -v ./cmd/ethtest | ||
|
||
# Run JSON RPC | ||
ENTRYPOINT ["ethtest"] | ||
EXPOSE 8080 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
#!/bin/bash | ||
|
||
# create random virtual machine test | ||
#cd ~/software/Ethereum/pyethereum (python has local dependencies so only works from within the directory) | ||
while [ 1 ] | ||
do | ||
TEST="$(docker run --rm cpp)" | ||
# echo "$TEST" | ||
|
||
# test pyethereum | ||
|
||
#OUTPUT_PYTHON="$(python ./tests/test_vm.py "$TEST")" | ||
#RESULT_PYTHON=$? | ||
|
||
# test go | ||
OUTPUT_GO="$(docker run --rm go "$TEST")" | ||
RESULT_GO=$? | ||
|
||
# test cpp-jit | ||
#OUTPUT_CPPJIT="$(~/software/Ethereum/cpp-ethereum/build/test/checkRandomTest "$TEST")" | ||
#RESULT_CPPJIT=$? | ||
|
||
# go fails | ||
if [ "$RESULT_GO" -ne 0 ]; then | ||
echo Failed: | ||
echo Output_GO: | ||
echo $OUTPUT_GO | ||
echo Test: | ||
echo "$TEST" | ||
echo "$TEST" > FailedTest.json | ||
mv FailedTest.json $(date -d "today" +"%Y%m%d%H%M")GO.json # replace with scp to central server | ||
fi | ||
|
||
# python fails | ||
#if [ "$RESULT_PYTHON" -ne 0 ]; then | ||
# echo Failed: | ||
# echo Output_PYTHON: | ||
# echo $OUTPUT_PYTHON | ||
# echo Test: | ||
# echo "$TEST" | ||
# echo "$TEST" > FailedTest.json | ||
# mv FailedTest.json $(date -d "today" +"%Y%m%d%H%M")PYTHON.json | ||
#fi | ||
|
||
# cppjit fails | ||
#if [ "$RESULT_CPPJIT" -ne 0 ]; then | ||
# echo Failed: | ||
# echo Output_CPPJIT: | ||
# echo $OUTPUT_CPPJIT | ||
# echo Test: | ||
# echo "$TEST" | ||
# echo "$TEST" > FailedTest.json | ||
# mv FailedTest.json $(date -d "today" +"%Y%m%d%H%M")CPPJIT.json | ||
#fi | ||
done | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
--- | ||
- name: preparing and running tests | ||
# testing | ||
hosts: all | ||
# live | ||
# hosts: TBD | ||
|
||
# TODO use the right user for configuring, until credentials set, stay with default vagrant user | ||
# remote_user: ubuntu | ||
|
||
roles: | ||
- testrunner |