Git Product home page Git Product logo

hive's Introduction

hive - Ethereum end-to-end test harness

Hive is a system for running integration tests against Ethereum clients.

Ethereum Foundation maintains two public Hive instances to check for consensus, p2p and blockchain compatibility:

To read more about hive, please check the documentation.

Trophies

If you find a bug in your client implementation due to this project, please be so kind as to add it here to the trophy list. It could help prove that hive is indeed a useful tool for validating Ethereum client implementations.

  • go-ethereum:
    • Genesis chain config couldn't handle present but empty settings: #2790
    • Data race between remote block import and local block mining: #2793
    • Downloader didn't penalize incompatible forks harshly enough: #2801
  • Nethermind:
    • Bug in p2p with bonding nodes algorithm found by Hive: #1894
    • Difference in return value for 'r' parameter in getTransactionByHash: #2372
    • CREATE/CREATE2 behavior when account already has max nonce #3698
    • Blake2 performance issue with non-vectorized code #3837

Contributions

This project takes a different approach to code contributions than your usual FOSS project with well ingrained maintainers and relatively few external contributors. It is an experiment. Whether it will work out or not is for the future to decide.

We follow the Collective Code Construction Contract (C4), code contribution model, as expanded and explained in The ZeroMQ Process. The core idea being that any patch that successfully solves an issue (bug/feature) and doesn't break any existing code/contracts must be optimistically merged by maintainers. Followup patches may be used for additional polishes โ€“ and patches may even be outright reverted if they turn out to have a negative impact โ€“ but no change must be rejected based on personal values.

License

The hive project is licensed under the GNU General Public License v3.0. You can find it in the COPYING file.

hive's People

Contributors

acolytec3 avatar arkpar avatar asdacap avatar bas-vk avatar cdetrio avatar dependabot[bot] avatar fjl avatar flcl42 avatar frankszendzielarz avatar gfukushima avatar giulio2002 avatar gsalgado avatar holiman avatar jangko avatar karalabe avatar kolbyml avatar lightclient avatar marioevz avatar mariusvanderwijden avatar meowsbits avatar protolambda avatar renaynay avatar rjected avatar s1na avatar shemnon avatar somnathb1 avatar spencer-tb avatar tkstanczak avatar yperbasis avatar zilm13 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hive's Issues

Dry run fails after privilege changes in Geth Docker

Hello,
We are using your recommendations for running Hive on CI:

    # Pull in and hive, restore cached ethash DAGs and do a dry run
    - go get -u github.com/karalabe/hive
    - (cd ~/.go_workspace/src/github.com/karalabe/hive && mkdir -p workspace/ethash/ ~/.ethash)
    - (cd ~/.go_workspace/src/github.com/karalabe/hive && cp -r ~/.ethash/. workspace/ethash/)
    - (cd ~/.go_workspace/src/github.com/karalabe/hive && hive --docker-noshell --client=NONE --test=. --sim=. --loglevel=6)

