Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions docker-compose.test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
version: '3'

networks:
kit-go-network:
driver: bridge

services:
kit_tests:
build:
context: .
dockerfile: ./Dockerfile.test
volumes:
- $PWD:/go/src/github.com/laironacosta/kit-go
depends_on:
- db-test
networks:
- kit-go-network
db-test:
image: postgres:13.2
ports:
- "5432:5432"
expose:
- "5432"
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
POSTGRES_DB: testdb
restart: on-failure
networks:
- kit-go-network
redis-test:
image: redis
ports:
- "6379:6379"
expose:
- "6379"
restart: on-failure
networks:
- kit-go-network
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,7 @@ go 1.16
require (
github.com/go-pg/pg/v10 v10.9.0
github.com/go-redis/redis/v8 v8.8.0
github.com/sirupsen/logrus v1.8.1
github.com/stretchr/testify v1.7.0
golang.org/x/sys v0.0.0-20210402192133-700132347e07 // indirect
)
7 changes: 6 additions & 1 deletion go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,10 @@ github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
Expand Down Expand Up @@ -122,14 +125,16 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 h1:EZ2mChiOa8udjfp6rRmswTbtZN/QzUQp4ptM4rnjHvc=
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210402192133-700132347e07 h1:4k6HsQjxj6hVMsI2Vf0yKlzt5lXxZsMW1q0zaq2k8zY=
golang.org/x/sys v0.0.0-20210402192133-700132347e07/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
Expand Down
16 changes: 16 additions & 0 deletions makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
run-test: test-up test-down

mod:
# This make rule requires Go 1.11+
GO111MODULE=on go mod tidy

# Test Rules
test:
docker-compose -f docker-compose.test.yml up --build --abort-on-container-exit
docker-compose -f docker-compose.test.yml down --volumes

test-up:
docker-compose -f docker-compose.test.yml up --build --abort-on-container-exit

test-down:
docker-compose -f docker-compose.test.yml down --volumes
14 changes: 7 additions & 7 deletions pgdb/example1/example1.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package main

import (
"fmt"
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
log "github.com/sirupsen/logrus"
)

