coredns / coredns

CoreDNS is a DNS server that chains plugins
https://coredns.io
Apache License 2.0
12.42k stars 2.14k forks source link

proxy_test fails when docker is installed in travis environment #187

Closed mrichmon closed 8 years ago

mrichmon commented 8 years ago

proxy_test is failing with a runtime error due to an invalid/nil pointer dereference. This was triggered by adding docker to the travis test environment. (Docker is being added as part of automatic testing against a live kubernetes system.)

No further debugging yet.

Travis config file is:

sudo: required

services:
  - docker

language: go
go:
  - 1.5
  - 1.6

before_install:
  - docker pull gcr.io/google_containers/hyperkube-amd64:v1.2.4
  - docker ps -a

before_script:
  - curl -L  https://github.com/coreos/etcd/releases/download/v2.3.1/etcd-v2.3.1-linux-amd64.tar.gz -o etcd-v2.3.1-linux-amd64.tar.gz
  - tar xzvf etcd-v2.3.1-linux-amd64.tar.gz
  - ./etcd-v2.3.1-linux-amd64/etcd &
  - go get
  - go get github.com/coreos/go-etcd/etcd
script:
  - go test -tags etcd -race -bench=. ./...

Travis log is:

Worker information
hostname: travis-worker-gce-org-prod5-6:3b4051a7-b355-4da1-9b27-0650ada72a28
version: v2.3.0-5-gef7116f https://github.com/travis-ci/worker/tree/ef7116fac34a232b5d8ecfe0eb9d834b0af9705d
instance: testing-gce-341ec1bc-4ad3-4ce1-878d-fd76be27b5a1:travis-ci-mega-trusty-1445287562
startup: 21.84772751s
Build system information
Build language: go
Build group: stable
Build dist: trusty
Build image provisioning date and time
Mon Oct 19 21:23:19 UTC 2015
Operating System Details
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty
Linux Version
3.19.0-28-generic
Cookbooks Version
fffffff https://github.com/travis-ci/travis-cookbooks/tree/fffffff
Git version
git version 1.9.1
GCC version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

LLVM version
clang version 3.5.0 (tags/RELEASE_350/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
Pre-installed Ruby versions
jruby-9.0.1.0
ruby-1.9.3-p551
ruby-2.0.0-p647
ruby-2.1.7
ruby-2.2.3
Pre-installed Node.js versions
iojs-v1.6
iojs-v1.6.4
v0.10
v0.10.40
v0.11.16
v0.12.2
v0.12.7
v0.6.21
v0.8.28
v4.1.2
Pre-installed Go versions
1.0.3
1.1.2
1.2.2
1.3.3
1.4.2
1.5.1
mysql --version
mysql  Ver 14.14 Distrib 5.5.44, for debian-linux-gnu (x86_64) using readline 6.3
Pre-installed PostgreSQL versions
9.1.19
9.2.14
9.3.10
9.4.5
Redis version
redis-server 3.0.5
RabbitMQ Version
3.5.4
Installed Sphinx versions
2.0.10
2.1.9
2.2.8
Default Sphinx version
2.2.8
Installed Firefox version
firefox 31.6.0esr
ant -version
Apache Ant(TM) version 1.9.3 compiled on April 8 2014
mvn -version
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 15:22:22+0000)
Maven home: /usr/local/maven
Java version: 1.8.0_60, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.19.0-28-generic", arch: "amd64", family: "unix"
gradle -version

------------------------------------------------------------
Gradle 2.7
------------------------------------------------------------

Build time:   2015-09-14 07:26:16 UTC
Build number: none
Revision:     c41505168da69fb0650f4e31c9e01b50ffc97893

Groovy:       2.3.10
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0_60 (Oracle Corporation 25.60-b23)
OS:           Linux 3.19.0-28-generic amd64

lein version
Downloading Leiningen to /home/travis/.lein/self-installs/home/travis/.lein/leiningen-2.5.1-standalone.jar now...
Leiningen 2.5.1 on Java 1.8.0_60 Java HotSpot(TM) 64-Bit Server VM
phpenv versions
* system (set by /home/travis/.phpenv/version)

$ export DEBIAN_FRONTEND=noninteractive
W: There is no public key available for the following key IDs:
1397BC53640DB551
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libc-dev-bin libc6-dev
Suggested packages:
  glibc-doc
