Skip to content

Commit 3fbc062

Browse files
committed
ClickHouse#58 try codecov.io
1 parent 6e0cec7 commit 3fbc062

8 files changed

+125
-6
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,5 @@ _testmain.go
2323
*.exe
2424
*.test
2525
*.prof
26+
27+
coverage.txt

.travis.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
sudo: required
22
language: go
33
go:
4-
- 1.8
4+
- 1.8.x
5+
- master
56
services:
67
- docker
78
install:
@@ -13,7 +14,6 @@ before_install:
1314
- docker run -d -p 127.0.0.1:9000:9000 --name some-clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server
1415
- docker ps -a
1516
script:
16-
- go test -v -bench=. ../clickhouse/lib/...
17-
- go test -v -race .
18-
- go test -covermode=count -coverprofile=coverage.out . > /dev/null 2>&1
19-
- goveralls -coverprofile=coverage.out -service travis-ci -repotoken $COVERALLS_TOKEN
17+
- ./go.test.sh
18+
after_success:
19+
- bash <(curl -s https://codecov.io/bash)

go.test.sh

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
echo "" > coverage.txt
5+
6+
for d in $(go list ./... | grep -v vendor | grep -v examples); do
7+
go test -race -coverprofile=profile.out -covermode=atomic $d
8+
if [ -f profile.out ]; then
9+
cat profile.out >> coverage.txt
10+
rm profile.out
11+
fi
12+
done

lib/column/column_benchmark_test.go

+30
Original file line numberDiff line numberDiff line change
@@ -207,3 +207,33 @@ func Benchmark_Column_Enum16(b *testing.B) {
207207
}
208208
}
209209
}
210+
211+
func Benchmark_Column_Date(b *testing.B) {
212+
var (
213+
column, _ = Factory("", "Date", time.Local)
214+
encoder = binary.NewEncoder(ioutil.Discard)
215+
timeNow = time.Now()
216+
)
217+
b.ResetTimer()
218+
b.ReportAllocs()
219+
for i := 0; i < b.N; i++ {
220+
if err := column.Write(encoder, timeNow); err != nil {
221+
b.Fatal(err)
222+
}
223+
}
224+
}
225+
226+
func Benchmark_Column_DateTime(b *testing.B) {
227+
var (
228+
column, _ = Factory("", "DateTime", time.Local)
229+
encoder = binary.NewEncoder(ioutil.Discard)
230+
timeNow = time.Now()
231+
)
232+
b.ResetTimer()
233+
b.ReportAllocs()
234+
for i := 0; i < b.N; i++ {
235+
if err := column.Write(encoder, timeNow); err != nil {
236+
b.Fatal(err)
237+
}
238+
}
239+
}

lib/column/column_test.go

+58
Original file line numberDiff line numberDiff line change
@@ -369,3 +369,61 @@ func Test_Column_Enum16(t *testing.T) {
369369
}
370370
}
371371
}
372+
373+
func Test_Column_Date(t *testing.T) {
374+
var (
375+
buf bytes.Buffer
376+
timeNow = time.Now().Truncate(24 * time.Hour)
377+
encoder = binary.NewEncoder(&buf)
378+
decoder = binary.NewDecoder(&buf)
379+
)
380+
if column, err := columns.Factory("column_name", "Date", time.Local); assert.NoError(t, err) {
381+
if err := column.Write(encoder, timeNow); assert.NoError(t, err) {
382+
if v, err := column.Read(decoder); assert.NoError(t, err) {
383+
assert.Equal(t, timeNow, v)
384+
}
385+
}
386+
if err := column.Write(encoder, timeNow.In(time.UTC).Format("2006-01-02")); assert.NoError(t, err) {
387+
if v, err := column.Read(decoder); assert.NoError(t, err) {
388+
assert.Equal(t, timeNow, v)
389+
}
390+
}
391+
if assert.Equal(t, "column_name", column.Name()) && assert.Equal(t, "Date", column.CHType()) {
392+
assert.Equal(t, reflect.TypeOf(time.Time{}).Kind(), column.ScanType().Kind())
393+
}
394+
if err := column.Write(encoder, int8(0)); assert.Error(t, err) {
395+
if e, ok := err.(*columns.ErrUnexpectedType); assert.True(t, ok) {
396+
assert.Equal(t, int8(0), e.T)
397+
}
398+
}
399+
}
400+
}
401+
402+
func Test_Column_DateTime(t *testing.T) {
403+
var (
404+
buf bytes.Buffer
405+
timeNow = time.Now().Truncate(time.Second)
406+
encoder = binary.NewEncoder(&buf)
407+
decoder = binary.NewDecoder(&buf)
408+
)
409+
if column, err := columns.Factory("column_name", "DateTime", time.Local); assert.NoError(t, err) {
410+
if err := column.Write(encoder, timeNow); assert.NoError(t, err) {
411+
if v, err := column.Read(decoder); assert.NoError(t, err) {
412+
assert.Equal(t, timeNow, v)
413+
}
414+
}
415+
if err := column.Write(encoder, timeNow.In(time.UTC).Format("2006-01-02 15:04:05")); assert.NoError(t, err) {
416+
if v, err := column.Read(decoder); assert.NoError(t, err) {
417+
assert.Equal(t, timeNow, v)
418+
}
419+
}
420+
if assert.Equal(t, "column_name", column.Name()) && assert.Equal(t, "DateTime", column.CHType()) {
421+
assert.Equal(t, reflect.TypeOf(time.Time{}).Kind(), column.ScanType().Kind())
422+
}
423+
if err := column.Write(encoder, int8(0)); assert.Error(t, err) {
424+
if e, ok := err.(*columns.ErrUnexpectedType); assert.True(t, ok) {
425+
assert.Equal(t, int8(0), e.T)
426+
}
427+
}
428+
}
429+
}

lib/types/array.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func (array *Array) Value() (driver.Value, error) {
5353
encoder = binary.NewEncoder(buff)
5454
)
5555
encoder.Uvarint(uint64(ln))
56-
for i := 0; i < v.Len(); i++ {
56+
for i := 0; i < ln; i++ {
5757
if err := array.column.Write(encoder, v.Index(i).Interface()); err != nil {
5858
buff.Free()
5959
return nil, err

lib/types/array_test.go

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package types
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func Benchmark_Types_ArrayAsDriverValue(b *testing.B) {
8+
array := NewArray([]string{"A", "B", "C"})
9+
b.ResetTimer()
10+
b.ReportAllocs()
11+
for i := 0; i < b.N; i++ {
12+
if _, err := array.Value(); err != nil {
13+
b.Fatal(err)
14+
}
15+
}
16+
}

uuid.go

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99

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

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

1415
func (str UUID) Value() (driver.Value, error) {

0 commit comments

Comments
 (0)