[TASK] use circle ci for build artifacts + enable data race detection (#95)

This commit is contained in:
Geno 2017-11-14 19:33:28 +01:00 committed by GitHub
parent 63eaa413d6
commit 037ff80193
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 77 additions and 11 deletions

View File

@ -1,6 +1,12 @@
#!/bin/bash
# Issue: https://github.com/mattn/goveralls/issues/20
# Source: https://github.com/uber/go-torch/blob/63da5d33a225c195fea84610e2456d5f722f3963/.test-cover.sh
CI=$1
echo "run for $CI"
if [ "$CI" == "circle-ci" ]; then
cd ${GOPATH}/src/github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}
fi
echo "mode: count" > profile.cov
FAIL=0
@ -20,7 +26,7 @@ done
# Failures have incomplete results, so don't send
if [ "$FAIL" -eq 0 ]; then
goveralls -service=travis-ci -v -coverprofile=profile.cov
goveralls -service=$CI -v -coverprofile=profile.cov
bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN -f profile.cov
fi

View File

@ -7,5 +7,5 @@ install:
- go get github.com/mattn/goveralls
- go get golang.org/x/tools/cmd/cover
script:
- ./.test-coverage
- ./.test-coverage travis-ci
- go install github.com/FreifunkBremen/yanic

View File

@ -9,6 +9,7 @@ Yet another node info collector
```
[![Build Status](https://travis-ci.org/FreifunkBremen/yanic.svg?branch=master)](https://travis-ci.org/FreifunkBremen/yanic)
[![CircleCI](https://circleci.com/gh/FreifunkBremen/yanic/tree/master.svg?style=shield)](https://circleci.com/gh/FreifunkBremen/yanic/tree/master)
[![Coverage Status](https://coveralls.io/repos/github/FreifunkBremen/yanic/badge.svg?branch=master)](https://coveralls.io/github/FreifunkBremen/yanic?branch=master)
[![codecov](https://codecov.io/gh/FreifunkBremen/yanic/branch/master/graph/badge.svg)](https://codecov.io/gh/FreifunkBremen/yanic)
[![Go Report Card](https://goreportcard.com/badge/github.com/FreifunkBremen/yanic)](https://goreportcard.com/report/github.com/FreifunkBremen/yanic)

41
circle.yml Normal file
View File

@ -0,0 +1,41 @@
version: 2
jobs:
build:
docker:
- image: circleci/golang:latest
working_directory: /go/src/github.com/FreifunkBremen/yanic
steps:
- checkout
- run: go get -t -d -v ./...
- run: go install github.com/FreifunkBremen/yanic
- store_artifacts:
path: /go/bin/
destination: yanic
test:
docker:
- image: circleci/golang:latest
working_directory: /go/src/github.com/FreifunkBremen/yanic
steps:
- checkout
- run: go get -t -d -v ./...
- run: go get github.com/mattn/goveralls
- run: go get golang.org/x/tools/cmd/cover
- run: ./.test-coverage circle-ci
- store_test_results:
path: ./
destination: profile.cov
test_race:
docker:
- image: circleci/golang:latest
working_directory: /go/src/github.com/FreifunkBremen/yanic
steps:
- checkout
- run: go get -t -d -v ./...
- run: go test -race ./...
workflows:
version: 2
build_and_tests:
jobs:
- build
- test
- test_race

View File

@ -2,6 +2,7 @@ package all
import (
"errors"
"sync"
"testing"
"github.com/FreifunkBremen/yanic/output"
@ -11,11 +12,19 @@ import (
type testOutput struct {
output.Output
CountSave int
countSave int
sync.Mutex
}
func (c *testOutput) Save(nodes *runtime.Nodes) {
c.CountSave++
c.Lock()
c.countSave++
c.Unlock()
}
func (c *testOutput) Get() int {
c.Lock()
defer c.Unlock()
return c.countSave
}
func TestStart(t *testing.T) {
@ -69,9 +78,9 @@ func TestStart(t *testing.T) {
})
assert.NoError(err)
assert.Equal(0, globalOutput.CountSave)
assert.Equal(0, globalOutput.Get())
allOutput.Save(nodes)
assert.Equal(3, globalOutput.CountSave)
assert.Equal(3, globalOutput.Get())
_, err = Register(map[string]interface{}{
"e": []map[string]interface{}{

View File

@ -1,6 +1,7 @@
package output
import (
"sync"
"testing"
"time"
@ -10,11 +11,19 @@ import (
type testConn struct {
Output
CountSave int
countSave int
sync.Mutex
}
func (c *testConn) Save(nodes *runtime.Nodes) {
c.CountSave++
c.Lock()
c.countSave++
c.Unlock()
}
func (c *testConn) Get() int {
c.Lock()
defer c.Unlock()
return c.countSave
}
func TestStart(t *testing.T) {
@ -38,12 +47,12 @@ func TestStart(t *testing.T) {
Start(conn, nil, config)
assert.NotNil(quit)
assert.Equal(0, conn.CountSave)
assert.Equal(0, conn.Get())
time.Sleep(time.Millisecond * 12)
assert.Equal(1, conn.CountSave)
assert.Equal(1, conn.Get())
time.Sleep(time.Millisecond * 12)
Close()
assert.Equal(2, conn.CountSave)
assert.Equal(2, conn.Get())
}