* Use gometalinter and enforcing go fmt/lint/vet
Before this PR go fmt is enabled, go lint is suggest only.
From time to time we have to manually check for go lint and go vet
for any issues.
This fix uses gometalinter and enforcing go fmt/lint/vet.
Several reasons:
- gometalinter could handle multiple linters concurrently
- gometalinter supports suppression with `// nolint[: <linter>]`
Previously one reason we didn't enable go lint was due to the
```
warning: context.Context should be the first parameter of a function (golint)
```
this is now possible with gometalinter and `// nolint: golint` (See changes).
This fix also discovered several go vet issues and fixes it.
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
* Fix several issues reported by gometalinter (go vet)
This commit fixes several issues reported by gometalinter (go vet).
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
* Increase deadline
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
Add a full test server impl in this new package + tests. Move
dnsrecorder into this package as well and finish up the commented out
tests that were left in the old dnsrecorder package.
Update all callers and tests.
This fix add inline support for middleware/hosts so that
it is possible to specify hosts file insides the Corefile:
```
hosts inline example.org {
10.0.0.1 example.org
fallthrough
}
```
This fix fixes 999.
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
* plugin/{file,auto}: drop fsnotify
Reload every minute. This is more deterministic then fsnotify. Also
other thing cropped up: sharing zone files between zone; there is only
1 fsnotify event and we need to fan out the reload to all zone files.
This is a large rewrite (which could still be done), for now, poll the
zone file on disk.
Give serial no change a special error type so we can check for this.
Improve the logging for reloading:
2017/09/19 07:34:39 [INFO] Successfully reloaded zone "miek.nl." in "db.miek.nl" with serial 128263060
2017/09/19 07:34:45 [INFO] Successfully reloaded zone "miek.nl." in "db.miek.nl" with serial 128263059
2017/09/19 07:34:51 [INFO] Successfully reloaded zone "miek.nl." in "db.miek.nl" with serial 128263060
Fixes#1013
* typo
Cache would let the first response through and would then cap subsequent
ones to whatever the cache duration was. This would lead to huge drops
in TTL values: 3600 -> 20 for instance, which is not only bad, but can
mess up your careful TTL planning business.
This PR fixes that and applies the cache duration to all replies. As a
bonus I could remove a time.Sleep() from the cache test and just check
for the cache duration as the TTL on the reply.
Fixes#1038
This does not help to make it backwards compatible. The middleware ->
plugin rename invalidates all this. External middleware won't compile
either way.
* Rename middleware to plugin
first pass; mostly used 'sed', few spots where I manually changed
text.
This still builds a coredns binary.
* fmt error
* Rename AddMiddleware to AddPlugin
* Readd AddMiddleware to remain backwards compat
Go is not super helpful if you checkout the code to a random path, then try and follow the build instructions in the README. Add some instructions that help users who don't deal with Go on a day-to-day basis to get it right.
Fixes#1070. Thanks to @johnbelamaric for reminding me about Go's deficiencies.
* Remove debug from interface and methods
* remove debug queries from etcd
* remove debug queries from k8s - they were not used
* And remove from mw/proxy-google as well
* Remove debug query test
Remove the [FILE] option from the docs, we still allow it, but this one
value that we allow now *stdout* isn't shown anymore.
Also test the snippet with readme_test.go by adding `~~ corefile`.
If a README has a corefile snippet that is annotated with `corefile`,
this test will parse the instance and checks the snippet is legal.
This means a) we will get better docs b) we know for sure everything
still parses.
The test parses everything in middleware/*/README.md, it does not check
for README presence, just Corefile snippets. The port used is 10053 and
overrides whatever port is set in the docs.
The secondary middleware was used as an example and adds two examples
that should parse.
failures show up as:
~~~
--- FAIL: TestReadme (0.04s)
readme_test.go:50: Testing ../middleware/secondary/README.md, with 100 byte snippet
readme_test.go:50: Testing ../middleware/secondary/README.md, with 93 byte snippet
readme_test.go:53: Failed to start server for input "middleware/secondary: Corefile:3 - Error during parsing: unknown property 'transfeT'":
. {
secondary example.net {
transfeT from 10.1.2.1
transfer to *
}
}
FAIL
~~~
* mw/etcd: revert 'add fallthrough'
This removes 'fallthrough' for *etcd* which is not needed. This was
added in 00f5c7797 but is totally not needed and creates backwards
incompat behavior even.
Thanks to @johnbelamaric for pointing this out in #925.
* remove here as well
* Revert "remove here as well"
This reverts commit 9d44397827.
* Revert "mw/etcd: revert 'add fallthrough'"
This reverts commit 0cfe3cb1ab.
* mw/{etcd,kubernetes}: use fallthrough correctly
reverts of reverts, will rebase and squash later.
* mw/autopath: correct type for type switch
Use pointer to kubernetes as that is what is registered. Fix up
federation which had the same mistake.
* here
* mw/proxy: simplify google code
Minimize bootstrap code a bit, and block on the first resolve of the
google https endpont. Add more logging and include actual error in the
returned errors.
Also re-resolve every 120 seconds, instead of 300 (might eventually make
this an option).
* fix test