The following packages will be upgraded:
  libc-dev-bin libc6 libc6-dev
3 upgraded, 0 newly installed, 0 to remove and 285 not upgraded.
Need to get 6,696 kB of archives.
After this operation, 19.5 kB of additional disk space will be used.
Get:1 http://us-central1.gce.archive.ubuntu.com/ubuntu/ trusty-updates/main libc6-dev amd64 2.19-0ubuntu6.9 [1,910 kB]
Get:2 http://us-central1.gce.archive.ubuntu.com/ubuntu/ trusty-updates/main libc-dev-bin amd64 2.19-0ubuntu6.9 [69.0 kB]
Get:3 http://us-central1.gce.archive.ubuntu.com/ubuntu/ trusty-updates/main libc6 amd64 2.19-0ubuntu6.9 [4,717 kB]
Fetched 6,696 kB in 0s (44.5 MB/s)
Preconfiguring packages ...
(Reading database ... 135346 files and directories currently installed.)
Preparing to unpack .../libc6-dev_2.19-0ubuntu6.9_amd64.deb ...
Unpacking libc6-dev:amd64 (2.19-0ubuntu6.9) over (2.19-0ubuntu6.6) ...
Preparing to unpack .../libc-dev-bin_2.19-0ubuntu6.9_amd64.deb ...
Unpacking libc-dev-bin (2.19-0ubuntu6.9) over (2.19-0ubuntu6.6) ...
Preparing to unpack .../libc6_2.19-0ubuntu6.9_amd64.deb ...
Unpacking libc6:amd64 (2.19-0ubuntu6.9) over (2.19-0ubuntu6.6) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Not building database; man-db/auto-update is not 'true'.
Setting up libc6:amd64 (2.19-0ubuntu6.9) ...
Setting up libc-dev-bin (2.19-0ubuntu6.9) ...
Setting up libc6-dev:amd64 (2.19-0ubuntu6.9) ...
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
$ git clone --depth=50 --branch=wildcard-support https://github.com/Infoblox-CTO/coredns.git Infoblox-CTO/coredns
Cloning into 'Infoblox-CTO/coredns'...
remote: Counting objects: 690, done.
remote: Compressing objects: 100% (431/431), done.
remote: Total 690 (delta 326), reused 513 (delta 240), pack-reused 0
Receiving objects: 100% (690/690), 316.45 KiB | 0 bytes/s, done.
Resolving deltas: 100% (326/326), done.
Checking connectivity... done.

$ cd Infoblox-CTO/coredns
$ git checkout -qf 28a7fc7873ed7f7db57e87470f10c5a83d00adc9
$ sudo service docker start
start: Job is already running: docker

$ eval "$(gimme 1.6)"
go version go1.6 linux/amd64

$ export GOPATH=$HOME/gopath
$ export PATH=$HOME/gopath/bin:$PATH
$ mkdir -p $HOME/gopath/src/github.com/Infoblox-CTO/coredns
$ rsync -az ${TRAVIS_BUILD_DIR}/ $HOME/gopath/src/github.com/Infoblox-CTO/coredns/
$ export TRAVIS_BUILD_DIR=$HOME/gopath/src/github.com/Infoblox-CTO/coredns
$ cd $HOME/gopath/src/github.com/Infoblox-CTO/coredns
$ gimme version
v0.2.3
$ go version
go version go1.6 linux/amd64
$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/travis/gopath"
GORACE=""
GOROOT="/home/travis/.gimme/versions/go1.6.linux.amd64"
GOTOOLDIR="/home/travis/.gimme/versions/go1.6.linux.amd64/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
$ docker pull gcr.io/google_containers/hyperkube-amd64:v1.2.4
v1.2.4: Pulling from google_containers/hyperkube-amd64

Digest: sha256:73ef4af07cda6dd49e93ee8665bb7687dc2f45ed4f59517c4863f5d6219cbaa9
Status: Downloaded newer image for gcr.io/google_containers/hyperkube-amd64:v1.2.4

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Using Go 1.5 Vendoring, not checking for Godeps
$ true

$ curl -L  https://github.com/coreos/etcd/releases/download/v2.3.1/etcd-v2.3.1-linux-amd64.tar.gz -o etcd-v2.3.1-linux-amd64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   606    0   606    0     0   2554      0 --:--:-- --:--:-- --:--:--  2556
100 7946k  100 7946k    0     0  5026k      0  0:00:01  0:00:01 --:--:-- 11.5M

