.travis.yml

Summary

Maintainability
Test Coverage
language: go

go:
  - 1.13.x
  - stable

env:
  global:
    - CC_TEST_REPORTER_ID=4bb8f247a9230cafa72546fdfcf17be84fee6f78fda2fa87e594f268a6f178cb

before_script:
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
  - chmod +x ./cc-test-reporter
  - ./cc-test-reporter before-build

script:
  - echo $TRAVIS_GO_VERSION | grep -q ^1\.13 || go get -u -t ./...
  - go vet ./...
  - sudo touch /hosts.block
  - go test -coverprofile c.out ./...
  - docker network create dohli
  - docker run -d --rm --network dohli --name redis redis:alpine
  - docker build -t dohli --build-arg GO_VERSION=`go version | cut -f 3 -d " " | sed s/^go//` .
  - docker run -d --rm --network dohli -p 8080:8080 -e PORT=8080 -e REDIS_URL=redis://redis dohli /web
  - docker run -d --rm --network dohli -e REDIS_URL=redis://redis dohli /worker -wait
  - sleep 2
  - curl -f -o /dev/null http://localhost:8080/dns-query?dns=AAABAAABAAAAAAAABGlwdjYGZ29vZ2xlA2NvbQAAAQAB
  - echo AAABAAABAAAAAAAABGlwdjYGZ29vZ2xlA2NvbQAAAQAB | base64 -d > /tmp/request
  - curl -f -o /dev/null --data-binary @/tmp/request http://localhost:8080/dns-query
  - curl -f -o /dev/null http://localhost:8080/dns-query?dns=AAABAAABAAAAAAABCXdpa2lwZWRpYQNvcmcAABwAAQAAKRAAAAAAAAAIAAgABAABAAA
  - echo AAABAAABAAAAAAABCXdpa2lwZWRpYQNvcmcAABwAAQAAKRAAAAAAAAAIAAgABAABAAA= | base64 -d > /tmp/request
  - curl -f -o /dev/null --data-binary @/tmp/request http://localhost:8080/dns-query
  - echo AAABAAABAAAAAAAACWdvb2dsZWFkcwFnC2RvdWJsZWNsaWNrA25ldAAAHAAB | base64 -d > /tmp/request
  - curl -f -o /dev/null --data-binary @/tmp/request http://localhost:8080/dns-query
  - sleep 2
  - test "`curl -f -o - http://localhost:8080/dns-query?dns=AAABAAABAAAAAAAACWdvb2dsZWFkcwFnC2RvdWJsZWNsaWNrA25ldAAAHAAB | cut -c 4 | hexdump -c | awk '{print $2}'`" = 003
  - test "`curl -f -o - --data-binary @/tmp/request http://localhost:8080/dns-query | cut -c 4 | hexdump -c | awk '{print $2}'`" = 003
  - docker run --rm dohli cat /stub > /tmp/stub
  - chmod 755 /tmp/stub
  - sudo /tmp/stub -server http://127.0.0.1:8080/dns-query &
  - sleep 2
  - getent hosts googleads.g.doubleclick.net
  - sudo sh -c "echo nameserver 127.0.0.1 > /etc/resolv.conf"
  - getent hosts ipv6.google.com
  - |
    ! getent hosts googleads.g.doubleclick.net || exit 1
  - sleep 1
  - |
    ! getent hosts googleads.g.doubleclick.net || exit 1

after_script:
  - echo $TRAVIS_GO_VERSION | grep -vq ^1\.13 || ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT

services:
  - docker

deploy:
  provider: heroku
  api_key:
    secure: ki4Fc1Fnj37WXM0hs8RK1fhtlAAfRUZ+NmayYK4VTz7vdB4jRud5MZlUjisa1QmcpAEkCJY9vUeMSQDdlwZF1HtWc2mXlyt7jT/T/ct2lzSubE3M7wP1zOOo5GyQ2AkpYIFkaqXOGJn40ZcjpKj+z+FkfpOWGTWV3l/VJiniXrgHXGyAdGerZ2KyKGU0bfmtDMuqwKI/77m+jbcy/+zOz1byjiKO5cpy5fxkAjb5Kam7pidkMu7E7taTIsrxKYT6SPjV2QC5zM09264StL+vCaI62zogltWqoQvgPmR3m0/3dOdy7LNyF0QInCSZHx6e8v0kPjTaW/ko72hBn95hYeiZy76PtepEOurlyP1J7IVNBtq0sNttLfQ3NmG5wKm3085XHW7E8c8Hkq7UW44b71+0vpaXd0sDwvgTt1rsvEKK2qvUsXr/2Fm+SBBi9joh16l/m7FN8EGghTvkRoZOYgjgllbF6P+U8iradC554b/EEdvuQboLKGV2g3rvgvLYARuO0vuRIOjdfHTdd66ISb6CzrgKgqZiQlutFpteJT04n6DtSb+4Pu8jLExCw01UX1ZVVXbVVX00c1zvPn6WCHjb77CiDUXdkE9ZDN+4KThIrMRJ1EKynZiuSNmbhV8l1E6SQeNcmYkABMGJGSRk49EW9EIoiftbj41CnEPvOkU=
  on:
    branch: master
    condition: $TRAVIS_GO_VERSION =~ ^1\.13