Skip to content

Commit

Permalink
#58 try codecov.io
Browse files Browse the repository at this point in the history
  • Loading branch information
kshvakov committed Aug 20, 2017
1 parent 6e0cec7 commit 3fbc062
Show file tree
Hide file tree
Showing 8 changed files with 125 additions and 6 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -23,3 +23,5 @@ _testmain.go
*.exe
*.test
*.prof

coverage.txt
10 changes: 5 additions & 5 deletions .travis.yml
@@ -1,7 +1,8 @@
sudo: required
language: go
go:
- 1.8
- 1.8.x
- master
services:
- docker
install:
Expand All @@ -13,7 +14,6 @@ before_install:
- docker run -d -p 127.0.0.1:9000:9000 --name some-clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server
- docker ps -a
script:
- go test -v -bench=. ../clickhouse/lib/...
- go test -v -race .
- go test -covermode=count -coverprofile=coverage.out . > /dev/null 2>&1
- goveralls -coverprofile=coverage.out -service travis-ci -repotoken $COVERALLS_TOKEN
- ./go.test.sh
after_success:
- bash <(curl -s https://codecov.io/bash)
12 changes: 12 additions & 0 deletions go.test.sh
@@ -0,0 +1,12 @@
#!/usr/bin/env bash

set -e
echo "" > coverage.txt

for d in $(go list ./... | grep -v vendor | grep -v examples); do
go test -race -coverprofile=profile.out -covermode=atomic $d
if [ -f profile.out ]; then
cat profile.out >> coverage.txt
rm profile.out
fi
done
30 changes: 30 additions & 0 deletions lib/column/column_benchmark_test.go
Expand Up @@ -207,3 +207,33 @@ func Benchmark_Column_Enum16(b *testing.B) {
}
}
}

func Benchmark_Column_Date(b *testing.B) {
var (
column, _ = Factory("", "Date", time.Local)
encoder = binary.NewEncoder(ioutil.Discard)
timeNow = time.Now()
)
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
if err := column.Write(encoder, timeNow); err != nil {
b.Fatal(err)
}
}
}

func Benchmark_Column_DateTime(b *testing.B) {
var (
column, _ = Factory("", "DateTime", time.Local)
encoder = binary.NewEncoder(ioutil.Discard)
timeNow = time.Now()
)
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
if err := column.Write(encoder, timeNow); err != nil {
b.Fatal(err)
}
}
}
58 changes: 58 additions & 0 deletions lib/column/column_test.go
Expand Up @@ -369,3 +369,61 @@ func Test_Column_Enum16(t *testing.T) {
}
}
}

func Test_Column_Date(t *testing.T) {
var (
buf bytes.Buffer
timeNow = time.Now().Truncate(24 * time.Hour)
encoder = binary.NewEncoder(&buf)
decoder = binary.NewDecoder(&buf)
)
if column, err := columns.Factory("column_name", "Date", time.Local); assert.NoError(t, err) {
if err := column.Write(encoder, timeNow); assert.NoError(t, err) {
if v, err := column.Read(decoder); assert.NoError(t, err) {
assert.Equal(t, timeNow, v)
}
}
if err := column.Write(encoder, timeNow.In(time.UTC).Format("2006-01-02")); assert.NoError(t, err) {
if v, err := column.Read(decoder); assert.NoError(t, err) {
assert.Equal(t, timeNow, v)
}
}
if assert.Equal(t, "column_name", column.Name()) && assert.Equal(t, "Date", column.CHType()) {
assert.Equal(t, reflect.TypeOf(time.Time{}).Kind(), column.ScanType().Kind())
}
if err := column.Write(encoder, int8(0)); assert.Error(t, err) {
if e, ok := err.(*columns.ErrUnexpectedType); assert.True(t, ok) {
assert.Equal(t, int8(0), e.T)
}
}
}
}

func Test_Column_DateTime(t *testing.T) {
var (
buf bytes.Buffer
timeNow = time.Now().Truncate(time.Second)
encoder = binary.NewEncoder(&buf)
decoder = binary.NewDecoder(&buf)
)
if column, err := columns.Factory("column_name", "DateTime", time.Local); assert.NoError(t, err) {
if err := column.Write(encoder, timeNow); assert.NoError(t, err) {
if v, err := column.Read(decoder); assert.NoError(t, err) {
assert.Equal(t, timeNow, v)
}
}
if err := column.Write(encoder, timeNow.In(time.UTC).Format("2006-01-02 15:04:05")); assert.NoError(t, err) {
if v, err := column.Read(decoder); assert.NoError(t, err) {
assert.Equal(t, timeNow, v)
}
}
if assert.Equal(t, "column_name", column.Name()) && assert.Equal(t, "DateTime", column.CHType()) {
assert.Equal(t, reflect.TypeOf(time.Time{}).Kind(), column.ScanType().Kind())
}
if err := column.Write(encoder, int8(0)); assert.Error(t, err) {
if e, ok := err.(*columns.ErrUnexpectedType); assert.True(t, ok) {
assert.Equal(t, int8(0), e.T)
}
}
}
}
2 changes: 1 addition & 1 deletion lib/types/array.go
Expand Up @@ -53,7 +53,7 @@ func (array *Array) Value() (driver.Value, error) {
encoder = binary.NewEncoder(buff)
)
encoder.Uvarint(uint64(ln))
for i := 0; i < v.Len(); i++ {
for i := 0; i < ln; i++ {
if err := array.column.Write(encoder, v.Index(i).Interface()); err != nil {
buff.Free()
return nil, err
Expand Down
16 changes: 16 additions & 0 deletions lib/types/array_test.go
@@ -0,0 +1,16 @@
package types

import (
"testing"
)

func Benchmark_Types_ArrayAsDriverValue(b *testing.B) {
array := NewArray([]string{"A", "B", "C"})
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
if _, err := array.Value(); err != nil {
b.Fatal(err)
}
}
}
1 change: 1 addition & 0 deletions uuid.go
Expand Up @@ -9,6 +9,7 @@ import (

var InvalidUUIDFormatError = errors.New("invalid UUID format")

// this type will be deprecated because the ClickHouse server (>=1.1.54276) has a built-in type UUID
type UUID string

func (str UUID) Value() (driver.Value, error) {
Expand Down

0 comments on commit 3fbc062

Please sign in to comment.