12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package dsn
- import (
- "net/url"
- "reflect"
- "testing"
- "time"
- xtime "go-common/library/time"
- )
- type config struct {
- Network string `dsn:"network"`
- Addresses []string `dsn:"address"`
- Username string `dsn:"username"`
- Password string `dsn:"password"`
- Timeout xtime.Duration `dsn:"query.timeout"`
- Sub Sub `dsn:"query.sub"`
- Def string `dsn:"query.def,hello"`
- }
- type Sub struct {
- Foo int `dsn:"query.foo"`
- }
- func TestBind(t *testing.T) {
- var cfg config
- rawdsn := "tcp://root:toor@172.12.23.34,178.23.34.45?timeout=1s&sub.foo=1&hello=world"
- dsn, err := Parse(rawdsn)
- if err != nil {
- t.Fatal(err)
- }
- values, err := dsn.Bind(&cfg)
- if err != nil {
- t.Error(err)
- }
- if !reflect.DeepEqual(values, url.Values{"hello": {"world"}}) {
- t.Errorf("unexpect values get %v", values)
- }
- cfg2 := config{
- Network: "tcp",
- Addresses: []string{"172.12.23.34", "178.23.34.45"},
- Password: "toor",
- Username: "root",
- Sub: Sub{Foo: 1},
- Timeout: xtime.Duration(time.Second),
- Def: "hello",
- }
- if !reflect.DeepEqual(cfg, cfg2) {
- t.Errorf("unexpect config get %v, expect %v", cfg, cfg2)
- }
- }
- type config2 struct {
- Network string `dsn:"network"`
- Address string `dsn:"address"`
- Timeout xtime.Duration `dsn:"query.timeout"`
- }
- func TestUnix(t *testing.T) {
- var cfg config2
- rawdsn := "unix:///run/xxx.sock?timeout=1s&sub.foo=1&hello=world"
- dsn, err := Parse(rawdsn)
- if err != nil {
- t.Fatal(err)
- }
- _, err = dsn.Bind(&cfg)
- if err != nil {
- t.Error(err)
- }
- cfg2 := config2{
- Network: "unix",
- Address: "/run/xxx.sock",
- Timeout: xtime.Duration(time.Second),
- }
- if !reflect.DeepEqual(cfg, cfg2) {
- t.Errorf("unexpect config2 get %v, expect %v", cfg, cfg2)
- }
- }
|