After recent changes in Geth Dockerfile (probably this: ethereum/go-ethereum#16052 ) dry run fails on Circle CI:

INFO[04-12|14:23:55] creating ethash container 
INFO[04-12|14:23:55] building new docker image                nocache=false
Step 1 : FROM ethereum/client-go
Pulling from ethereum/client-go
[.....SKIP.....]
Pull complete
Digest: sha256:d51a959a32954c70cd54b7b5143b878c33699a86980e74e35a9ca6c07a89ab71
Status: Downloaded newer image for ethereum/client-go:latest
 ---> eded061e6b12
Step 2 : RUN echo '#!/bin/sh'                          > /ethash.sh && 	echo 'set -e'                            >> /ethash.sh && 	echo 'geth makedag 1 /root/.ethash'      >> /ethash.sh &&   echo 'if [ "$UID" != "0" ]; then'        >> /ethash.sh && 	echo '  adduser -u $UID -D ethash'       >> /ethash.sh && 	echo '  chown -R ethash /root/.ethash/*' >> /ethash.sh &&   echo 'fi'                                >> /ethash.sh && 	chmod +x /ethash.sh
 ---> Running in e11a5abe9cec
/bin/sh: can't create /ethash.sh: Permission denied
EROR[04-12|14:24:03] failed to build docker image             error="The command '/bin/sh -c echo '#!/bin/sh'                          > /ethash.sh && \techo 'set -e'                            >> /ethash.sh && \techo 'geth makedag 1 /root/.ethash'      >> /ethash.sh &&   echo 'if [ \"$UID\" != \"0\" ]; then'        >> /ethash.sh && \techo '  adduser -u $UID -D ethash'       >> /ethash.sh && \techo '  chown -R ethash /root/.ethash/*' >> /ethash.sh &&   echo 'fi'                                >> /ethash.sh && \tchmod +x /ethash.sh' returned a non-zero code: 1"

Looks like https://github.com/karalabe/hive/blob/master/internal/ethash/Dockerfile should be updated for new permissions?

Aleth failures

Getting this in output for the aleth runs:

DBUG[08-28|09:28:55] starting container 
INFO[08-28|09:28:56] docker daemon online                     version=18.04.0-ce
INFO[08-28|09:28:56] building clients for validation          pattern=aleth:develop
INFO[08-28|09:28:56] building validators for testing          pattern=none
INFO[08-28|09:28:56] creating ethash container 
INFO[08-28|09:28:56] building new docker image                nocache=true
DBUG[08-28|09:29:00] created ethash container 
INFO[08-28|09:29:00] generating genesis DAG 
DBUG[08-28|09:29:00] attaching to container 
DBUG[08-28|09:29:00] starting container 
DBUG[08-28|09:29:00] deleting ethash container 
INFO[08-28|09:29:00] building clients for simulation          pattern=aleth:develop
INFO[08-28|09:29:00] building simulators for testing          pattern=ethereum/consensus
INFO[08-28|09:29:00] building new docker image                simulator=ethereum/consensus nocache=true
adduser: uid '0' in use
DBUG[08-28|09:29:31] deleting shell container 

I've no idea why...
cc @chfast

create a KEVM client for consensus tests

KEVM (https://github.com/kframework/evm-semantics) is an executable spec that is already capable of running test cases.

Hive has a consensus test runner, which is used to run consensus test suite against each client and generate a report dashboard: http://hivetests.ethstats.net/

The goal is to see KEVM on the hivetests dashboard, alongside the other clients. To accomplish this, we don't need to build up KEVM into a full client, but we would need an RPC server that can parse the results printed by KEVM and reply to the Hive testrunner, to answer queries like eth_getLatestBlock. These RPC responses are used by Hive to verify that the client passed the test.

ethereum/consensus simulator failure

These pops up:

INFO[11-23|10:04:13] message from simulator                   simulator=ethereum/consensus log="Failed to kill node Node[75de696d]@172.18.0.10: Traceback (most recent call last):\n  File \"/hivemodel.py\", line 247, in _startNodeAndRunTest\n    self.hive.killNode(node)\n  File \"/hivemodel.py\", line 137, in killNode\n    self._delete(\"/nodes/%s\" % node.nodeId)\n  File \"/hivemodel.py\", line 86, in _delete\n    raise Exception(\"Failed to DELETE req (%d)\" % req.status_code)\nException: Failed to DELETE req (404)\n"
Failed to kill node Node[75de696d]@172.18.0.10: 
Traceback (most recent call last):
 File \"/hivemodel.py\", line 247, in _startNodeAndRunTest
    self.hive.killNode(node)
  File \"/hivemodel.py\", line 137, in killNode
    self._delete(\"/nodes/%s\" % node.nodeId)
  File \"/hivemodel.py\", line 86, in _delete
    raise Exception(\"Failed to DELETE req (%d)\" % req.status_code)\nException: Failed to DELETE req (404)

So the framework is giving us a 404 on deletion

[WIP] Installation doc improvement suggestions / beginner perspective experience description

Hi, this is Holger from ethereumjs, I am just doing my first Hive experience
to prepare for maybe help with the ethereumjs-vm issue here: #93

I will write up stuff I stumbled over during installation here, maybe you can
use this to improve docs a bit.

Doing this with the following pre-requisits:

  • Little to no Go experience
  • Good ethereum/tests insight, practical testing experience
  • CI experience

Environment:

  • MacBook Air, High Sierra 10.13.1
  • Docker version 17.03.0-ce, build 60ccb22
  • go version go1.10 darwin/amd64

Note: will live-update ๐ŸŽฅ this during the next two hours and then remove the WIP label in the title. If you read-up to the last line and have a suggestion during this, feel free to drop a note! ๐Ÿ˜„


Stumbled over following things:

Installation

  1. Didn't know what to make with the "Note" addition from the install section https://github.com/karalabe/hive#installing-the-hive-validator and how it plays together with the go get install command from above. Do I have to run the command AND install from Git? Does the command installs somewhere and I have to go there?

  2. Ended up using the command (producing absolutely no output, which irritated me a bit) AND doing a git clone.

Validation

  1. Then I went into the repo and tried the hive command. Failed with "Command not found". Investigating. A note here would be nice.

  2. Tried with go hive.go ... (first guess :-)), didn't work either.

  3. Figured out 3), had a look at my GOPATH with go env and found the bin/hive script.

  4. Tried again, run into:

CRIT[03-12|14:01:47] failed to retrieve docker version        error="cannot connect to Docker endpoint"

A note that docker has to be up-and-running and in which version would be helpful.

  1. Running again, getting...
INFO[03-12|13:09:42] building new docker image                client=go-ethereum:master nocache=false
EROR[03-12|13:09:57] failed to build docker image             client=go-ethereum:master error="error creating aufs mount to /var/lib/docker/aufs/mnt/2c62f45e9b58ecaad23ab6cf7128ad8f6eb7786574732f62a4bb4fb66102b625-init: function not implemented"
CRIT[03-12|13:09:57] failed to retrieve client versions       error="clients/go-ethereum:master: error creating aufs mount to /var/lib/docker/aufs/mnt/2c62f45e9b58ecaad23ab6cf7128ad8f6eb7786574732f62a4bb4fb66102b625-init: function not implemented"
  1. Running again, testing another client ethereumj:develop, getting:
INFO[03-12|13:14:27] building new docker image                client=ethereumj:develop nocache=false
EROR[03-12|13:16:16] failed to build docker image             client=ethereumj:develop error="failed to register layer: Error processing tar file(exit status 1): link /usr/share/terminfo/L/LFT-PC850 /usr/share/terminfo/l/lft-pc850: no such file or directory"
CRIT[03-12|13:16:16] failed to retrieve client versions       error="clients/ethereumj:develop: failed to register layer: Error processing tar file(exit status 1): link /usr/share/terminfo/L/LFT-PC850 /usr/share/terminfo/l/lft-pc850: no such file or directory"
  1. Running go-ethereum:stable produced the same error as in 6).

  2. Updated docker to Docker version 17.12.0-ce, build c97c6d6, still failing.

  3. Tried this mac specific fix, not working.

  4. Tried this generic fix, at least a new error:

INFO[03-12|13:59:42] building new docker image                client=go-ethereum:master nocache=false
EROR[03-12|13:59:42] failed to build docker image             client=go-ethereum:master error="open /var/lib/docker/aufs/layers/c0a2d5e1b904067dd4c3ea2f052c2ea3bffd58ef5a6b6a9940f8d6ad471bf72d: no such file or directory"
CRIT[03-12|13:59:42] failed to retrieve client versions       error="clients/go-ethereum:master: open /var/lib/docker/aufs/layers/c0a2d5e1b904067dd4c3ea2f052c2ea3bffd58ef5a6b6a9940f8d6ad471bf72d: no such file or directory"

3h. Will give up for now. Any suggestions welcome!

Pyethereum docker build fails on hive

Logs:

INFO[02-17|10:26:43] docker daemon online                     version=17.05.0-ce
INFO[02-17|10:26:43] creating outer shell container 
INFO[02-17|10:26:43] building new docker image                nocache=true
DBUG[02-17|10:26:55] created shell container 
INFO[02-17|10:26:55] starting outer shell container 
DBUG[02-17|10:26:55] attaching to container 
DBUG[02-17|10:26:55] starting container 
INFO[02-17|10:26:57] docker daemon online                     version=17.12.0-ce
INFO[02-17|10:26:57] building new docker image                client=pyethereum:develop nocache=true
EROR[02-17|10:29:40] failed to build docker image             client=pyethereum:develop error="The command '/bin/sh -c apk add --update bash jq git curl python-dev musl-dev gcc make openssl-dev            bsd-compat-headers g++ autoconf automake pkgconfig libtool libffi-dev gmp-dev &&   curl -sSf https://bootstrap.pypa.io/get-pip.py -o get-pip.py              &&   python get-pip.py                                                         &&   git clone --depth 1 https://github.com/ethereum/pyethereum                &&   cd pyethereum                                                             &&   python setup.py install                                                   &&   cd ..                                                                     &&   git clone --depth 1 https://github.com/ethereum/pyethapp                  &&   cd pyethapp                                                               &&   python setup.py install                                                   &&   echo \"{}\"                                                                          | jq \".+ {\\\"repo\\\":\\\"$(git config --get remote.origin.url)\\\"}\"                 | jq \".+ {\\\"branch\\\":\\\"$(git rev-parse --abbrev-ref HEAD)\\\"}\"                  | jq \".+ {\\\"commit\\\":\\\"$(git rev-parse HEAD)\\\"}\"                               > /version.json                                                       &&   apk del git make gcc g++ musl-dev curl pkgconfig libtool automake autoconf' returned a non-zero code: 1"
CRIT[02-17|10:29:40] failed to retrieve client versions       error="clients/pyethereum:develop: The command '/bin/sh -c apk add --update bash jq git curl python-dev musl-dev gcc make openssl-dev            bsd-compat-headers g++ autoconf automake pkgconfig libtool libffi-dev gmp-dev &&   curl -sSf https://bootstrap.pypa.io/get-pip.py -o get-pip.py              &&   python get-pip.py                                                         &&   git clone --depth 1 https://github.com/ethereum/pyethereum                &&   cd pyethereum                                                             &&   python setup.py install                                                   &&   cd ..                                                                     &&   git clone --depth 1 https://github.com/ethereum/pyethapp                  &&   cd pyethapp                                                               &&   python setup.py install                                                   &&   echo \"{}\"                                                                          | jq \".+ {\\\"repo\\\":\\\"$(git config --get remote.origin.url)\\\"}\"                 | jq \".+ {\\\"branch\\\":\\\"$(git rev-parse --abbrev-ref HEAD)\\\"}\"                  | jq \".+ {\\\"commit\\\":\\\"$(git rev-parse HEAD)\\\"}\"                               > /version.json                                                       &&   apk del git make gcc g++ musl-dev curl pkgconfig libtool automake autoconf' returned a non-zero code: 1"
DBUG[02-17|10:29:40] deleting shell container 

ping @cdetrio @konradkonrad

Invalid json on stdout

The output from hive is not 'pure' json, but invalid due to the occurrence of some output. I've no idea where the output comes from, but I'm suspecting the dind-things.

This is my patchy workaround, for now:

hive -sim ethereum/consensus -test none -client .*:master\|cpp-ethereum.* 2> output.log > tmp.json

# Remove stuff like the following, which makes it out to stdout:
# ....
# 3adb531f0ab5
# 5350e9a0cce0
# Deleted: sha256:f207844cbb94230c85696310f93a5869a8a89c6eef8a31a83ef744f150d72c0e
#

cat tmp.json                    | \
	grep -v -P "^[\.]+$"        | \
	grep -v -P "^[a-f0-9]{12}$" | \
	grep -v "^Deleted: sha256:"   \
	> data.json

Make hive use IPC connection

From what I can tell; https://github.com/karalabe/hive/blob/master/simulator.go#L309 , the simulator uses the ip:8545 to connect to the client API. This is a bit problematic for cpp: ethereum/aleth#4635 (comment)

We recently removed HTTP server from eth, now instead of --json-rpc --json-rpc-port 8545 --admin-via-http you need to run scripts/jsonrpcproxy.py

Doing it this way requires us to add python to the alpine image, so it'd be neat to just use the ipc path instead.

[Updared] Hive giving Api error 500 with message - API error (500): {\"message\":\"Cannot locate specified Dockerfile: Dockerfile\"}\n"

[Update]
I decided to wait and after more than a couple of hours it threw an error.

screenshot from 2018-09-27 12-51-39


Hi, this is my first experience with hive.

So my system configurations are:

  • Ubuntu 18.04
  • Go 1.6
  • Docker 18.06.1-ce

My docker daemon was running, I tried running

$HOME/go/bin/hive --client=parity-ethereum:master --test=NONE --sim=. --loglevel 10

It seemed, it was going pretty well until it failed saying the go version required is at least 1.4. But my go version was 1.11. Apologies for not preserving the log, I flushed it as I thought replacing the go version would solve my problem. There was no other error apart from one related to go version!

So I replaced Go 1.11 with Go 1.6.

Now again my docker daemon is running. I have tried executing

sudo $HOME/go/bin/hive --client=parity-ethereum:master --smoke --loglevel 10

But its stuck at "Building new docker image stuck" for more than 30 minutes now. Please see the screenshot.
screenshot from 2018-09-26 19-54-01

Pardon me if I have provided you little information on this issue. Let me know what more you need to help me with this and I shall try to provide the same. But for now this is all I have got.

It would be great if someone can help me here.

Parity failures

[c09864b7] Chain config: 
[c09864b7] { "accounts": { "0000000000000000000000000000000000000001": { "balance": "0x1", "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } }, "0000000000000000000000000000000000000002": { "balance": "0x1", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } }, "0000000000000000000000000000000000000003": { "balance": "0x1", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } }, "0000000000000000000000000000000000000004": { "balance": "0x1", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } }, "0000000000000000000000000000000000000005": { "balance": "0x1", "builtin": { "name": "modexp", "activate_at": "0x0", "pricing": { "modexp": { "divisor": 20 } } } }, "0000000000000000000000000000000000000006": { "balance": "0x1", "builtin": { "name": "alt_bn128_add", "activate_at": "0x0", "pricing": { "linear": { "base": 500, "word": 0 } } } }, "0000000000000000000000000000000000000007": { "balance": "0x1", "builtin": { "name": "alt_bn128_mul", "activate_at": "0x0", "pricing": { "linear": { "base": 40000, "word": 0 } } } }, "0000000000000000000000000000000000000008": { "balance": "0x1", "builtin": { "name": "alt_bn128_pairing", "activate_at": "0x0", "pricing": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 } } } }, "3535353535353535353535353535353535353535": { "balance": "0x201ee" }, "82a978b3f5962a5b0957d9ee9eef472ee55b42f1": { "balance": "0xde0b6b3a761fe12", "nonce": "0x1" }, "c305c901078781c232a2a521c2af7980f8385ee9": { "code": "0x600035601c52740100000000000000000000000000000000000000006020526fffffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff000000000000000000000000000000016060527402540be3fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffdabf41c00000000000000000000000002540be40060a0526330c8d1da600051141561012b5760856004356004013511151558576004356004013560200160043560040161014037600161024061014051610160600060056305f5e0fff11558576001610220526102206021806102808284600060046015f150505061028080516020820120905060005561028060206020820352604081510160206001820306601f820103905060208203f350005b", "balance": "0x0", "nonce": "0x1" } }, "name": "Hive", "engine": { "Ethash": { "params": { "minimumDifficulty": "0x020000", "blockReward": { "0": "0x4563918244F40000", "0x0": "0x1BC16D674EC80000" }, "difficultyBombDelays": {}, "difficultyBoundDivisor": "0x0800", "durationLimit": "0x0d", "frontierCompatibilityModeLimit": "0x0", "daoHardforkBeneficiary": "0xbf4ed7b27f1d666546e30d74d50d173d20bca754", "daoHardforkAccounts": [ "0xd4fe7bc31cedb7bfb8a345f31e668033056b2728", "0xb3fb0e5aba0e20e5c49d252dfd30e102b171a425", "0x2c19c7f9ae8b751e37aeb2d93a699722395ae18f", "0xecd135fa4f61a655311e86238c92adcd779555d2", "0x1975bd06d486162d5dc297798dfc41edd5d160a7", "0xa3acf3a1e16b1d7c315e23510fdd7847b48234f6", "0x319f70bab6845585f412ec7724b744fec6095c85", "0x06706dd3f2c9abf0a21ddcc6941d9b86f0596936", "0x5c8536898fbb74fc7445814902fd08422eac56d0", "0x6966ab0d485353095148a2155858910e0965b6f9", "0x779543a0491a837ca36ce8c635d6154e3c4911a6", "0x2a5ed960395e2a49b1c758cef4aa15213cfd874c", "0x5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5", "0x9c50426be05db97f5d64fc54bf89eff947f0a321", "0x200450f06520bdd6c527622a273333384d870efb", "0xbe8539bfe837b67d1282b2b1d61c3f723966f049", "0x6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb", "0xf1385fb24aad0cd7432824085e42aff90886fef5", "0xd1ac8b1ef1b69ff51d1d401a476e7e612414f091", "0x8163e7fb499e90f8544ea62bbf80d21cd26d9efd", "0x51e0ddd9998364a2eb38588679f0d2c42653e4a6", "0x627a0a960c079c21c34f7612d5d230e01b4ad4c7", "0xf0b1aa0eb660754448a7937c022e30aa692fe0c5", "0x24c4d950dfd4dd1902bbed3508144a54542bba94", "0x9f27daea7aca0aa0446220b98d028715e3bc803d", "0xa5dc5acd6a7968a4554d89d65e59b7fd3bff0f90", "0xd9aef3a1e38a39c16b31d1ace71bca8ef58d315b", "0x63ed5a272de2f6d968408b4acb9024f4cc208ebf", "0x6f6704e5a10332af6672e50b3d9754dc460dfa4d", "0x77ca7b50b6cd7e2f3fa008e24ab793fd56cb15f6", "0x492ea3bb0f3315521c31f273e565b868fc090f17", "0x0ff30d6de14a8224aa97b78aea5388d1c51c1f00", "0x9ea779f907f0b315b364b0cfc39a0fde5b02a416", "0xceaeb481747ca6c540a000c1f3641f8cef161fa7", "0xcc34673c6c40e791051898567a1222daf90be287", "0x579a80d909f346fbfb1189493f521d7f48d52238", "0xe308bd1ac5fda103967359b2712dd89deffb7973", "0x4cb31628079fb14e4bc3cd5e30c2f7489b00960c", "0xac1ecab32727358dba8962a0f3b261731aad9723", "0x4fd6ace747f06ece9c49699c7cabc62d02211f75", "0x440c59b325d2997a134c2c7c60a8c61611212bad", "0x4486a3d68fac6967006d7a517b889fd3f98c102b", "0x9c15b54878ba618f494b38f0ae7443db6af648ba", "0x27b137a85656544b1ccb5a0f2e561a5703c6a68f", "0x21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241", "0x23b75c2f6791eef49c69684db4c6c1f93bf49a50", "0x1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b", "0xb9637156d330c0d605a791f1c31ba5890582fe1c", "0x6131c42fa982e56929107413a9d526fd99405560", "0x1591fc0f688c81fbeb17f5426a162a7024d430c2", "0x542a9515200d14b68e934e9830d91645a980dd7a", "0xc4bbd073882dd2add2424cf47d35213405b01324", "0x782495b7b3355efb2833d56ecb34dc22ad7dfcc4", "0x58b95c9a9d5d26825e70a82b6adb139d3fd829eb", "0x3ba4d81db016dc2890c81f3acec2454bff5aada5", "0xb52042c8ca3f8aa246fa79c3feaa3d959347c0ab", "0xe4ae1efdfc53b73893af49113d8694a057b9c0d1", "0x3c02a7bc0391e86d91b7d144e61c2c01a25a79c5", "0x0737a6b837f97f46ebade41b9bc3e1c509c85c53", "0x97f43a37f595ab5dd318fb46e7a155eae057317a", "0x52c5317c848ba20c7504cb2c8052abd1fde29d03", "0x4863226780fe7c0356454236d3b1c8792785748d", "0x5d2b2e6fcbe3b11d26b525e085ff818dae332479", "0x5f9f3392e9f62f63b8eac0beb55541fc8627f42c", "0x057b56736d32b86616a10f619859c6cd6f59092a", "0x9aa008f65de0b923a2a4f02012ad034a5e2e2192", "0x304a554a310c7e546dfe434669c62820b7d83490", "0x914d1b8b43e92723e64fd0a06f5bdb8dd9b10c79", "0x4deb0033bb26bc534b197e61d19e0733e5679784", "0x07f5c1e1bc2c93e0402f23341973a0e043f7bf8a", "0x35a051a0010aba705c9008d7a7eff6fb88f6ea7b", "0x4fa802324e929786dbda3b8820dc7834e9134a2a", "0x9da397b9e80755301a3b32173283a91c0ef6c87e", "0x8d9edb3054ce5c5774a420ac37ebae0ac02343c6", "0x0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9", "0x5dc28b15dffed94048d73806ce4b7a4612a1d48f", "0xbcf899e6c7d9d5a215ab1e3444c86806fa854c76", "0x12e626b0eebfe86a56d633b9864e389b45dcb260", "0xa2f1ccba9395d7fcb155bba8bc92db9bafaeade7", "0xec8e57756626fdc07c63ad2eafbd28d08e7b0ca5", "0xd164b088bd9108b60d0ca3751da4bceb207b0782", "0x6231b6d0d5e77fe001c2a460bd9584fee60d409b", "0x1cba23d343a983e9b5cfd19496b9a9701ada385f", "0xa82f360a8d3455c5c41366975bde739c37bfeb8a", "0x9fcd2deaff372a39cc679d5c5e4de7bafb0b1339", "0x005f5cee7a43331d5a3d3eec71305925a62f34b6", "0x0e0da70933f4c7849fc0d203f5d1d43b9ae4532d", "0xd131637d5275fd1a68a3200f4ad25c71a2a9522e", "0xbc07118b9ac290e4622f5e77a0853539789effbe", "0x47e7aa56d6bdf3f36be34619660de61275420af8", "0xacd87e28b0c9d1254e868b81cba4cc20d9a32225", "0xadf80daec7ba8dcf15392f1ac611fff65d94f880", "0x5524c55fb03cf21f549444ccbecb664d0acad706", "0x40b803a9abce16f50f36a77ba41180eb90023925", "0xfe24cdd8648121a43a7c86d289be4dd2951ed49f", "0x17802f43a0137c506ba92291391a8a8f207f487d", "0x253488078a4edf4d6f42f113d1e62836a942cf1a", "0x86af3e9626fce1957c82e88cbf04ddf3a2ed7915", "0xb136707642a4ea12fb4bae820f03d2562ebff487", "0xdbe9b615a3ae8709af8b93336ce9b477e4ac0940", "0xf14c14075d6c4ed84b86798af0956deef67365b5", "0xca544e5c4687d109611d0f8f928b53a25af72448", "0xaeeb8ff27288bdabc0fa5ebb731b6f409507516c", "0xcbb9d3703e651b0d496cdefb8b92c25aeb2171f7", "0x6d87578288b6cb5549d5076a207456a1f6a63dc0", "0xb2c6f0dfbb716ac562e2d85d6cb2f8d5ee87603e", "0xaccc230e8a6e5be9160b8cdf2864dd2a001c28b6", "0x2b3455ec7fedf16e646268bf88846bd7a2319bb2", "0x4613f3bca5c44ea06337a9e439fbc6d42e501d0a", "0xd343b217de44030afaa275f54d31a9317c7f441e", "0x84ef4b2357079cd7a7c69fd7a37cd0609a679106", "0xda2fef9e4a3230988ff17df2165440f37e8b1708", "0xf4c64518ea10f995918a454158c6b61407ea345c", "0x7602b46df5390e432ef1c307d4f2c9ff6d65cc97", "0xbb9bc244d798123fde783fcc1c72d3bb8c189413", "0x807640a13483f8ac783c557fcdf27be11ea4ac7a" ], "homesteadTransition": "0x0", "daoHardforkTransition": "0x7D0", "eip100bTransition": "0x0" } } }, "params": { "registrar": "", "gasLimitBoundDivisor": "0x0400", "accountStartNonce": "0x0", "maxCodeSize": 24576, "maximumExtraDataSize": "0x20", "minGasLimit": "0x1388", "networkID": "0x1", "eip98Transition": "0x7fffffffffffff", "eip1014Transition": "0x0", "eip155Transition": "0x0", "eip150Transition": "0x0", "eip160Transition": "0x0", "eip161abcTransition": "0x0", "eip161dTransition": "0x0", "maxCodeSizeTransition": "0x0", "eip140Transition": "0x0", "eip211Transition": "0x0", "eip214Transition": "0x0", "eip658Transition": "0x0", "eip145Transition": "0x0", "eip1052Transition": "0x0", "eip1283Transition": "0x0" }, "nodes": [], "genesis": { "config": null, "timestamp": "0x3b6", "extraData": "0x42", "gasLimit": "0x5f5e100", "difficulty": "0x20000", "author": "0x3535353535353535353535353535353535353535", "number": "0x0", "gasUsed": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "seal": { "ethereum": { "nonce": "0x102030405060708", "mixHash": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" } } } }
[c09864b7] ----------
[c09864b7] Loading initial blockchain...
[c09864b7] Loading remaining individual blocks...
[c09864b7] /parity  --no-discovery --no-seal-check --chain /chain.json import /blocks/0001.rlp
[c09864b7] Spec json is invalid: unknown field `frontierCompatibilityModeLimit`, expected one of `minimumDifficulty`, `difficultyBoundDivisor`, `difficultyIncrementDivisor`, `metropolisDifficultyIncrementDivisor`, `durationLimit`, `homesteadTransition`, `blockReward`, `blockRewardContractTransition`, `blockRewardContractAddress`, `blockRewardContractCode`, `daoHardforkTransition`, `daoHardforkBeneficiary`, `daoHardforkAccounts`, `difficultyHardforkTransition`, `difficultyHardforkBoundDivisor`, `bombDefuseTransition`, `eip100bTransition`, `ecip1010PauseTransition`, `ecip1010ContinueTransition`, `ecip1017EraRounds`, `difficultyBombDelays`, `expip2Transition`, `expip2DurationLimit` at line 1 column 2512
[c09864b7] Running parity...
[c09864b7] Spec json is invalid: unknown field `frontierCompatibilityModeLimit`, expected one of `minimumDifficulty`, `difficultyBoundDivisor`, `difficultyIncrementDivisor`, `metropolisDifficultyIncrementDivisor`, `durationLimit`, `homesteadTransition`, `blockReward`, `blockRewardContractTransition`, `blockRewardContractAddress`, `blockRewardContractCode`, `daoHardforkTransition`, `daoHardforkBeneficiary`, `daoHardforkAccounts`, `difficultyHardforkTransition`, `difficultyHardforkBoundDivisor`, `bombDefuseTransition`, `eip100bTransition`, `ecip1010PauseTransition`, `ecip1010ContinueTransition`, `ecip1017EraRounds`, `difficultyBombDelays`, `expip2Transition`, `expip2DurationLimit` at line 1 column 2512

Make hive return json-errors when container fails to build

If hive fails to build a client container, this is evident from the logs. However, the hive-run will not return a json-structure of the test, which results in the run not appearing on https://hivetests.ethstats.net/ . In order to figure out what's happening, I have to ssh into the machine and peek at the logs.

It would be good if hive spit out a json error instead, and the ethereum/consensus test simulator was adapted to support it properly.

Add support for multi-client simulations

To test inter-client networking we want to have simulations where different client implementations run against each other. The simulation API doesn't support this at the moment. Here's how to add this feature:

The simulation needs an additional endpoint /clients that returns a list of client names as json, i.e.

GET /clients

["go-ethereum_stable", "go-ethereum_master", "parity_beta", ...]

The request to start a node should include the client name in the request body. We might also want to add support for other parameters such as the bootstrap node.

EthereumJ fails on import

Hive sometimes wants to deliver blocks non-contiguously, which EthereumJ doesn't seem to like:

08:03:14.135 INFO [general]  Config ( no  ): config passed via constructor
Performing action: importBlocks
08:03:14.212 INFO [general]  Overriding config file with CLI options: {peer.discovery.enabled=false}
08:03:14.222 INFO [general]  Starting EthereumJ...
08:03:16.005 INFO [general]  Running frontier.json,  core version: 1.9.0-SNAPSHOT
08:03:16.005 INFO [general]  git.hash: [433ae2f]
08:03:16.005 INFO [general]  build.time: [GMT]-[10/Aug/2018]-[09:05]
08:03:16.006 INFO [general]  Created database version file
08:03:16.007 INFO [general]  capability eth version: [62, 63]
08:03:16.007 INFO [general]  capability shh version: [3]
08:03:16.007 INFO [general]  capability bzz version: [0]
08:03:16.667 ERROR [general]  Uncaught exception
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'defaultConfig': Unsatisfied dependency expressed through field 'config'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'systemProperties' defined in org.ethereum.config.CommonConfig: Initialization of bean failed; nested exception is java.lang.RuntimeException: Block numbers should increase
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1219)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
	at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:84)
	at org.ethereum.facade.EthereumFactory.createEthereum(EthereumFactory.java:64)
	at org.ethereum.facade.EthereumFactory.createEthereum(EthereumFactory.java:45)
	at org.ethereum.facade.EthereumFactory.createEthereum(EthereumFactory.java:41)
	at org.ethereum.Start.main(Start.java:53)
	at com.ethercamp.harmony.Application.main(Application.java:58)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'systemProperties' defined in org.ethereum.config.CommonConfig: Initialization of bean failed; nested exception is java.lang.RuntimeException: Block numbers should increase
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:207)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1128)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
	... 18 common frames omitted