type User struct {
Expand All @@ -25,9 +25,9 @@ func main() {

func exampleDBModel() {
db := pg.Connect(&pg.Options{
User: "postgres",
Password: "postgres",
Database: "pg-db-go",
User: "root",
Password: "root",
Database: "db-test",
})
defer db.Close()

Expand Down Expand Up @@ -89,9 +89,9 @@ func exampleDBModel() {
panic(err)
}

fmt.Printf("%+v \n", user)
fmt.Printf("%+v \n", users)
fmt.Printf("%+v \n", book)
log.Infof("%+v \n", user)
log.Infof("%+v \n", users)
log.Infof("%+v \n", book)

}

Expand Down
14 changes: 7 additions & 7 deletions pgdb/example2/example2.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package main

import (
"fmt"
"github.com/Lairon/db-go/pgdb"
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
log "github.com/sirupsen/logrus"
)

type User struct {
Expand Down Expand Up @@ -34,9 +34,9 @@ func main() {
func NewPgClient() *PgClient {
return &PgClient{
db: pgdb.NewPgDB(&pg.Options{
User: "postgres",
Password: "postgres",
Database: "pg-db-go",
User: "root",
Password: "root",
Database: "db-test",
}),
}
}
Expand Down Expand Up @@ -102,9 +102,9 @@ func (c *PgClient) createSchemeInsertSelect() {
panic(err)
}

fmt.Printf("%+v \n", user)
fmt.Printf("%+v \n", users)
fmt.Printf("%+v \n", book)
log.Infof("%+v \n", user)
log.Infof("%+v \n", users)
log.Infof("%+v \n", book)

}

Expand Down
18 changes: 12 additions & 6 deletions pgdb/pg_db.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ package pgdb

import (
"github.com/go-pg/pg/v10"
"log"
log "github.com/sirupsen/logrus"
"sync"
"time"
)

var (
Expand All @@ -20,15 +21,20 @@ func NewPgDB(pgOptions *pg.Options) *pg.DB {
}

func Connect(pgOptions *pg.Options) *pg.DB {
log.Infoln("Connecting to postgres database...")
db := pg.Connect(pgOptions)

var n int
_, err := db.QueryOne(pg.Scan(&n), "SELECT 1")
if err != nil {
log.Panicf("Postgres connection error %+v\n", err)
if _, err := db.QueryOne(pg.Scan(&n), "SELECT 1"); err != nil {
log.Errorln(err)
time.Sleep(2 * time.Second)

db = pg.Connect(pgOptions)
if _, err := db.QueryOne(pg.Scan(&n), "SELECT 1"); err != nil {
log.Panicf("Postgres connection error %+v\n", err)
}
}

log.Println("Successfully connected to ->", db.Options().Addr)

log.Infoln("Connection to postgres verified and successfully connected...")
return db
}
34 changes: 5 additions & 29 deletions pgdb/pg_db_test.go
Original file line number Diff line number Diff line change
@@ -1,49 +1,25 @@
package pgdb

import (
"fmt"
"github.com/go-pg/pg/v10"
"github.com/stretchr/testify/assert"
"testing"
)

var pgOptions = &pg.Options{
Addr: "localhost:5432",
User: "postgres",
Password: "postgres",
Database: "pg-db-go",
Addr: "db-test:5432",
User: "root",
Password: "root",
Database: "testdb",
}

func TestNewPgDB_WhenOptionsOk_ThenCreateClient(t *testing.T) {
got := NewPgDB(pgOptions)
got.Close()
defer got.Close()

assert.NotNil(t, got)
assert.Equal(t, pgOptions.Addr, got.Options().Addr)
assert.Equal(t, pgOptions.User, got.Options().User)
assert.Equal(t, pgOptions.Password, got.Options().Password)
assert.Equal(t, pgOptions.Database, got.Options().Database)
}

func TestNewPgDB_WhenOptionsNil_ThenPanic(t *testing.T) {
defer func() {
if r := recover(); r != nil {
assert.Equal(t, fmt.Sprint("runtime error: invalid memory address or nil pointer dereference"), fmt.Sprint(r))
}
}()
NewPgDB(nil)
}

func TestNewPgDB_WhenOptionsContainBadAddr_ThenPanic(t *testing.T) {
defer func() {
if r := recover(); r != nil {
assert.Equal(t, fmt.Sprintln("Postgres connection error dial tcp: lookup bad: no such host"), fmt.Sprint(r))
}
}()
NewPgDB(&pg.Options{
Addr: "bad:6379",
User: "postgres",
Password: "postgres",
Database: "pg-db-go",
})
}
7 changes: 3 additions & 4 deletions redisdb/example1/example1.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@ package main

import (
"context"
"fmt"
"github.com/Lairon/db-go/redisdb"
"github.com/go-redis/redis/v8"
"log"
log "github.com/sirupsen/logrus"
"time"
)

Expand All @@ -25,13 +24,13 @@ func main() {
client.SetKey(ctx, key, value, 10*time.Second)
val := client.GetKey(ctx, key)

fmt.Printf("Key: %s, Value: %s", key, val)
log.Infof("Key: %s, Value: %s", key, val)
}

func NewRedisClient() *RedisClient {
return &RedisClient{
db: redisdb.NewRedisDB(&redis.Options{
Addr: "localhost:6379",
Addr: "redis-test:6379",
Password: "", // no password set
DB: 0, // use default DB
}),
Expand Down
17 changes: 13 additions & 4 deletions redisdb/redis_db.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ package redisdb
import (
"context"
"github.com/go-redis/redis/v8"
"log"
log "github.com/sirupsen/logrus"
"sync"
"time"
)

var (
Expand All @@ -21,12 +22,20 @@ func NewRedisDB(redisOptions *redis.Options) *redis.Client {
}

func Connect(redisOptions *redis.Options) *redis.Client {
log.Infoln("Connecting to redis database...")
ctx := context.Background()
db := redis.NewClient(redisOptions)

if err := db.Ping(context.Background()).Err(); err != nil {
log.Panicf("Redis connection error %+v\n", err)
if err := db.Ping(ctx).Err(); err != nil {
log.Errorln(err)
time.Sleep(2 * time.Second)

db := redis.NewClient(redisOptions)
if err := db.Ping(ctx).Err(); err != nil {
log.Panicf("Redis connection error %+v\n", err)
}
}

log.Println("Redis successfully connected to ->", db.Options().Addr)
log.Infoln("Redis successfully connected...")
return db
}
25 changes: 1 addition & 24 deletions redisdb/redis_db_test.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package redisdb

import (
"fmt"
"github.com/go-redis/redis/v8"
"github.com/stretchr/testify/assert"
"testing"
)

var redisOptions = &redis.Options{
Addr: "localhost:6379",
Addr: "redis:6379",
Password: "",
DB: 0,
}
Expand All @@ -22,25 +21,3 @@ func TestNewRedisDB_WhenOptionsOk_ThenCreateClient(t *testing.T) {
assert.Equal(t, redisOptions.Password, got.Options().Password)
assert.Equal(t, redisOptions.DB, got.Options().DB)
}

func TestNewRedisDB_WhenOptionsNil_ThenPanic(t *testing.T) {
defer func() {
if r := recover(); r != nil {
assert.Equal(t, fmt.Sprint("runtime error: invalid memory address or nil pointer dereference"), fmt.Sprint(r))
}
}()
NewRedisDB(nil)
}

func TestNewRedisDB_WhenOptionsContainBadAddr_ThenPanic(t *testing.T) {
defer func() {
if r := recover(); r != nil {
assert.Equal(t, fmt.Sprintln("Redis connection error dial tcp: lookup bad: no such host"), fmt.Sprint(r))
}
}()
NewRedisDB(&redis.Options{
Addr: "bad:6379",
Password: "",
DB: 0,
})
}