Mark more unit tests as 'integration' tests when they rely on external services/docker
This commit is contained in:
parent
06a84def5f
commit
5259c50612
22
Makefile
22
Makefile
|
@ -1,12 +1,26 @@
|
|||
UNAME := $(shell sh -c 'uname')
|
||||
|
||||
ifeq ($(UNAME), Darwin)
|
||||
export ADVERTISED_HOST := $(shell sh -c 'boot2docker ip')
|
||||
endif
|
||||
ifeq ($(UNAME), Linux)
|
||||
export ADVERTISED_HOST := localhost
|
||||
endif
|
||||
|
||||
prepare:
|
||||
go get -d -v -t ./...
|
||||
docker-compose up -d --no-recreate
|
||||
|
||||
docker-compose:
|
||||
docker-compose up -d
|
||||
|
||||
test: prepare docker-compose
|
||||
go test -v ./...
|
||||
|
||||
test-short: prepare
|
||||
go test -short ./...
|
||||
go test -v -short ./...
|
||||
|
||||
test: prepare
|
||||
go test ./...
|
||||
test-cleanup:
|
||||
docker-compose kill
|
||||
|
||||
update:
|
||||
go get -u -v -d -t ./...
|
||||
|
|
32
README.md
32
README.md
|
@ -184,29 +184,29 @@ func init() {
|
|||
|
||||
## Testing
|
||||
|
||||
As Telegraf collects metrics from several third-party services it becomes a difficult task to mock each service as
|
||||
some of them have complicated protocols which would take some time to replicate.
|
||||
|
||||
To overcome this situation we've decided to use docker containers to provide a fast and reproducible environment
|
||||
to test those services which require it. For other situations (i.e: https://github.com/influxdb/telegraf/blob/master/plugins/redis/redis_test.go ) a simple mock will suffice.
|
||||
|
||||
To execute Telegraf tests follow these simple steps:
|
||||
|
||||
- Install docker compose following [these](https://docs.docker.com/compose/install/) instructions
|
||||
- NOTE: mac users should be able to simply do `brew install boot2docker` and `brew install docker-compose`
|
||||
|
||||
### Execute short tests:
|
||||
|
||||
execute `make short-test`
|
||||
|
||||
### Execute long tests:
|
||||
These tests requre additional docker containers, such as for kafka
|
||||
|
||||
Mac:
|
||||
execute ``ADVERTISED_HOST=`boot2docker ip` make test``
|
||||
As Telegraf collects metrics from several third-party services it becomes a
|
||||
difficult task to mock each service as some of them have complicated protocols
|
||||
which would take some time to replicate.
|
||||
|
||||
Linux:
|
||||
execute `ADVERTISED_HOST=localhost make test`
|
||||
To overcome this situation we've decided to use docker containers to provide a
|
||||
fast and reproducible environment to test those services which require it.
|
||||
For other situations
|
||||
(i.e: https://github.com/influxdb/telegraf/blob/master/plugins/redis/redis_test.go )
|
||||
a simple mock will suffice.
|
||||
|
||||
To execute Telegraf tests follow these simple steps:
|
||||
|
||||
- Install docker compose following [these](https://docs.docker.com/compose/install/) instructions
|
||||
- NOTE: mac users should be able to simply do `brew install boot2docker`
|
||||
and `brew install docker-compose`
|
||||
|
||||
execute `make test`
|
||||
|
||||
### Unit test troubleshooting:
|
||||
|
||||
|
|
|
@ -19,5 +19,6 @@ test:
|
|||
- golint .
|
||||
- golint testutil/...
|
||||
- golint cmd/...
|
||||
# TODO run unit tests
|
||||
# - go test -short ./...
|
||||
# Run short unit tests
|
||||
- go test -v -short ./...
|
||||
# TODO run full unit test suite
|
||||
|
|
|
@ -9,6 +9,10 @@ import (
|
|||
)
|
||||
|
||||
func TestMemcachedGeneratesMetrics(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
}
|
||||
|
||||
m := &Memcached{
|
||||
Servers: []string{testutil.GetLocalHost()},
|
||||
}
|
||||
|
|
|
@ -11,6 +11,10 @@ import (
|
|||
)
|
||||
|
||||
func TestMysqlGeneratesMetrics(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
}
|
||||
|
||||
m := &Mysql{
|
||||
Servers: []string{fmt.Sprintf("root@tcp(%s:3306)/", testutil.GetLocalHost())},
|
||||
}
|
||||
|
@ -54,6 +58,10 @@ func TestMysqlGeneratesMetrics(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestMysqlDefaultsToLocal(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
}
|
||||
|
||||
m := &Mysql{
|
||||
Servers: []string{fmt.Sprintf("root@tcp(%s:3306)/", testutil.GetLocalHost())},
|
||||
}
|
||||
|
|
|
@ -10,10 +10,15 @@ import (
|
|||
)
|
||||
|
||||
func TestPostgresqlGeneratesMetrics(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
}
|
||||
|
||||
p := &Postgresql{
|
||||
Servers: []*Server{
|
||||
{
|
||||
Address: fmt.Sprintf("host=%s user=postgres sslmode=disable", testutil.GetLocalHost()),
|
||||
Address: fmt.Sprintf("host=%s user=postgres sslmode=disable",
|
||||
testutil.GetLocalHost()),
|
||||
Databases: []string{"postgres"},
|
||||
},
|
||||
},
|
||||
|
@ -55,10 +60,15 @@ func TestPostgresqlGeneratesMetrics(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestPostgresqlTagsMetricsWithDatabaseName(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
}
|
||||
|
||||
p := &Postgresql{
|
||||
Servers: []*Server{
|
||||
{
|
||||
Address: fmt.Sprintf("host=%s user=postgres sslmode=disable", testutil.GetLocalHost()),
|
||||
Address: fmt.Sprintf("host=%s user=postgres sslmode=disable",
|
||||
testutil.GetLocalHost()),
|
||||
Databases: []string{"postgres"},
|
||||
},
|
||||
},
|
||||
|
@ -76,10 +86,15 @@ func TestPostgresqlTagsMetricsWithDatabaseName(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestPostgresqlDefaultsToAllDatabases(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
}
|
||||
|
||||
p := &Postgresql{
|
||||
Servers: []*Server{
|
||||
{
|
||||
Address: fmt.Sprintf("host=%s user=postgres sslmode=disable", testutil.GetLocalHost()),
|
||||
Address: fmt.Sprintf("host=%s user=postgres sslmode=disable",
|
||||
testutil.GetLocalHost()),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
@ -12,6 +12,10 @@ import (
|
|||
)
|
||||
|
||||
func TestRedisGeneratesMetrics(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
}
|
||||
|
||||
l, err := net.Listen("tcp", ":0")
|
||||
require.NoError(t, err)
|
||||
|
||||
|
@ -103,6 +107,10 @@ func TestRedisGeneratesMetrics(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRedisCanPullStatsFromMultipleServers(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("Skipping integration test in short mode")
|
||||
}
|
||||
|
||||
l, err := net.Listen("tcp", ":0")
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
Loading…
Reference in New Issue