Caused by: java.lang.RuntimeException: Block numbers should increase
	at org.ethereum.config.net.BaseNetConfig.add(BaseNetConfig.java:37)
	at org.ethereum.config.net.JsonNetConfig.<init>(JsonNetConfig.java:114)
	at org.ethereum.config.SystemProperties.getBlockchainConfig(SystemProperties.java:330)
	at org.ethereum.config.Initializer.initConfig(Initializer.java:66)
	at org.ethereum.config.Initializer.postProcessBeforeInitialization(Initializer.java:82)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1575)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)

Error during running `hive --client=go-ethereum:develop --test=NONE --sim=.`

Hello,

I've tried to run hive tests, but got error.
I cloned repo, installed hive, installed docker go client, and then run:
hive --client=go-ethereum:develop --test=NONE --sim=.

I think I missing some step, please suggest.

Stan


MacBook-Pro-Stan:projects stan$ cd hive
MacBook-Pro-Stan:hive stan$ hive --client=go-ethereum:develop --test=NONE --sim=.
INFO[11-02|17:04:01] docker daemon online                     version=1.12.1
INFO[11-02|17:04:01] creating outer shell container 
INFO[11-02|17:04:01] building new docker image 
INFO[11-02|17:04:01] starting outer shell container 

INFO[11-02|15:04:03] docker daemon online                     version=1.12.3
INFO[11-02|15:04:03] building clients for validation          pattern=go-ethereum:develop
INFO[11-02|15:04:03] building new docker image                client=go-ethereum:develop
EROR[11-02|15:04:10] failed to build docker image             client=go-ethereum:develop error="failed to register layer: Error processing tar file(exit status 1): lchown /lib/libcrypto.so.1.0.0: permission denied"
CRIT[11-02|15:04:10] failed to validate clients               error="clients/go-ethereum:develop: failed to register layer: Error processing tar file(exit status 1): lchown /lib/libcrypto.so.1.0.0: permission denied"
MacBook-Pro-Stan:hive stan$ 

Panic when using paralell clients

Execution ended with one of these, when performing multithreaded simulations. I used 7 threads, which each spun up a client. My simulator also calls delete when it's done with each client, so that needs locks aswell.

Offenders:

INFO[02-25|00:31:22] message from simulator                   client=cpp-ethereum:develop simulator=ethereum/consensus log="Starting node for test CALLCODESha256_1_d0g0v0_Frontier"
INFO[02-25|00:31:31] message from simulator                   client=cpp-ethereum:develop simulator=ethereum/consensus log="Test: ./tests/BlockchainTests/GeneralStateTests/stZeroCallsTest/ZeroValue_DELEGATECALL_ToOneStorageKey.json Zer
oValue_DELEGATECALL_ToOneStorageKey_d0g0v0_EIP150 (success)"
INFO[02-25|00:31:31] message from simulator                   client=cpp-ethereum:develop simulator=ethereum/consensus log="Starting node for test ZeroValue_DELEGATECALL_ToOneStorageKey_d0g0v0_Homestead"
fatal error: concurrent map writes

goroutine 613866 [running]:
runtime.throw(0x901050, 0x15)
	/usr/lib/go/src/runtime/panic.go:547 +0x90 fp=0xc82087f398 sp=0xc82087f380
runtime.mapassign1(0x776f80, 0xc8203020f0, 0xc82087f7d0, 0xc82087f510)
	/usr/lib/go/src/runtime/hashmap.go:445 +0xb1 fp=0xc82087f440 sp=0xc82087f398
main.(*simulatorAPIHandler).ServeHTTP(0xc820068d80, 0x7f8023de2258, 0xc82026e820, 0xc8212e1180)
	/gopath/src/github.com/karalabe/hive/simulator.go:299 +0x2865 fp=0xc82087fb60 sp=0xc82087f440
net/http.serverHandler.ServeHTTP(0xc820272e80, 0x7f8023de2258, 0xc82026e820, 0xc8212e1180)
	/usr/lib/go/src/net/http/server.go:2081 +0x19e fp=0xc82087fbc0 sp=0xc82087fb60
net/http.(*conn).serve(0xc821292380)
	/usr/lib/go/src/net/http/server.go:1472 +0xf2e fp=0xc82087ff88 sp=0xc82087fbc0
runtime.goexit()
	/usr/lib/go/src/runtime/asm_amd64.s:1998 +0x1 fp=0xc82087ff90 sp=0xc82087ff88
created by net/http.(*Server).Serve
	/usr/lib/go/src/net/http/server.go:2137 +0x44e

