| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- package common_db
- import (
- "context"
- "git.shuncheng.lu/bigthing/gocommon/pkg/conf"
- "git.shuncheng.lu/bigthing/gocommon/pkg/internal/properties"
- "git.shuncheng.lu/bigthing/gocommon/pkg/internal/util"
- "git.shuncheng.lu/bigthing/gocommon/pkg/trace"
- "sync"
- "testing"
- "time"
- )
- type UserInfo struct {
- Id uint64 `xorm:"pk autoincr id"`
- UserId uint64 `xorm:"user_id"`
- UserName string `xorm:"user_name"`
- IdCard string `xorm:"id_card"`
- Gender uint8 `xorm:"gender"`
- CreateTime time.Time `xorm:"created create_time"`
- UpdateTime time.Time `xorm:"updated update_time"`
- }
- func (*UserInfo) TableName() string {
- return "user_info"
- }
- // docker run -d --rm --name mysql -m 512m -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
- var (
- mysqlConfig = `
- mysql.host=localhost
- mysql.port=3306
- mysql.user=root
- mysql.password=123456
- mysql.dbname=gocommon
- mysql.slave_host=localhost
- mysql.slave_port=3306
- mysql.slave_user=root
- mysql.slave_password=123456
- mysql.slave_dbname=gocommon
- mysql.log_file=/data/log/gocommon/gocommon_mysql.log
- mysql.refresh_config_time=1
- mysql.read_timeout=1
- mysql.write_timeout=1
- mysql.timeout=1
- # trace
- trace.sky_walking_host = localhost:11800
- trace.application_name = gocommon_dev
- `
- )
- func initConfig(t testing.TB) properties.Properties {
- config, err := properties.ReadFromString(mysqlConfig)
- if err != nil {
- t.Fatal(err)
- }
- conf.MustValue = func(section, key string, defaultVal ...string) string {
- return config.GetString(section+"."+key, defaultVal...)
- }
- return config
- }
- func TestNewDbConn(t *testing.T) {
- config := initConfig(t)
- conn, err := NewDbConn("mysql")
- if err != nil {
- t.Fatal(err)
- }
- wg := sync.WaitGroup{}
- wg.Add(2)
- // 启动后修改配置 host
- util.GoWithRecover(func() {
- defer wg.Done()
- <-time.After(time.Second * 2)
- config.SetString("mysql.slave_host", "127.0.0.2")
- }, nil)
- // 10s查询db
- util.GoWithRecover(func() {
- defer wg.Done()
- for x := 0; x < 10; x++ {
- <-time.After(time.Second)
- info := new(UserInfo)
- if _, err := conn.NewSlaveCtxSession(context.Background()).Where("id=?", 1).Get(info); err != nil {
- t.Fatal(err)
- }
- }
- }, nil)
- wg.Wait()
- }
- func TestTraceDb(t *testing.T) {
- initConfig(t)
- if err := trace.Init(); err != nil {
- t.Fatal(err)
- }
- conn, err := NewDbConn("mysql")
- if err != nil {
- t.Fatal(err)
- }
- ctx, span := trace.MockContext(context.Background(), "test")
- defer func() {
- span.End()
- time.Sleep(time.Second * 5)
- }()
- t.Log(trace.GetTraceId(ctx))
- list := make([]UserInfo, 0)
- if err := conn.NewSlaveCtxSession(ctx).Find(&list); err != nil {
- t.Fatal(err)
- }
- t.Logf("RESULT: %v", list)
- }
|