$ tar xzvf etcd-v2.3.1-linux-amd64.tar.gz
etcd-v2.3.1-linux-amd64/
etcd-v2.3.1-linux-amd64/Documentation/
etcd-v2.3.1-linux-amd64/Documentation/runtime-configuration.md
etcd-v2.3.1-linux-amd64/Documentation/admin_guide.md
etcd-v2.3.1-linux-amd64/Documentation/tuning.md
etcd-v2.3.1-linux-amd64/Documentation/glossary.md
etcd-v2.3.1-linux-amd64/Documentation/rfc/
etcd-v2.3.1-linux-amd64/Documentation/rfc/v3api.md
etcd-v2.3.1-linux-amd64/Documentation/discovery_protocol.md
etcd-v2.3.1-linux-amd64/Documentation/errorcode.md
etcd-v2.3.1-linux-amd64/Documentation/metrics.md
etcd-v2.3.1-linux-amd64/Documentation/security.md
etcd-v2.3.1-linux-amd64/Documentation/configuration.md
etcd-v2.3.1-linux-amd64/Documentation/docker_guide.md
etcd-v2.3.1-linux-amd64/Documentation/dev/
etcd-v2.3.1-linux-amd64/Documentation/dev/release.md
etcd-v2.3.1-linux-amd64/Documentation/members_api.md
etcd-v2.3.1-linux-amd64/Documentation/auth_api.md
etcd-v2.3.1-linux-amd64/Documentation/backward_compatibility.md
etcd-v2.3.1-linux-amd64/Documentation/platforms/
etcd-v2.3.1-linux-amd64/Documentation/platforms/freebsd.md
etcd-v2.3.1-linux-amd64/Documentation/libraries-and-tools.md
etcd-v2.3.1-linux-amd64/Documentation/implementation-faq.md
etcd-v2.3.1-linux-amd64/Documentation/reporting_bugs.md
etcd-v2.3.1-linux-amd64/Documentation/upgrade_2_2.md
etcd-v2.3.1-linux-amd64/Documentation/internal-protocol-versioning.md
etcd-v2.3.1-linux-amd64/Documentation/upgrade_2_1.md
etcd-v2.3.1-linux-amd64/Documentation/faq.md
etcd-v2.3.1-linux-amd64/Documentation/api_v3.md
etcd-v2.3.1-linux-amd64/Documentation/runtime-reconf-design.md
etcd-v2.3.1-linux-amd64/Documentation/clustering.md
etcd-v2.3.1-linux-amd64/Documentation/proxy.md
etcd-v2.3.1-linux-amd64/Documentation/branch_management.md
etcd-v2.3.1-linux-amd64/Documentation/other_apis.md
etcd-v2.3.1-linux-amd64/Documentation/benchmarks/
etcd-v2.3.1-linux-amd64/Documentation/benchmarks/etcd-2-2-0-rc-memory-benchmarks.md
etcd-v2.3.1-linux-amd64/Documentation/benchmarks/etcd-3-demo-benchmarks.md
etcd-v2.3.1-linux-amd64/Documentation/benchmarks/etcd-2-2-0-benchmarks.md
etcd-v2.3.1-linux-amd64/Documentation/benchmarks/etcd-2-1-0-alpha-benchmarks.md
etcd-v2.3.1-linux-amd64/Documentation/benchmarks/etcd-storage-memory-benchmark.md
etcd-v2.3.1-linux-amd64/Documentation/benchmarks/README.md
etcd-v2.3.1-linux-amd64/Documentation/benchmarks/etcd-2-2-0-rc-benchmarks.md
etcd-v2.3.1-linux-amd64/Documentation/benchmarks/etcd-3-watch-memory-benchmark.md
etcd-v2.3.1-linux-amd64/Documentation/api.md
etcd-v2.3.1-linux-amd64/Documentation/authentication.md
etcd-v2.3.1-linux-amd64/Documentation/04_to_2_snapshot_migration.md
etcd-v2.3.1-linux-amd64/Documentation/upgrade_2_3.md
etcd-v2.3.1-linux-amd64/Documentation/production-users.md
etcd-v2.3.1-linux-amd64/README-etcdctl.md
etcd-v2.3.1-linux-amd64/etcdctl
etcd-v2.3.1-linux-amd64/etcd
etcd-v2.3.1-linux-amd64/README.md