goroutine 1 [chan receive, 102 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func3(0x0, 0x0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:780 +0x4e
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.waiterFunc.Wait(0xc8202ee3b0, 0x0, 0x0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:647 +0x29
go.(*struct { github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.closerFunc; github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.waiterFunc }).Wait(0xc8202ee3c0, 0x0, 0x0)
	<autogenerated>:23 +0x47
main.simulate(0xc820088dc0, 0xc8201e36e0, 0x21, 0xc820207a70, 0x22, 0xb08080, 0x0, 0x0, 0x7f8023ebea20, 0xc82024f8a0, ...)
	/gopath/src/github.com/karalabe/hive/simulator.go:129 +0xe8b
main.simulateClients(0xc820088dc0, 0x7fff596d7e5f, 0x18, 0x7fff596d7e39, 0x12, 0xb08080, 0x0, 0x0, 0xc8201c8300, 0x0, ...)
	/gopath/src/github.com/karalabe/hive/simulator.go:67 +0xca4
main.mainInHost(0xc820088dc0, 0xb08080, 0x0, 0x0, 0x0, 0x0)
	/gopath/src/github.com/karalabe/hive/hive.go:102 +0xf5d
main.main()
	/gopath/src/github.com/karalabe/hive/hive.go:55 +0x763

goroutine 17 [syscall, 102 minutes, locked to thread]:
runtime.goexit()
	/usr/lib/go/src/runtime/asm_amd64.s:1998 +0x1

goroutine 5 [syscall, 102 minutes]:
os/signal.signal_recv(0x0)
	/usr/lib/go/src/runtime/sigqueue.go:116 +0x132
os/signal.loop()
	/usr/lib/go/src/os/signal/signal_unix.go:22 +0x18
created by os/signal.init.1
	/usr/lib/go/src/os/signal/signal_unix.go:28 +0x37

goroutine 62838 [chan send, 94 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8204a61d0, 0xc82040e9a0, 0xc8204ee500, 0xc820307a40, 0xc8203079e0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 40761 [chan send, 97 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820234150, 0xc82045b500, 0xc8200f9cc0, 0xc8202670e0, 0xc820267020)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 15 [chan receive, 102 minutes]:
main.makeGenesisDAG.func2(0xc820062f60, 0xc8200630e0, 0xc820088dc0, 0xc8201f2000)
	/gopath/src/github.com/karalabe/hive/internal.go:47 +0x3d
created by main.makeGenesisDAG
	/gopath/src/github.com/karalabe/hive/internal.go:50 +0x704

goroutine 144926 [chan send, 75 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c2d8, 0xc8201195e0, 0xc8203c7ea0, 0xc8201c37a0, 0xc8201c3740)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 14 [select, 102 minutes, locked to thread]:
runtime.gopark(0x97e8f8, 0xc820024728, 0x8b3050, 0x6, 0x100000000000018, 0x2)
	/usr/lib/go/src/runtime/proc.go:262 +0x163
runtime.selectgoImpl(0xc820024728, 0x0, 0x18)
	/usr/lib/go/src/runtime/select.go:392 +0xa67
runtime.selectgo(0xc820024728)
	/usr/lib/go/src/runtime/select.go:215 +0x12
runtime.ensureSigM.func1()
	/usr/lib/go/src/runtime/signal1_unix.go:279 +0x358
runtime.goexit()
	/usr/lib/go/src/runtime/asm_amd64.s:1998 +0x1

goroutine 55 [IO wait, 24 minutes]:
net.runtime_pollWait(0x7f8023ebfa10, 0x72, 0xc82031e000)
	/usr/lib/go/src/runtime/netpoll.go:160 +0x60
net.(*pollDesc).Wait(0xc820225090, 0x72, 0x0, 0x0)
	/usr/lib/go/src/net/fd_poll_runtime.go:73 +0x3a
net.(*pollDesc).WaitRead(0xc820225090, 0x0, 0x0)
	/usr/lib/go/src/net/fd_poll_runtime.go:78 +0x36
net.(*netFD).Read(0xc820225030, 0xc82031e000, 0x8009, 0x8009, 0x0, 0x7f8023eba050, 0xc820010140)
	/usr/lib/go/src/net/fd_unix.go:250 +0x23a
net.(*conn).Read(0xc8202341e0, 0xc82031e000, 0x8009, 0x8009, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/net.go:172 +0xe4
bufio.(*Reader).Read(0xc82010cea0, 0xc82031e000, 0x8009, 0x8009, 0x413, 0x0, 0x0)
	/usr/lib/go/src/bufio/bufio.go:197 +0x126
github.com/karalabe/hive/vendor/github.com/docker/docker/pkg/stdcopy.StdCopy(0x7f8023ebe358, 0xc8202341d8, 0x7f8023ebe358, 0xc8202341d8, 0x7f8023e38000, 0xc82010cea0, 0x62bb, 0x0, 0x0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/docker/docker/pkg/stdcopy/stdcopy.go:107 +0x163
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1.1(0xc82020c320, 0xc820306240, 0xc82010cea0, 0xc8203061e0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:737 +0x1b0
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:740 +0x6ca

goroutine 51 [IO wait]:
net.runtime_pollWait(0x7f8023ebfad0, 0x72, 0x0)
	/usr/lib/go/src/runtime/netpoll.go:160 +0x60
net.(*pollDesc).Wait(0xc820254840, 0x72, 0x0, 0x0)
	/usr/lib/go/src/net/fd_poll_runtime.go:73 +0x3a
net.(*pollDesc).WaitRead(0xc820254840, 0x0, 0x0)
	/usr/lib/go/src/net/fd_poll_runtime.go:78 +0x36
net.(*netFD).accept(0xc8202547e0, 0x0, 0x7f8023ec4388, 0xc82081a480)
	/usr/lib/go/src/net/fd_unix.go:426 +0x27c
net.(*TCPListener).AcceptTCP(0xc82002c930, 0xc820039e70, 0x0, 0x0)
	/usr/lib/go/src/net/tcpsock_posix.go:254 +0x4d
net.(*TCPListener).Accept(0xc82002c930, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/tcpsock_posix.go:264 +0x3d
net/http.(*Server).Serve(0xc820272e80, 0x7f8023ec4328, 0xc82002c930, 0x0, 0x0)
	/usr/lib/go/src/net/http/server.go:2117 +0x129
net/http.Serve(0x7f8023ec4328, 0xc82002c930, 0x7f8023ec4360, 0xc820068d80, 0x0, 0x0)
	/usr/lib/go/src/net/http/server.go:1976 +0x8e
created by main.startSimulatorAPI
	/gopath/src/github.com/karalabe/hive/simulator.go:184 +0xd27

goroutine 41 [select, 102 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8202341e0, 0xc8202282a0, 0xc82020c320, 0xc8200e6c00, 0xc8200e6ba0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:762 +0x5e5
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 25673 [chan send, 98 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8204a60e0, 0xc82013ab60, 0xc820419810, 0xc8200e63c0, 0xc8200e6180)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 45144 [chan send, 96 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820102220, 0xc8201ad0a0, 0xc8204ee9b0, 0xc820063740, 0xc8200636e0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 55666 [chan send, 95 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820332020, 0xc820244000, 0xc820418500, 0xc8203a04e0, 0xc8203a0480)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 479778 [chan send, 20 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8203326b8, 0xc820f40b60, 0xc820f52280, 0xc8214e6600, 0xc8214e65a0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 186749 [chan send, 71 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8204382d8, 0xc8205550a0, 0xc8205e70e0, 0xc82023d7a0, 0xc82023d740)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 188 [chan send, 102 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201020a0, 0xc82013aee0, 0xc8204189b0, 0xc820062960, 0xc820062900)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 19031 [chan send, 100 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c0b8, 0xc8202441c0, 0xc82020cc30, 0xc820062cc0, 0xc820062c60)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 81194 [chan send, 92 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820102280, 0xc8201ada40, 0xc8205d4be0, 0xc820063e00, 0xc820063da0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 314003 [chan send, 49 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8204a6470, 0xc820359dc0, 0xc8203efd10, 0xc8214d7620, 0xc8214d7560)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 30809 [chan send, 98 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c1c8, 0xc8201ad420, 0xc8204ef9f0, 0xc820349a40, 0xc8203499e0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 170 [chan send, 102 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c068, 0xc82048c620, 0xc82020c2d0, 0xc82010cc00, 0xc82010cba0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 247374 [chan send, 64 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c4d8, 0xc8204f7ea0, 0xc8205e5090, 0xc8205e06c0, 0xc8205e0660)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 182571 [chan send, 72 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201be238, 0xc8201cbea0, 0xc8205e6af0, 0xc8202672c0, 0xc820267260)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 179 [chan send, 102 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820102050, 0xc82013a700, 0xc820418550, 0xc820343140, 0xc8203430e0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 99067 [chan send, 90 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8203321b0, 0xc820245260, 0xc8202ce190, 0xc8203a1800, 0xc8203a17a0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 486696 [chan send, 19 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201be838, 0xc82076b500, 0xc8207197c0, 0xc8205f3da0, 0xc8205f3d40)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 31665 [chan send, 98 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c1e8, 0xc820119420, 0xc8204ef6d0, 0xc820063980, 0xc820063920)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 66604 [chan send, 93 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820102240, 0xc82043d7a0, 0xc820419a40, 0xc8203530e0, 0xc820353020)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 37854 [chan send, 97 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8204a6018, 0xc82043c1c0, 0xc820013220, 0xc8203a0420, 0xc8203a03c0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 3371 [chan send, 101 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8204a6048, 0xc820228d20, 0xc8200f8b90, 0xc820279f80, 0xc820279f20)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 194 [chan send, 102 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820234078, 0xc82043cd20, 0xc8200f86e0, 0xc8200e6120, 0xc8200e60c0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 56508 [chan send, 95 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820332058, 0xc8202448c0, 0xc820403310, 0xc8204ad680, 0xc8204ad620)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 105361 [chan send, 89 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c328, 0xc82045a9a0, 0xc8203ecf00, 0xc8203e8e40, 0xc8203e8de0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 144949 [chan send, 76 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201022f0, 0xc8201ca8c0, 0xc8201536d0, 0xc8203a05a0, 0xc8203a0540)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 332832 [chan send, 47 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201be430, 0xc820377340, 0xc8205e59a0, 0xc820353f80, 0xc820353c80)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 157478 [chan send, 74 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201be170, 0xc8201addc0, 0xc8205b51d0, 0xc8203e89c0, 0xc8203e8900)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 316365 [chan send, 48 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820234660, 0xc820376540, 0xc82015b680, 0xc8214ce1e0, 0xc8214ce180)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 3459 [chan send, 101 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c0a8, 0xc820244700, 0xc8203c6cd0, 0xc820063b60, 0xc820063b00)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 133 [chan send, 101 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820438020, 0xc8202280e0, 0xc8203c61e0, 0xc8204303c0, 0xc820430360)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 4325 [chan send, 101 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820102030, 0xc8201187e0, 0xc82020caa0, 0xc820307800, 0xc8203077a0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 192 [chan send, 102 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c028, 0xc82043c000, 0xc8200f80a0, 0xc820342240, 0xc8203421e0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 514822 [chan send, 15 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201be850, 0xc8202b7180, 0xc820718eb0, 0xc8205be600, 0xc8205be4e0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 181243 [chan send, 72 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c428, 0xc8201ac9a0, 0xc8202cf270, 0xc820349500, 0xc820348c60)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 45212 [chan send, 96 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c150, 0xc82013a540, 0xc8203c66e0, 0xc8204ac840, 0xc8204ac780)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 479012 [chan send, 20 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820234890, 0xc82019fea0, 0xc8207a97c0, 0xc82114f980, 0xc82114f920)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 54277 [chan send, 95 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820438120, 0xc82045b420, 0xc8205b4190, 0xc82023c7e0, 0xc82023c780)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 242 [chan send, 101 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820438028, 0xc82013a000, 0xc820418370, 0xc8200e6900, 0xc8200e6840)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 62722 [chan send, 94 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201022a0, 0xc820119c00, 0xc82024d310, 0xc82039c360, 0xc82039c300)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 163768 [chan send, 74 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201be1a0, 0xc8201ca2a0, 0xc8203edd10, 0xc82023d1a0, 0xc82023d140)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 13256 [chan send, 100 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c0c8, 0xc8201acb60, 0xc8200139a0, 0xc8203422a0, 0xc8203420c0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 492325 [chan send, 18 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201be7b8, 0xc820fa3ce0, 0xc820fff4a0, 0xc820610480, 0xc820610420)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 298557 [chan send, 50 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820438390, 0xc820376000, 0xc8205e4690, 0xc8203425a0, 0xc820342540)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 90328 [chan send, 91 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c230, 0xc82043ce00, 0xc820403c70, 0xc82039d560, 0xc82039d500)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 88871 [chan send, 91 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8204a6220, 0xc820119960, 0xc82024c1e0, 0xc820353d40, 0xc820353ce0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 4246 [chan send, 101 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201020a8, 0xc82013b500, 0xc8200f8000, 0xc8202fb7a0, 0xc8202fb740)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 38344 [chan send, 97 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820332010, 0xc82045a2a0, 0xc820012ff0, 0xc8203485a0, 0xc8203484e0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 1876 [chan send, 101 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8204a60b8, 0xc8201197a0, 0xc8201539f0, 0xc820278000, 0xc82010dd40)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 520633 [chan send, 14 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c790, 0xc82017bce0, 0xc820fff9a0, 0xc82116d380, 0xc82116d320)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 10193 [chan send, 100 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc820234050, 0xc82043c540, 0xc82020ca00, 0xc820278e40, 0xc820278de0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 32417 [chan send, 98 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201020d8, 0xc820244b60, 0xc820153590, 0xc82010c060, 0xc82010c000)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 312208 [chan send, 49 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8202aa2f0, 0xc8203777a0, 0xc82014b4a0, 0xc8214cfe60, 0xc8214cfe00)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 46580 [chan send, 96 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c210, 0xc820229a40, 0xc8203ec6e0, 0xc820267ec0, 0xc820267e60)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 529504 [chan send, 13 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8204a6860, 0xc820716a80, 0xc820ffff90, 0xc82118e240, 0xc82118e1e0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 6711 [chan send, 101 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8204a6060, 0xc82048d5e0, 0xc8204031d0, 0xc820342c60, 0xc820342c00)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 58482 [chan send, 95 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201be110, 0xc820228b60, 0xc82024caf0, 0xc8203531a0, 0xc820353140)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 65099 [chan send, 94 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8204a61c0, 0xc82045afc0, 0xc820562dc0, 0xc8205d0c00, 0xc8205d0ba0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 614619 [select]:
net/http.(*persistConn).roundTrip(0xc8201b31e0, 0xc8214a6880, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/http/transport.go:1476 +0xf1f
net/http.(*Transport).RoundTrip(0xc8200c4480, 0xc8213e2460, 0xc8200c4480, 0x0, 0x0)
	/usr/lib/go/src/net/http/transport.go:327 +0x9bb
net/http.send(0xc8213e2460, 0x7f8023ebe550, 0xc8200c4480, 0x0, 0x0, 0x0, 0xc82136a2a0, 0x0, 0x0)
	/usr/lib/go/src/net/http/client.go:260 +0x6b7
net/http.(*Client).send(0xc8200173e0, 0xc8213e2460, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/http/client.go:155 +0x185
net/http.(*Client).doFollowingRedirects(0xc8200173e0, 0xc8213e2460, 0x97e4f8, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/http/client.go:475 +0x8a4
net/http.(*Client).Do(0xc8200173e0, 0xc8213e2460, 0xc8213730a0, 0x0, 0x0)
	/usr/lib/go/src/net/http/client.go:191 +0x1e4
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).do(0xc820088dc0, 0x8b0020, 0x4, 0xc8211caba0, 0x52, 0x0, 0x0, 0xc8211cab00, 0x0, 0x8, ...)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:437 +0x405
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).StartContainer(0xc820088dc0, 0xc82088b8c0, 0x40, 0x0, 0x0, 0x0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/container.go:691 +0x1f0
main.runContainer(0xc820088dc0, 0xc82088b8c0, 0x40, 0x7f8023ebea20, 0xc82138a0e0, 0xc8211ca8a0, 0x57, 0x0, 0x0, 0x0, ...)
	/gopath/src/github.com/karalabe/hive/containers.go:360 +0x92c
main.(*simulatorAPIHandler).ServeHTTP(0xc820068d80, 0x7f8023de2258, 0xc8204e1110, 0xc821210380)
	/gopath/src/github.com/karalabe/hive/simulator.go:270 +0x1f0e
net/http.serverHandler.ServeHTTP(0xc820272e80, 0x7f8023de2258, 0xc8204e1110, 0xc821210380)
	/usr/lib/go/src/net/http/server.go:2081 +0x19e
net/http.(*conn).serve(0xc8212d2600)
	/usr/lib/go/src/net/http/server.go:1472 +0xf2e
created by net/http.(*Server).Serve
	/usr/lib/go/src/net/http/server.go:2137 +0x44e

goroutine 25919 [chan send, 84 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c130, 0xc82013b340, 0xc8204193b0, 0xc820306960, 0xc820306900)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 500229 [chan send, 17 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201be778, 0xc8206ef960, 0xc820fff180, 0xc82116c4e0, 0xc82116c480)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 67835 [chan send, 94 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201be0c8, 0xc8201ac000, 0xc8200f8960, 0xc8204ac420, 0xc8204ac3c0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 76946 [chan send, 93 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c2c0, 0xc82045aa80, 0xc8205d4a50, 0xc820157800, 0xc8201577a0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 336507 [chan send, 46 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c560, 0xc8203770a0, 0xc82062c410, 0xc8202c0060, 0xc8202c0000)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 143714 [chan send, 77 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201be210, 0xc8204f67e0, 0xc8205b5720, 0xc8205d1800, 0xc8205d17a0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 42704 [chan send, 97 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8201021b0, 0xc8201ca540, 0xc820418870, 0xc820062de0, 0xc820062d80)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 20960 [chan send, 99 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c178, 0xc8202450a0, 0xc8203c71d0, 0xc820307200, 0xc8203071a0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 42715 [chan send, 97 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc8203320e0, 0xc82040e0e0, 0xc8201525f0, 0xc8205d13e0, 0xc8205d1380)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615

goroutine 1937 [chan send, 101 minutes]:
github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack.func1(0x7f8023ebeb00, 0xc82002c090, 0xc820118380, 0xc8201523c0, 0xc8204acb40, 0xc8204acae0)
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:771 +0x593
created by github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient.(*Client).hijack
	/gopath/src/github.com/karalabe/hive/vendor/github.com/fsouza/go-dockerclient/client.go:773 +0x615


The last ones were repeated a lot more times.

Fetaure-request: client-info in metadata

When reporting results, the simulator has no way to set metadata. Specifically, I would like the clientVersion in the output. Currently, I fetch it like so:

def getClientversion(self):
        return self._getNodeData("web3_clientVersion",[]) 

However, I'm then forced to either only log it in the client logfile, or place it into every subresult. Which is wasteful.

So, I propose that either

  1. The call above is used here: https://github.com/karalabe/hive/blob/master/simulator.go#L293 , instead of just checking if the port is open, check the client version, and return along with the instance. Also, add this info to the testresult metadata.
  2. Add an API-method, /metadata, where the simulator/validator can post metadata which is 'static' for all executions within the test suite.

Consider a different status for tests that are not executed because we fail to start a client node

The consensus simulator will mark a test as failed if it can't start a client node to run the test against, but that's not accurate as the test didn't actually run. We could use the skipped status, but that may be confusing as skipped is used for blacklisted tests -- although currently we don't seem to blacklist any consensus tests

I'd be happy to fix the code myself, just wanted to first check if this is desirable and what status to use

EthereumJ failures

cc @zilm13

I got it working locally, but when running on the new server, each instance seem to die with the following stacktrace:

Initializing database with genesis state...
Loading initial blockchain...
Loading remaining individual blocks...
Performing action: importBlocks
19:58:31,886 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
19:58:31,887 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
19:58:31,888 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [jar:file:/harmony.ether.camp/lib/harmony.ether.camp.jar!/logback.xml]
19:58:31,915 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs multiple times on the classpath.
19:58:31,916 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [jar:file:/harmony.ether.camp/lib/ethereumj-core-1.7.0-SNAPSHOT.jar!/logback.xml]
19:58:31,916 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [jar:file:/harmony.ether.camp/lib/harmony.ether.camp.jar!/logback.xml]
19:58:32,218 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@587c290d - URL [jar:file:/harmony.ether.camp/lib/harmony.ether.camp.jar!/logback.xml] is not of type file
19:58:32,586 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
19:58:34,640 |-INFO in ch.qos.logback.core.joran.action.ShutdownHookAction - About to instantiate shutdown hook of type [ch.qos.logback.core.hook.DelayingShutdownHook]
19:58:34,647 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
19:58:34,675 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
19:58:34,751 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
19:58:35,044 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
19:58:35,048 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE]
19:58:35,071 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@1159114532 - Will use zip compression
19:58:35,073 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@1159114532 - Will use the pattern logs/harmony-%d{yyyy-MM-dd_HH}.log for the active file
19:58:35,116 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd_HH' from file name pattern 'logs/harmony-%d{yyyy-MM-dd_HH}.log.zip'.
19:58:35,116 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at the top of every hour.
19:58:35,141 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Tue Dec 19 19:58:35 GMT 2017
19:58:35,143 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
19:58:35,185 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: logs/harmony.log
19:58:35,185 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [logs/harmony.log]
19:58:35,210 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.classic.AsyncAppender]
19:58:35,213 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [ASYNC]
19:58:35,215 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [FILE] to ch.qos.logback.classic.AsyncAppender[ASYNC]
19:58:35,215 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNC] - Attaching appender named [FILE] to AsyncAppender.
19:58:35,215 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNC] - Setting discardingThreshold to 0
19:58:35,216 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
19:58:35,216 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
19:58:35,216 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [ASYNC] to Logger[ROOT]
19:58:35,217 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.springframework] to ERROR
19:58:35,217 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [state] to WARN
19:58:35,217 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [trie] to ERROR
19:58:35,217 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [net] to DEBUG
19:58:35,217 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [execute] to ERROR
19:58:35,217 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [VM] to ERROR
19:58:35,217 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pending] to DEBUG
19:58:35,217 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [sync] to TRACE
19:58:35,218 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [wire] to ERROR
19:58:35,218 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [db] to DEBUG
19:58:35,218 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [general] to DEBUG
19:58:35,218 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [TCK-Test] to ERROR
19:58:35,218 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.hibernate] to ERROR
19:58:35,219 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [repository] to INFO
19:58:35,219 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [blockchain] to INFO
19:58:35,219 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [mine] to DEBUG
19:58:35,220 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [blockqueue] to DEBUG
19:58:35,220 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [rlp] to ERROR
19:58:35,220 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [java.nio] to ERROR
19:58:35,220 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [io.netty] to ERROR
19:58:35,220 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [discover] to DEBUG
19:58:35,220 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [hsqldb.db] to ERROR
19:58:35,220 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [desktop] to DEBUG
19:58:35,220 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [contracts] to DEBUG
19:58:35,221 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [keystore] to DEBUG
19:58:35,221 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [wallet] to DEBUG
19:58:35,221 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [harmony] to DEBUG
19:58:35,221 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [jsonrpc] to DEBUG
19:58:35,221 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.springframework.web.servlet.DispatcherServlet] to INFO
19:58:35,221 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.ethercamp.harmony] to DEBUG
19:58:35,221 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [web-profiler] to INFO
19:58:35,221 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [block-saver] to DEBUG
19:58:35,221 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [batch-size-adviser] to DEBUG
19:58:35,221 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pg-data-copier] to DEBUG
19:58:35,221 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [blocks-holder] to INFO
19:58:35,222 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [contract-data] to INFO
19:58:35,222 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [stat] to INFO
19:58:35,222 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [discover] to INFO
19:58:35,222 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [sync] to INFO
19:58:35,222 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [notification] to TRACE
19:58:35,222 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
19:58:35,225 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@4ae82894 - Registering current configuration as safe fallback point

19:58:35.801 INFO [general]  Config ( yes ): default properties from resource 'ethereumj.conf'
19:58:35.841 INFO [general]  Config ( no  ): user properties from -Dethereumj.conf.res resource 'null'
19:58:35.849 INFO [general]  Config ( yes ): user properties from resource 'user.conf'
19:58:35.880 INFO [general]  Config ( no  ): user properties from file '/config/ethereumj.conf'
19:58:35.880 INFO [general]  Config ( no  ): test properties from resource 'test-ethereumj.conf'
19:58:35.881 INFO [general]  Config ( no  ): test properties from resource 'test-user.conf'
19:58:35.882 INFO [general]  Config ( no  ): user properties from -Dethereumj.conf.file file 'null'
19:58:35.884 INFO [general]  Config ( no  ): config passed via constructor
19:58:36.068 INFO [general]  Starting EthereumJ...
19:58:46.586 INFO [general]  Running frontier.json,  core version: 1.7.0-SNAPSHOT
19:58:46.591 INFO [general]  git.hash: [0d598eb]
19:58:46.592 INFO [general]  build.time: [GMT]-[18/Dec/2017]-[08:06]
19:58:46.598 INFO [general]  Created database version file
19:58:46.631 INFO [general]  capability eth version: [62, 63]
19:58:46.632 INFO [general]  capability shh version: [3]
19:58:46.632 INFO [general]  capability bzz version: [0]
19:58:48.900 ERROR [general]  Uncaught exception
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'defaultConfig': Unsatisfied dependency expressed through field 'config'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'systemProperties' defined in org.ethereum.config.CommonConfig: Initialization of bean failed; nested exception is java.lang.RuntimeException: Block numbers should increase
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1219)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
	at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:84)
	at org.ethereum.facade.EthereumFactory.createEthereum(EthereumFactory.java:63)
	at org.ethereum.facade.EthereumFactory.createEthereum(EthereumFactory.java:44)
	at org.ethereum.facade.EthereumFactory.createEthereum(EthereumFactory.java:40)
	at org.ethereum.Start.main(Start.java:53)
	at com.ethercamp.harmony.Application.main(Application.java:55)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'systemProperties' defined in org.ethereum.config.CommonConfig: Initialization of bean failed; nested exception is java.lang.RuntimeException: Block numbers should increase
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:207)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1128)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
	... 18 common frames omitted
Caused by: java.lang.RuntimeException: Block numbers should increase
	at org.ethereum.config.net.BaseNetConfig.add(BaseNetConfig.java:37)
	at org.ethereum.config.net.JsonNetConfig.<init>(JsonNetConfig.java:118)
	at org.ethereum.config.SystemProperties.getBlockchainConfig(SystemProperties.java:299)
	at org.ethereum.config.Initializer.initConfig(Initializer.java:66)
	at org.ethereum.config.Initializer.postProcessBeforeInitialization(Initializer.java:82)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1575)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
	... 27 common frames omitted

HIve failures

Hive has now started failing:

Traceback (most recent call last):
  File "/simulator.py", line 87, in 
    main(sys.argv[1:])
  File "/simulator.py", line 79, in main
    testfiles=utils.getFilesRecursive("./tests/BlockchainTests/")).run()
  File "/hivemodel.py", line 134, in run
    return self._performTests(start, end, whitelist, blacklist)
  File "/hivemodel.py", line 239, in _performTests
    self.makeTestcases(start, end, whitelist, blacklist))
  File "/usr/lib/python2.7.15/lib/python2.7/multiprocessing/pool.py", line 253, in map
    return self.map_async(func, iterable, chunksize).get()
  File "/usr/lib/python2.7.15/lib/python2.7/multiprocessing/pool.py", line 572, in get
    raise self._value
requests.exceptions.ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))

I'm not sure why, but the ('Connection aborted.', error(104, 'Connection reset by peer') sometimes is returned when the hive framework is busy, but we did not previously exit the whole simulation because of it.

add docker integration

Is it cool if I go ahead and to this @karalabe ? Anything I need to know?
Although there are plans to make running hive possible using only docker

Make the simulator able to specify a kill-timeout on containers

Hive sometimes becomes totally frozen, when client containers do not properly exit (nor respond).
See ethereum/aleth#5243 and openethereum/parity-ethereum#5571 . The current work-around is to either ssh into the machine and kill them, or to run a cron-job to kill any aleth or parity processes older than e..g 10 minutes.

It would be good if the simulator, when starting a new container, could specify a max-lifetime for the container. The hive framework would then kill the client container after the specified time, just as if the simulator killed it with a request.
Note: The kill-timers should not pile up indefinitely -- if we run 1000 containers within 10 minutes (and all exist within a short time), there should not be 1000 timers - so remove the timer when the container dies.

cc @vs77bb - can we get this bountied?

no test results on stdout when using shell container

When trying to pipe test results from stdout to a file, running hive in the default (no shell) configuration results in an empty file:

ubuntu@hiveserver:~/hive$ hive --test=smoke | tee smoke_results.json
INFO[02-10|23:20:04] docker daemon online                     version=1.13.0
INFO[02-10|23:20:04] creating outer shell container 
INFO[02-10|23:20:04] building new docker image 
INFO[02-10|23:20:06] starting outer shell container 
INFO[02-10|23:20:07] docker daemon online                     version=1.13.0
INFO[02-10|23:20:07] building clients for validation          pattern=:master
INFO[02-10|23:20:07] building new docker image                client=go-ethereum:master
INFO[02-10|23:20:07] building new docker image                client=parity:master
INFO[02-10|23:20:07] building validators for testing          pattern=smoke
INFO[02-10|23:20:07] building new docker image                validator=smoke/genesis-chain
INFO[02-10|23:20:09] building new docker image                validator=smoke/genesis-chain-blocks
INFO[02-10|23:20:11] building new docker image                validator=smoke/genesis-keys
INFO[02-10|23:20:12] building new docker image                validator=smoke/genesis-only
INFO[02-10|23:20:14] building new docker image                validator=smoke/testnet-nonces
INFO[02-10|23:20:15] running client validation                client=parity:master validator=smoke/genesis-keys
EROR[02-10|23:20:18] validation failed                        client=parity:master validator=smoke/genesis-keys time=2.171832068s
INFO[02-10|23:20:18] running client validation                client=parity:master validator=smoke/genesis-only
INFO[02-10|23:20:20] validation passed                        client=parity:master validator=smoke/genesis-only time=2.152353303s
INFO[02-10|23:20:20] running client validation                client=parity:master validator=smoke/testnet-nonces
EROR[02-10|23:20:22] validation failed                        client=parity:master validator=smoke/testnet-nonces time=2.138642965s
INFO[02-10|23:20:22] running client validation                client=parity:master validator=smoke/genesis-chain
INFO[02-10|23:20:25] validation passed                        client=parity:master validator=smoke/genesis-chain time=2.725743815s
INFO[02-10|23:20:25] running client validation                client=parity:master validator=smoke/genesis-chain-blocks
INFO[02-10|23:20:29] validation passed                        client=parity:master validator=smoke/genesis-chain-blocks time=4.724959907s
INFO[02-10|23:20:29] running client validation                client=go-ethereum:master validator=smoke/genesis-keys
INFO[02-10|23:20:31] validation passed                        client=go-ethereum:master validator=smoke/genesis-keys time=1.845927873s
INFO[02-10|23:20:31] running client validation                client=go-ethereum:master validator=smoke/genesis-only
INFO[02-10|23:20:33] validation passed                        client=go-ethereum:master validator=smoke/genesis-only time=1.672095449s
INFO[02-10|23:20:33] running client validation                client=go-ethereum:master validator=smoke/testnet-nonces
EROR[02-10|23:20:35] validation failed                        client=go-ethereum:master validator=smoke/testnet-nonces time=1.697491346s
INFO[02-10|23:20:35] running client validation                client=go-ethereum:master validator=smoke/genesis-chain
INFO[02-10|23:20:37] validation passed                        client=go-ethereum:master validator=smoke/genesis-chain time=2.837561306s
INFO[02-10|23:20:37] running client validation                client=go-ethereum:master validator=smoke/genesis-chain-blocks
INFO[02-10|23:20:43] validation passed                        client=go-ethereum:master validator=smoke/genesis-chain-blocks time=5.794893816s
{
  "validations": {
    "go-ethereum:master": {
      "smoke/genesis-chain": {
        "start": "2017-02-10T23:20:35.010164138Z",
        "end": "2017-02-10T23:20:37.847725444Z",
        "success": true
      },
      "smoke/genesis-chain-blocks": {
        "start": "2017-02-10T23:20:37.84787095Z",
        "end": "2017-02-10T23:20:43.642764766Z",
        "success": true
      },
      "smoke/genesis-keys": {
        "start": "2017-02-10T23:20:29.793651031Z",
        "end": "2017-02-10T23:20:31.639578904Z",
        "success": true
      },
      "smoke/genesis-only": {
        "start": "2017-02-10T23:20:31.639928518Z",
        "end": "2017-02-10T23:20:33.312023967Z",
        "success": true
      },
      "smoke/testnet-nonces": {
        "start": "2017-02-10T23:20:33.312168672Z",
        "end": "2017-02-10T23:20:35.009660018Z",
        "success": false
      }
    },
    "parity:master": {
      "smoke/genesis-chain": {
        "start": "2017-02-10T23:20:22.342259882Z",
        "end": "2017-02-10T23:20:25.068003697Z",
        "success": true
      },
      "smoke/genesis-chain-blocks": {
        "start": "2017-02-10T23:20:25.068286808Z",
        "end": "2017-02-10T23:20:29.793246715Z",
        "success": true
      },
      "smoke/genesis-keys": {
        "start": "2017-02-10T23:20:15.878609613Z",
        "end": "2017-02-10T23:20:18.050441681Z",
        "success": false
      },
      "smoke/genesis-only": {
        "start": "2017-02-10T23:20:18.050864798Z",
        "end": "2017-02-10T23:20:20.203218101Z",
        "success": true
      },
      "smoke/testnet-nonces": {
        "start": "2017-02-10T23:20:20.203295104Z",
        "end": "2017-02-10T23:20:22.341938069Z",
        "success": false
      }
    }
  }
}

ubuntu@hiveserver:~/hive$ cat smoke_results.json 
ubuntu@hiveserver:~/hive$

It doesn't work because with a shell container the test results are printed to stderr, not stdout.

But with the --docker-noshell flag, the stdout pipe works correctly:

ubuntu@hiveserver:~/hive$ hive --docker-noshell --test=smoke | tee smoke_results.json
INFO[02-10|23:21:35] docker daemon online                     version=1.13.0
INFO[02-10|23:21:35] building clients for validation          pattern=:master
INFO[02-10|23:21:35] building new docker image                client=go-ethereum:master
INFO[02-10|23:21:35] building new docker image                client=parity:master
INFO[02-10|23:21:35] building validators for testing          pattern=smoke
INFO[02-10|23:21:35] building new docker image                validator=smoke/genesis-chain
INFO[02-10|23:21:35] building new docker image                validator=smoke/genesis-chain-blocks
INFO[02-10|23:21:35] building new docker image                validator=smoke/genesis-keys
INFO[02-10|23:21:35] building new docker image                validator=smoke/genesis-only
INFO[02-10|23:21:35] building new docker image                validator=smoke/testnet-nonces
INFO[02-10|23:21:35] running client validation                client=go-ethereum:master validator=smoke/testnet-nonces
EROR[02-10|23:21:37] validation failed                        client=go-ethereum:master validator=smoke/testnet-nonces time=1.738074342s
INFO[02-10|23:21:37] running client validation                client=go-ethereum:master validator=smoke/genesis-chain
INFO[02-10|23:21:40] validation passed                        client=go-ethereum:master validator=smoke/genesis-chain time=2.673024952s
INFO[02-10|23:21:40] running client validation                client=go-ethereum:master validator=smoke/genesis-chain-blocks
INFO[02-10|23:21:45] validation passed                        client=go-ethereum:master validator=smoke/genesis-chain-blocks time=5.543175944s
INFO[02-10|23:21:45] running client validation                client=go-ethereum:master validator=smoke/genesis-keys
INFO[02-10|23:21:47] validation passed                        client=go-ethereum:master validator=smoke/genesis-keys time=1.685814891s
INFO[02-10|23:21:47] running client validation                client=go-ethereum:master validator=smoke/genesis-only
INFO[02-10|23:21:48] validation passed                        client=go-ethereum:master validator=smoke/genesis-only time=1.58723502s
INFO[02-10|23:21:48] running client validation                client=parity:master validator=smoke/testnet-nonces
EROR[02-10|23:21:50] validation failed                        client=parity:master validator=smoke/testnet-nonces time=1.990837568s
INFO[02-10|23:21:50] running client validation                client=parity:master validator=smoke/genesis-chain
INFO[02-10|23:21:53] validation passed                        client=parity:master validator=smoke/genesis-chain time=2.614785766s
INFO[02-10|23:21:53] running client validation                client=parity:master validator=smoke/genesis-chain-blocks
INFO[02-10|23:21:58] validation passed                        client=parity:master validator=smoke/genesis-chain-blocks time=4.471465067s
INFO[02-10|23:21:58] running client validation                client=parity:master validator=smoke/genesis-keys
EROR[02-10|23:22:00] validation failed                        client=parity:master validator=smoke/genesis-keys time=2.002672233s
INFO[02-10|23:22:00] running client validation                client=parity:master validator=smoke/genesis-only
INFO[02-10|23:22:02] validation passed                        client=parity:master validator=smoke/genesis-only time=2.018119139s
{
  "validations": {
    "go-ethereum:master": {
      "smoke/genesis-chain": {
        "start": "2017-02-10T23:21:37.49940101Z",
        "end": "2017-02-10T23:21:40.172425962Z",
        "success": true
      },
      "smoke/genesis-chain-blocks": {
        "start": "2017-02-10T23:21:40.172645171Z",
        "end": "2017-02-10T23:21:45.715821115Z",
        "success": true
      },
      "smoke/genesis-keys": {
        "start": "2017-02-10T23:21:45.715987822Z",
        "end": "2017-02-10T23:21:47.401802713Z",
        "success": true
      },
      "smoke/genesis-only": {
        "start": "2017-02-10T23:21:47.402004321Z",
        "end": "2017-02-10T23:21:48.989239341Z",
        "success": true
      },
      "smoke/testnet-nonces": {
        "start": "2017-02-10T23:21:35.761107059Z",
        "end": "2017-02-10T23:21:37.499181401Z",
        "success": false
      }
    },
    "parity:master": {
      "smoke/genesis-chain": {
        "start": "2017-02-10T23:21:50.980462024Z",
        "end": "2017-02-10T23:21:53.59524779Z",
        "success": true
      },
      "smoke/genesis-chain-blocks": {
        "start": "2017-02-10T23:21:53.595436598Z",
        "end": "2017-02-10T23:21:58.066901665Z",
        "success": true
      },
      "smoke/genesis-keys": {
        "start": "2017-02-10T23:21:58.067108473Z",
        "end": "2017-02-10T23:22:00.069780706Z",
        "success": false
      },
      "smoke/genesis-only": {
        "start": "2017-02-10T23:22:00.070010815Z",
        "end": "2017-02-10T23:22:02.088129954Z",
        "success": true
      },
      "smoke/testnet-nonces": {
        "start": "2017-02-10T23:21:48.989417948Z",
        "end": "2017-02-10T23:21:50.980255516Z",
        "success": false
      }
    }
  }
}

ubuntu@hiveserver:~/hive$ cat smoke_results.json 
{
  "validations": {
    "go-ethereum:master": {
      "smoke/genesis-chain": {
        "start": "2017-02-10T23:21:37.49940101Z",
        "end": "2017-02-10T23:21:40.172425962Z",
        "success": true
      },
      "smoke/genesis-chain-blocks": {
        "start": "2017-02-10T23:21:40.172645171Z",
        "end": "2017-02-10T23:21:45.715821115Z",
        "success": true
      },
      "smoke/genesis-keys": {
        "start": "2017-02-10T23:21:45.715987822Z",
        "end": "2017-02-10T23:21:47.401802713Z",
        "success": true
      },
      "smoke/genesis-only": {
        "start": "2017-02-10T23:21:47.402004321Z",
        "end": "2017-02-10T23:21:48.989239341Z",
        "success": true
      },
      "smoke/testnet-nonces": {
        "start": "2017-02-10T23:21:35.761107059Z",
        "end": "2017-02-10T23:21:37.499181401Z",
        "success": false
      }
    },
    "parity:master": {
      "smoke/genesis-chain": {
        "start": "2017-02-10T23:21:50.980462024Z",
        "end": "2017-02-10T23:21:53.59524779Z",
        "success": true
      },
      "smoke/genesis-chain-blocks": {
        "start": "2017-02-10T23:21:53.595436598Z",
        "end": "2017-02-10T23:21:58.066901665Z",
        "success": true
      },
      "smoke/genesis-keys": {
        "start": "2017-02-10T23:21:58.067108473Z",
        "end": "2017-02-10T23:22:00.069780706Z",
        "success": false
      },
      "smoke/genesis-only": {
        "start": "2017-02-10T23:22:00.070010815Z",
        "end": "2017-02-10T23:22:02.088129954Z",
        "success": true
      },
      "smoke/testnet-nonces": {
        "start": "2017-02-10T23:21:48.989417948Z",
        "end": "2017-02-10T23:21:50.980255516Z",
        "success": false
      }
    }
  }
}

EthereumJ fails to shutdown after failed import

Got a stuck node on hive prod today, here's the relevant part of the log:

04:52:50,690 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [stat] to INFO
04:52:50,690 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [discover] to INFO
04:52:50,690 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [sync] to INFO
04:52:50,690 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [notification] to TRACE
04:52:50,690 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
04:52:50,699 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@7a30d1e6 - Registering current configuration as safe fallback point

04:52:51.194 INFO [general]  Config ( yes ): default properties from resource 'ethereumj.conf'
04:52:51.495 INFO [general]  Config ( no  ): user properties from -Dethereumj.conf.res resource(s) 'null'
04:52:51.516 INFO [general]  Config ( yes ): user properties from resource 'user.conf'
04:52:51.518 INFO [general]  Config ( no  ): user properties from file '/config/ethereumj.conf'
04:52:51.519 INFO [general]  Config ( no  ): test properties from resource 'test-ethereumj.conf'
04:52:51.519 INFO [general]  Config ( no  ): test properties from resource 'test-user.conf'
04:52:51.520 INFO [general]  Config ( no  ): user properties from -Dethereumj.conf.file file(s) 'null'
04:52:51.521 INFO [general]  Config ( no  ): config passed via constructor
04:52:51.789 INFO [general]  Starting EthereumJ...
04:52:56.124 INFO [general]  Running frontier.json,  core version: 1.9.0-SNAPSHOT
04:52:56.134 INFO [general]  git.hash: [b2bdc82]
04:52:56.135 INFO [general]  build.time: [GMT]-[05/Oct/2018]-[10:42]
04:52:56.136 INFO [general]  Created database version file
04:52:56.137 INFO [general]  capability eth version: [62, 63]
04:52:56.138 INFO [general]  capability shh version: [3]
04:52:56.138 INFO [general]  capability bzz version: [0]
04:52:58.122 INFO [general]  New nodeID generated: 82473bf97ff42503fdc2f52d88fde69899599a79004a49d5385f2d7c37684600fbcbfd570542865e06b7c3969442a9e001775db6e11e229a0eb6ea3767af185a
04:52:58.122 INFO [general]  Generated nodeID and its private key stored in database/nodeId.properties
04:53:01.231 INFO [general]  rocksdb key-value data source created: peers
04:53:01.436 INFO [general]  External IP wasn't set, using checkip.amazonaws.com to identify it...
04:53:01.798 INFO [general]  External address identified: 35.178.134.90
04:53:02.380 INFO [general]  rocksdb key-value data source created: blockchain

04:53:04.131 INFO [general]  EthereumJ node started: enode://82473bf97ff42503fdc2f52d88fde69899599a79004a49d5385f2d7c37684600fbcbfd570542865e06b7c3969442a9e001775db6e11e229a0eb6ea3767af185a@35.178.134.90:0
04:53:04.318 INFO [general]  DB is empty - adding Genesis
04:53:04.396 INFO [general]  Genesis block loaded
04:53:04.541 INFO [ethash]  Kept caches: cnt: 1 epochs: 0...0
04:53:04.628 INFO [general]  Bind address wasn't set, Punching to identify it...
04:53:04.689 INFO [general]  UDP local bound to: 172.18.0.16
04:53:04.816 INFO [sync]  Sync Manager: OFF
04:53:06.351 ERROR [general]  Uncaught exception
java.lang.IllegalArgumentException: There is nothing to import.
	at org.springframework.util.Assert.notEmpty(Assert.java:228)
	at org.ethereum.manager.BlockLoader.loadBlocks(BlockLoader.java:128)
	at com.ethercamp.harmony.Application.loadDumpAndExit(Application.java:118)
	at com.ethercamp.harmony.Application.lambda$main$0(Application.java:61)
	at java.util.Optional.ifPresent(Optional.java:159)
	at com.ethercamp.harmony.Application.main(Application.java:61)
04:53:14.741 INFO [net]  TCP: Speed in/out 0b / 0b(sec), packets in/out 0/0, total in/out: 0b / 0b
04:53:14.745 INFO [net]  UDP: Speed in/out 0b / 0b(sec), packets in/out 0/0, total in/out: 0b / 0b
04:53:14.802 INFO [sync]  Sync state: Off, last block #0, best known #0
04:53:24.735 INFO [net]  TCP: Speed in/out 0b / 0b(sec), packets in/out 0/0, total in/out: 0b / 0b
04:53:24.736 INFO [net]  UDP: Speed in/out 0b / 0b(sec), packets in/out 0/0, total in/out: 0b / 0b
04:53:24.800 INFO [sync]  Sync state: Off, last block #0, best known #0
04:53:34.735 INFO [net]  TCP: Speed in/out 0b / 0b(sec), packets in/out 0/0, total in/out: 0b / 0b
04:53:34.736 INFO [net]  UDP: Speed in/out 0b / 0b(sec), packets in/out 0/0, total in/out: 0b / 0b

After that it didn't do anything. I don't understand why it doesn't exit after an uncaught exception?

Failure during Parity docker image creation

Fails to create docker image for parity

#hive
INFO[10-24|15:17:16] docker daemon online                     version=1.12.2
INFO[10-24|15:17:16] creating outer shell container 
INFO[10-24|15:17:16] building new docker image 
INFO[10-24|15:25:10] starting outer shell container 

INFO[10-24|13:25:12] docker daemon online                     version=1.12.2
INFO[10-24|13:25:12] building clients for validation          pattern=:master
INFO[10-24|13:25:12] building new docker image                client=go-ethereum:master
INFO[10-24|13:28:09] building new docker image                client=parity:master
EROR[10-24|13:31:23] failed to build docker image             client=parity:master error="The command '/bin/sh -c apt-get -y update                                             &&   apt-get install -y curl git make g++ gcc file binutils        &&   curl -sSf https://static.rust-lang.org/rustup.sh -o rustup.sh &&   sh rustup.sh -s -- --disable-sudo                             && \t  git clone --depth 1 https://github.com/ethcore/parity && \tcd parity && cargo build --release                    && \tstrip /parity/target/release/parity                   && \t\tcd / && cp /parity/target/release/parity /parity.bin && \trm -rf parity && mv /parity.bin /parity              &&     sh rustup.sh --uninstall --disable-sudo               &&   apt-get remove -y curl git make g++ gcc file binutils &&   rm -rf /root/.cargo' returned a non-zero code: 127"
CRIT[10-24|13:31:23] failed to validate clients               error="clients/parity:master: The command '/bin/sh -c apt-get -y update                                             &&   apt-get install -y curl git make g++ gcc file binutils        &&   curl -sSf https://static.rust-lang.org/rustup.sh -o rustup.sh &&   sh rustup.sh -s -- --disable-sudo                             && \t  git clone --depth 1 https://github.com/ethcore/parity && \tcd parity && cargo build --release                    && \tstrip /parity/target/release/parity                   && \t\tcd / && cp /parity/target/release/parity /parity.bin && \trm -rf parity && mv /parity.bin /parity              &&     sh rustup.sh --uninstall --disable-sudo               &&   apt-get remove -y curl git make g++ gcc file binutils &&   rm -rf /root/.cargo' returned a non-zero code: 127"

EthereumJ slow execution

When starting an ethereumJ container, it immedately begins downloading gradle.

DBUG[12-14|13:13:22] starting container                       client=ethereumj:develop simulator=ethereum/consensus req-id=4876 id=20322dff
[83135802] Initializing database with genesis state...
[83135802] Loading initial blockchain...
[83135802] Loading remaining individual blocks...
[4fde2157] Downloading https://services.gradle.org/distributions/gradle-3.4-all.zip
[44925444] Initializing database with genesis state...
[44925444] Loading initial blockchain...
[44925444] Loading remaining individual blocks...
DBUG[12-14|13:13:22] attaching to container        

run rpc-compat on the latest clients

rpc-compat is a Hive script for testing client compatibility against an RPC test suite. It lives here but hasn't been tried in quite some time: https://github.com/karalabe/hive/tree/master/simulators/ethereum/rpc-compat

It would be nice to dust it off and run it again against the latest clients. Once run again, this RPC compatibility table can be updated (this table is very old, as you can see on the page these results are from 2017-02-24: http://cdetrio.github.io/eth-compat-table).

The documentation on how to run Hive and generate this table is not great, but there are some notes scattered in various places:

needs --docker-noshell flag to work

Doesn't work without --docker-noshell:

ubuntu@ubuntu:~/hive$ sudo hive --client=go-ethereum:master --smoke
INFO[01-24|08:52:55] docker daemon online                     version=1.13.0
INFO[01-24|08:52:55] creating outer shell container 
INFO[01-24|08:52:55] building new docker image 
EROR[01-24|08:52:58] failed to build docker image             error="The command '/bin/sh -c go install' returned a non-zero code: 2"

But works just fine with:

ubuntu@ubuntu:~/hive$ sudo hive --docker-noshell --client=go-ethereum:master --smoke
INFO[01-24|08:54:11] docker daemon online                     version=1.13.0
INFO[01-24|08:54:11] building clients for validation          pattern=go-ethereum:master
INFO[01-24|08:54:11] building new docker image                client=go-ethereum:master
INFO[01-24|08:54:11] building validators for testing          pattern=smoke/
INFO[01-24|08:54:11] building new docker image                validator=smoke/genesis-chain
INFO[01-24|08:54:11] building new docker image                validator=smoke/genesis-chain-blocks
INFO[01-24|08:54:11] building new docker image                validator=smoke/genesis-keys
INFO[01-24|08:54:11] building new docker image                validator=smoke/genesis-only
INFO[01-24|08:54:11] building new docker image                validator=smoke/testnet-nonces
INFO[01-24|08:54:11] running client validation                client=go-ethereum:master validator=smoke/genesis-chain
INFO[01-24|08:54:14] validation passed                        client=go-ethereum:master validator=smoke/genesis-chain time=2.911913709s
INFO[01-24|08:54:14] running client validation                client=go-ethereum:master validator=smoke/genesis-chain-blocks
INFO[01-24|08:54:21] validation passed                        client=go-ethereum:master validator=smoke/genesis-chain-blocks time=6.33057957s
INFO[01-24|08:54:21] running client validation                client=go-ethereum:master validator=smoke/genesis-keys
INFO[01-24|08:54:22] validation passed                        client=go-ethereum:master validator=smoke/genesis-keys time=1.669007759s
INFO[01-24|08:54:22] running client validation                client=go-ethereum:master validator=smoke/genesis-only
INFO[01-24|08:54:24] validation passed                        client=go-ethereum:master validator=smoke/genesis-only time=1.584811677s
INFO[01-24|08:54:24] running client validation                client=go-ethereum:master validator=smoke/testnet-nonces
EROR[01-24|08:54:25] validation failed                        client=go-ethereum:master validator=smoke/testnet-nonces time=1.564218975s
Validation results:
{
  "go-ethereum:master": {
    "fail": [
      "smoke/testnet-nonces"
    ],
    "pass": [
      "smoke/genesis-chain",
      "smoke/genesis-chain-blocks",
      "smoke/genesis-keys",
      "smoke/genesis-only"
    ]
  }
}
INFO[01-24|08:54:25] building clients for simulation          pattern=go-ethereum:master
INFO[01-24|08:54:25] building new docker image                client=go-ethereum:master
INFO[01-24|08:54:25] building simulators for testing          pattern=smoke/
INFO[01-24|08:54:25] building new docker image                simulator=smoke/lifecycle
INFO[01-24|08:54:27] running client simulation                client=go-ethereum:master simulator=smoke/lifecycle
INFO[01-24|08:54:28] simulation passed                        client=go-ethereum:master simulator=smoke/lifecycle time=1.533132763s
Simulation results:
{
  "go-ethereum:master": {
    "pass": [
      "smoke/lifecycle"
    ]
  }
}
INFO[01-24|08:54:28] building clients for benchmark           pattern=go-ethereum:master
INFO[01-24|08:54:28] building new docker image                client=go-ethereum:master
INFO[01-24|08:54:28] building benchmarkers for measurements   pattern=smoke/
INFO[01-24|08:54:28] building new docker image                benchmarker=smoke/genesis-retrieval
INFO[01-24|08:54:30] running client benchmark                 client=go-ethereum:master benchmarker=smoke/genesis-retrieval iterations=1
INFO[01-24|08:54:31] running client benchmark                 client=go-ethereum:master benchmarker=smoke/genesis-retrieval iterations=5
INFO[01-24|08:54:33] running client benchmark                 client=go-ethereum:master benchmarker=smoke/genesis-retrieval iterations=30
INFO[01-24|08:54:34] running client benchmark                 client=go-ethereum:master benchmarker=smoke/genesis-retrieval iterations=200
INFO[01-24|08:54:37] running client benchmark                 client=go-ethereum:master benchmarker=smoke/genesis-retrieval iterations=300
Benchmark results:
{
  "go-ethereum:master": {
    "smoke/genesis-retrieval": {
      "iters": 300,
      "ns/op": 4366952
    }
  }
}

Standardise validator output format

Validators tend to perform multiple tests in a single run. For example, the consensus validator executes all consensus tests and the rpc-compat validator checks multiple endpoints. Both validators produce a result table.

It would be nice to have a generic version of that. Running any validator should produce a report that
visualizes sub-test results across different clients.

One approach would be to output TAP from validators and process that in hive. A Go consumer library for TAP exists and could be integrated into hive.

EthereumJ failures

EthereumJ (develop) fails to build/run on hive. Error logs

INFO[02-17|10:29:43] docker daemon online                     version=17.05.0-ce
INFO[02-17|10:29:43] creating outer shell container 
INFO[02-17|10:29:43] building new docker image                nocache=true
DBUG[02-17|10:29:55] created shell container 
INFO[02-17|10:29:55] starting outer shell container 
DBUG[02-17|10:29:55] attaching to container 
DBUG[02-17|10:29:55] starting container 
INFO[02-17|10:29:56] docker daemon online                     version=17.12.0-ce
INFO[02-17|10:29:56] building new docker image                client=ethereumj:develop nocache=true
EROR[02-17|10:30:12] failed to build docker image             client=ethereumj:develop error="The command '/bin/sh -c apk upgrade --update &&     apk add --update libstdc++ curl ca-certificates bash &&     for pkg in glibc-${GLIBC_VERSION} glibc-bin-${GLIBC_VERSION} glibc-i18n-${GLIBC_VERSION}; do curl -sSL https://github.com/andyshinn/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/${pkg}.apk -o /tmp/${pkg}.apk; done &&     apk add --allow-untrusted /tmp/*.apk &&     rm -v /tmp/*.apk &&     ( /usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 C.UTF-8 || true ) &&     echo \"export LANG=C.UTF-8\" > /etc/profile.d/locale.sh &&     /usr/glibc-compat/sbin/ldconfig /lib /usr/glibc-compat/lib &&     mkdir /opt &&     curl -jksSLH \"Cookie: oraclelicense=accept-securebackup-cookie\" -o /tmp/java.tar.gz       http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-b${JAVA_VERSION_BUILD}/${JAVA_VERSION_HASH}/${JAVA_PACKAGE}-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz &&     gunzip /tmp/java.tar.gz &&     tar -C /opt -xf /tmp/java.tar &&     ln -s /opt/jdk1.${JAVA_VERSION_MAJOR}.0_${JAVA_VERSION_MINOR} /opt/jdk &&     if [ \"${JAVA_JCE}\" == \"unlimited\" ]; then echo \"Installing Unlimited JCE policy\" >&2 &&       curl -jksSLH \"Cookie: oraclelicense=accept-securebackup-cookie\" -o /tmp/jce_policy-${JAVA_VERSION_MAJOR}.zip         http://download.oracle.com/otn-pub/java/jce/${JAVA_VERSION_MAJOR}/jce_policy-${JAVA_VERSION_MAJOR}.zip &&       cd /tmp && unzip /tmp/jce_policy-${JAVA_VERSION_MAJOR}.zip &&       cp -v /tmp/UnlimitedJCEPolicyJDK8/*.jar /opt/jdk/jre/lib/security;     fi &&     sed -i s/#networkaddress.cache.ttl=-1/networkaddress.cache.ttl=30/ $JAVA_HOME/jre/lib/security/java.security &&     apk del curl glibc-i18n ca-certificates &&     rm -rf /opt/jdk/*src.zip            /opt/jdk/lib/missioncontrol            /opt/jdk/lib/visualvm            /opt/jdk/lib/*javafx*            /opt/jdk/jre/plugin            /opt/jdk/jre/bin/javaws            /opt/jdk/jre/bin/jjs            /opt/jdk/jre/bin/orbd            /opt/jdk/jre/bin/pack200            /opt/jdk/jre/bin/policytool            /opt/jdk/jre/bin/rmid            /opt/jdk/jre/bin/rmiregistry            /opt/jdk/jre/bin/servertool            /opt/jdk/jre/bin/tnameserv            /opt/jdk/jre/bin/unpack200            /opt/jdk/jre/lib/javaws.jar            /opt/jdk/jre/lib/deploy*            /opt/jdk/jre/lib/desktop            /opt/jdk/jre/lib/*javafx*            /opt/jdk/jre/lib/*jfx*            /opt/jdk/jre/lib/amd64/libdecora_sse.so            /opt/jdk/jre/lib/amd64/libprism_*.so            /opt/jdk/jre/lib/amd64/libfxplugins.so            /opt/jdk/jre/lib/amd64/libglass.so            /opt/jdk/jre/lib/amd64/libgstreamer-lite.so            /opt/jdk/jre/lib/amd64/libjavafx*.so            /opt/jdk/jre/lib/amd64/libjfx*.so            /opt/jdk/jre/lib/ext/jfxrt.jar            /opt/jdk/jre/lib/ext/nashorn.jar            /opt/jdk/jre/lib/oblique-fonts            /opt/jdk/jre/lib/plugin.jar            /tmp/* /var/cache/apk/* && echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf' returned a non-zero code: 1"
CRIT[02-17|10:30:12] failed to retrieve client versions       error="clients/ethereumj:develop: The command '/bin/sh -c apk upgrade --update &&     apk add --update libstdc++ curl ca-certificates bash &&     for pkg in glibc-${GLIBC_VERSION} glibc-bin-${GLIBC_VERSION} glibc-i18n-${GLIBC_VERSION}; do curl -sSL https://github.com/andyshinn/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/${pkg}.apk -o /tmp/${pkg}.apk; done &&     apk add --allow-untrusted /tmp/*.apk &&     rm -v /tmp/*.apk &&     ( /usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 C.UTF-8 || true ) &&     echo \"export LANG=C.UTF-8\" > /etc/profile.d/locale.sh &&     /usr/glibc-compat/sbin/ldconfig /lib /usr/glibc-compat/lib &&     mkdir /opt &&     curl -jksSLH \"Cookie: oraclelicense=accept-securebackup-cookie\" -o /tmp/java.tar.gz       http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-b${JAVA_VERSION_BUILD}/${JAVA_VERSION_HASH}/${JAVA_PACKAGE}-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz &&     gunzip /tmp/java.tar.gz &&     tar -C /opt -xf /tmp/java.tar &&     ln -s /opt/jdk1.${JAVA_VERSION_MAJOR}.0_${JAVA_VERSION_MINOR} /opt/jdk &&     if [ \"${JAVA_JCE}\" == \"unlimited\" ]; then echo \"Installing Unlimited JCE policy\" >&2 &&       curl -jksSLH \"Cookie: oraclelicense=accept-securebackup-cookie\" -o /tmp/jce_policy-${JAVA_VERSION_MAJOR}.zip         http://download.oracle.com/otn-pub/java/jce/${JAVA_VERSION_MAJOR}/jce_policy-${JAVA_VERSION_MAJOR}.zip &&       cd /tmp && unzip /tmp/jce_policy-${JAVA_VERSION_MAJOR}.zip &&       cp -v /tmp/UnlimitedJCEPolicyJDK8/*.jar /opt/jdk/jre/lib/security;     fi &&     sed -i s/#networkaddress.cache.ttl=-1/networkaddress.cache.ttl=30/ $JAVA_HOME/jre/lib/security/java.security &&     apk del curl glibc-i18n ca-certificates &&     rm -rf /opt/jdk/*src.zip            /opt/jdk/lib/missioncontrol            /opt/jdk/lib/visualvm            /opt/jdk/lib/*javafx*            /opt/jdk/jre/plugin            /opt/jdk/jre/bin/javaws            /opt/jdk/jre/bin/jjs            /opt/jdk/jre/bin/orbd            /opt/jdk/jre/bin/pack200            /opt/jdk/jre/bin/policytool            /opt/jdk/jre/bin/rmid            /opt/jdk/jre/bin/rmiregistry            /opt/jdk/jre/bin/servertool            /opt/jdk/jre/bin/tnameserv            /opt/jdk/jre/bin/unpack200            /opt/jdk/jre/lib/javaws.jar            /opt/jdk/jre/lib/deploy*            /opt/jdk/jre/lib/desktop            /opt/jdk/jre/lib/*javafx*            /opt/jdk/jre/lib/*jfx*            /opt/jdk/jre/lib/amd64/libdecora_sse.so            /opt/jdk/jre/lib/amd64/libprism_*.so            /opt/jdk/jre/lib/amd64/libfxplugins.so            /opt/jdk/jre/lib/amd64/libglass.so            /opt/jdk/jre/lib/amd64/libgstreamer-lite.so            /opt/jdk/jre/lib/amd64/libjavafx*.so            /opt/jdk/jre/lib/amd64/libjfx*.so            /opt/jdk/jre/lib/ext/jfxrt.jar            /opt/jdk/jre/lib/ext/nashorn.jar            /opt/jdk/jre/lib/oblique-fonts            /opt/jdk/jre/lib/plugin.jar            /tmp/* /var/cache/apk/* && echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf' returned a non-zero code: 1"
DBUG[02-17|10:30:12] deleting shell container 

ping @zilm13

Ethash fails to build

Hive fails when building ethash. This is the error I get locally:

Step 2/3 : RUN   echo '#!/bin/sh'                          > /ethash.sh && 	echo 'set -e'                            >> /ethash.sh && 	echo 'geth makedag 1 /root/.ethash'      >> /ethash.sh &&   echo 'if [ "$UID" != "0" ]; then'        >> /ethash.sh && 	echo '  adduser -u $UID -D ethash'       >> /ethash.sh && 	echo '  chown -R ethash /root/.ethash/*' >> /ethash.sh &&   echo 'fi'                                >> /ethash.sh && 	chmod +x /ethash.sh
 ---> Running in 803ef0c9e80b
/bin/sh: can't create /ethash.sh: Permission denied

Last successfull run seems to have been Fri Apr 06 . Most likely br0ken by ethereum/go-ethereum@50dbe8e

rpc-tests succeed if 0 tests run

The rpc-test suite reports success if no tests were run due to a missing node. This causes false positives with Parity for example where the tester cannot connect to a Parity node, yet reports success.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.