mirror of https://github.com/ethereum/go-ethereum
commit
df335682e4
@ -0,0 +1,4 @@ |
|||||||
|
venv/ |
||||||
|
*~ |
||||||
|
*.swp |
||||||
|
.vagrant/ |
@ -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. |
@ -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 |
||||||
|
|
@ -0,0 +1,8 @@ |
|||||||
|
--- |
||||||
|
- name: Provision the operation system for tests |
||||||
|
# testing |
||||||
|
hosts: all |
||||||
|
# live |
||||||
|
# hosts: TDB |
||||||
|
roles: |
||||||
|
- common |
@ -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 |
@ -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 |
@ -0,0 +1,3 @@ |
|||||||
|
--- |
||||||
|
- include: host-config.yml |
||||||
|
- include: testrunner-config.yml |
@ -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"] |
||||||
|
|
@ -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 |
||||||
|
|
@ -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 |
||||||
|
|
@ -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 |
Loading…
Reference in new issue