$ ./etcd-v2.3.1-linux-amd64/etcd &

$ go get
2016-07-07 17:54:11.627638 I | etcdmain: etcd Version: 2.3.1
2016-07-07 17:54:11.627673 I | etcdmain: Git SHA: 2b67f52
2016-07-07 17:54:11.627686 I | etcdmain: Go Version: go1.5.3
2016-07-07 17:54:11.627698 I | etcdmain: Go OS/Arch: linux/amd64
2016-07-07 17:54:11.627715 I | etcdmain: setting maximum number of CPUs to 2, total number of available CPUs is 2
2016-07-07 17:54:11.627729 W | etcdmain: no data-dir provided, using default data-dir ./default.etcd
2016-07-07 17:54:11.628030 I | etcdmain: listening for peers on http://localhost:2380
2016-07-07 17:54:11.628133 I | etcdmain: listening for peers on http://localhost:7001
2016-07-07 17:54:11.628323 I | etcdmain: listening for client requests on http://localhost:2379
2016-07-07 17:54:11.628422 I | etcdmain: listening for client requests on http://localhost:4001
2016-07-07 17:54:11.628683 I | etcdserver: name = default
2016-07-07 17:54:11.628776 I | etcdserver: data dir = default.etcd
2016-07-07 17:54:11.628835 I | etcdserver: member dir = default.etcd/member
2016-07-07 17:54:11.628856 I | etcdserver: heartbeat = 100ms
2016-07-07 17:54:11.628867 I | etcdserver: election = 1000ms
2016-07-07 17:54:11.628877 I | etcdserver: snapshot count = 10000
2016-07-07 17:54:11.628894 I | etcdserver: advertise client URLs = http://localhost:2379,http://localhost:4001
2016-07-07 17:54:11.628915 I | etcdserver: initial advertise peer URLs = http://localhost:2380,http://localhost:7001
2016-07-07 17:54:11.629011 I | etcdserver: initial cluster = default=http://localhost:2380,default=http://localhost:7001
2016-07-07 17:54:11.634010 I | etcdserver: starting member ce2a822cea30bfca in cluster 7e27652122e8b2ae
2016-07-07 17:54:11.634065 I | raft: ce2a822cea30bfca became follower at term 0
2016-07-07 17:54:11.634091 I | raft: newRaft ce2a822cea30bfca [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2016-07-07 17:54:11.634106 I | raft: ce2a822cea30bfca became follower at term 1
2016-07-07 17:54:11.634334 I | etcdserver: starting server... [version: 2.3.1, cluster version: to_be_decided]
2016-07-07 17:54:11.635572 N | etcdserver: added local member ce2a822cea30bfca [http://localhost:2380 http://localhost:7001] to cluster 7e27652122e8b2ae
2016-07-07 17:54:12.034446 I | raft: ce2a822cea30bfca is starting a new election at term 1
2016-07-07 17:54:12.034602 I | raft: ce2a822cea30bfca became candidate at term 2
2016-07-07 17:54:12.034630 I | raft: ce2a822cea30bfca received vote from ce2a822cea30bfca at term 2
2016-07-07 17:54:12.034665 I | raft: ce2a822cea30bfca became leader at term 2
2016-07-07 17:54:12.034688 I | raft: raft.node: ce2a822cea30bfca elected leader ce2a822cea30bfca at term 2
2016-07-07 17:54:12.035081 I | etcdserver: published {Name:default ClientURLs:[http://localhost:2379 http://localhost:4001]} to cluster 7e27652122e8b2ae
2016-07-07 17:54:12.035151 I | etcdserver: setting up the initial cluster version to 2.3
2016-07-07 17:54:12.040468 N | etcdserver: set the initial cluster version to 2.3

$ go get github.com/coreos/go-etcd/etcd

$ go test -tags etcd -race -bench=. ./...
PASS
ok      github.com/Infoblox-CTO/coredns 1.022s
PASS
ok      github.com/Infoblox-CTO/coredns/core    1.037s
PASS
ok      github.com/Infoblox-CTO/coredns/core/assets 1.009s
PASS
ok      github.com/Infoblox-CTO/coredns/core/dns    1.011s
PASS
ok      github.com/Infoblox-CTO/coredns/core/https  1.892s
PASS
ok      github.com/Infoblox-CTO/coredns/core/parse  1.017s
2016/07/07 17:56:17 [WARNING] Root path does not exist: /tmp/highly_unlikely_to_exist_dir
PASS
ok      github.com/Infoblox-CTO/coredns/core/setup  1.536s
PASS
BenchmarkStateDo-2      20000000            62.6 ns/op
BenchmarkStateSize-2    20000000            62.4 ns/op
ok      github.com/Infoblox-CTO/coredns/middleware  3.658s
2016/07/07 17:56:23 [ERROR] Caching called with empty cache key
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/cache    1.020s
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/chaos    1.010s
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/dnssec   1.067s
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/errors   1.010s
2016/07/07 17:56:27 [WARNING] Forwarding cycle detected, refusing msg: example.org.
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/etcd 1.401s
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/etcd/msg 1.014s
2016/07/07 17:56:29 [INFO] Successfully reloaded zone `miek.nl.'
2016/07/07 17:56:30 [ERROR] Failed to open `go-test-tmpfile621970336' for `miek.nl.': open go-test-tmpfile621970336: no such file or directory
2016/07/07 17:56:30 [INFO] Transferred: secondary.miek.nl. from 127.0.0.1:59580
PASS
BenchmarkLookupDNSSEC-2    10000        181037 ns/op
BenchmarkParseInsert-2       500       4318473 ns/op
BenchmarkLookup-2          50000         32197 ns/op
ok      github.com/Infoblox-CTO/coredns/middleware/file 8.454s
?       github.com/Infoblox-CTO/coredns/middleware/file/tree    [no test files]
?       github.com/Infoblox-CTO/coredns/middleware/health   [no test files]
testing: warning: no tests to run
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/kubernetes   1.013s
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/kubernetes/k8sclient 1.027s
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/kubernetes/msg   1.011s

[debug] Template string has static element ''

PASS
ok      github.com/Infoblox-CTO/coredns/middleware/kubernetes/nametemplate  1.010s
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/kubernetes/util  1.016s
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/loadbalance  1.019s
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/log  1.015s
?       github.com/Infoblox-CTO/coredns/middleware/metrics  [no test files]
?       github.com/Infoblox-CTO/coredns/middleware/pprof    [no test files]
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/proxy    1.093s
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/rewrite  1.011s
?       github.com/Infoblox-CTO/coredns/middleware/secondary    [no test files]
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/singleflight 1.110s
PASS
ok      github.com/Infoblox-CTO/coredns/middleware/test 1.010s
PASS
ok      github.com/Infoblox-CTO/coredns/server  1.012s
Activating privacy features...
Activating privacy features...
--- FAIL: TestLookupBalanceRewriteCacheDnssec (1.00s)
    core.go:421: Starting 1 servers
    middleware_dnssec_test.go:46: Could not send query: dial udp [::]:46766: connect: network is unreachable
Activating privacy features...
--- FAIL: TestLookupProxy (1.00s)
    core.go:421: Starting 1 servers
    proxy_test.go:46: Expected to receive reply, but didn't
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
    panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x48 pc=0x4a0b37]

goroutine 35 [running]:
panic(0xf5b3e0, 0xc820010170)
    /home/travis/.gimme/versions/go1.6.linux.amd64/src/runtime/panic.go:464 +0x3ff
testing.tRunner.func1(0xc82010e2d0)
    /home/travis/.gimme/versions/go1.6.linux.amd64/src/testing/testing.go:467 +0x22a
panic(0xf5b3e0, 0xc820010170)
    /home/travis/.gimme/versions/go1.6.linux.amd64/src/runtime/panic.go:426 +0x521
github.com/Infoblox-CTO/coredns/test.TestLookupProxy(0xc82010e2d0)
    /home/travis/gopath/src/github.com/Infoblox-CTO/coredns/test/proxy_test.go:49 +0x837
testing.tRunner(0xc82010e2d0, 0x15b0908)
    /home/travis/.gimme/versions/go1.6.linux.amd64/src/testing/testing.go:473 +0xdd
created by testing.RunTests
    /home/travis/.gimme/versions/go1.6.linux.amd64/src/testing/testing.go:582 +0xae3
exit status 2
FAIL    github.com/Infoblox-CTO/coredns/test    2.028s

The command "go test -tags etcd -race -bench=. ./..." exited with 1.

Done. Your build exited with 1.
telephon commented 8 years ago

Actually IIRC, this test shouldn't be run because it requires a server start/stop sequence.