| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- package odb_test
- import (
- "encoding/json"
- "strings"
- "testing"
- "time"
- "git.wecise.com/wecise/odbserver/odb/test"
- )
- func TestUpdateTagDir(t *testing.T) {
- g := test.TestG()
- var err error
- if _, _, err = g.Query("delete from /matrix/tagdir where domain = 'test' and creater = 'test' with version"); err != nil {
- t.Fatal(err)
- }
- time.Sleep(1 * time.Second)
- if err = g.UpdateTagDir("test", "test", "fruit"); err != nil {
- t.Fatal(err)
- }
- time.Sleep(1 * time.Second)
- if err = g.UpdateTagDir("test", "test", "fruit/apple"); err != nil {
- t.Fatal(err)
- }
- time.Sleep(1 * time.Second)
- if err = g.UpdateTagDir("test", "test", "fruit/pear"); err != nil {
- t.Fatal(err)
- }
- time.Sleep(1 * time.Second)
- if err = g.UpdateTagDir("test", "test", "fruit/pear/yellow"); err != nil {
- t.Fatal(err)
- }
- time.Sleep(1 * time.Second)
- if err = g.UpdateTagDir("test", "test", "fruit/pear/green"); err != nil {
- t.Fatal(err)
- }
- time.Sleep(1 * time.Second)
- if err = g.UpdateTagDir("test", "test", "vegetables/tomato"); err != nil {
- t.Fatal(err)
- }
- time.Sleep(1 * time.Second)
- // test duplicate
- if err = g.UpdateTagDir("test", "test", "fruit/apple/green"); err == nil {
- t.Fatal("Test duplicate fail")
- } else {
- if !strings.Contains(err.Error(), "already in path") {
- t.Error("Did not check for duplicates")
- } else {
- t.Log("Check duplicate tag success.")
- }
- }
- time.Sleep(1 * time.Second)
- data, _, err := g.Query("select name from /matrix/tagdir where domain = 'test' and creater = 'test' limit -1")
- if err != nil {
- t.Fatal(err)
- }
- if len(data) != 7 {
- t.Errorf("Expected to be '7' but get is '%d'", len(data))
- }
- }
- func TestGetTagDir(t *testing.T) {
- g, err := getTestGutil()
- if err != nil {
- t.Fatal(err)
- }
- defer g.Close()
- node, err := g.GetTagDir("test", "test", "")
- if err != nil {
- t.Fatal(err)
- }
- b, _ := json.MarshalIndent(node, "", " ")
- t.Log(string(b))
- }
- func TestMoveTagDir(t *testing.T) {
- g := test.TestG()
- if err := g.MoveTagDir("test", "test", "fruit/pear", "vegetables/tomato"); err != nil {
- t.Fatal(err)
- }
- data, _, err := g.Query("select name from /matrix/tagdir where domain = 'test' and creater = 'test' and path = 'vegetables/tomato/pear' refresh")
- if err != nil {
- t.Fatal(err)
- }
- if len(data) != 1 {
- t.Errorf("Expected to be '1' but get is '%d'", len(data))
- }
- data, _, err = g.Query("select name from /matrix/tagdir where domain = 'test' and creater = 'test' and path like 'vegetables/tomato/pear/*' refresh")
- if err != nil {
- t.Fatal(err)
- }
- if len(data) != 2 {
- t.Errorf("Expected to be '2' but get is '%d'", len(data))
- }
- data, _, err = g.Query("select name from /matrix/tagdir where domain = 'test' and creater = 'test' and (path like 'fruit/pear/*' or path = 'fruit/pear') refresh")
- if err != nil {
- t.Fatal(err)
- }
- if len(data) != 0 {
- t.Errorf("Expected to be '0' but get is '%d'", len(data))
- }
- }
- func TestDeleteTagDir(t *testing.T) {
- g, err := getTestGutil()
- if err != nil {
- t.Fatal(err)
- }
- if err = g.DeleteTagDir("test", "test", "fruit"); err != nil {
- t.Fatal(err)
- }
- data, _, err := g.Query("select name from /matrix/tagdir where domain = 'test' and creater = 'test' and path like 'fruit*' refresh")
- if err != nil {
- t.Fatal(err)
- }
- if len(data) != 0 {
- t.Errorf("Expected to be '0' but get is '%d'", len(data))
- }
- }
- func TestRenameTagDir(t *testing.T) {
- g := test.TestG()
- if err := g.RenameTagDir("test", "test", "vegetables/tomato/pear", "vegetables/tomato/good"); err != nil {
- t.Fatal(err)
- }
- data, _, err := g.Query("select name, path from /matrix/tagdir where domain = 'test' and creater = 'test' and path like 'vegetables/tomato/*' refresh")
- if err != nil {
- t.Fatal(err)
- }
- if len(data) != 3 {
- t.Errorf("Expected to be '3' but get is '%d'", len(data))
- } else {
- for _, d := range data {
- if !strings.HasPrefix(d["path"].(string), "vegetables/tomato/good") {
- t.Errorf("Rename tagdir excpected to be 'vegetables/tomato/good' but get is '%s'", d["path"].(string))
- }
- }
- }
- }
- func TestGutil_AddTags(t *testing.T) {
- g, err := getTestGutil()
- if err != nil {
- t.Fatal(err)
- }
- if _, _, err = g.Query(`delete from /matrix/tagdir where domain = 'test' with version`); err != nil {
- t.Fatal(err)
- }
- if _, _, err = g.Query(`create class if not exists /testtagdir () with key=manu`); err != nil {
- t.Fatal(err)
- }
- if _, _, err = g.Query(`delete from /testtagdir with version`); err != nil {
- t.Fatal(err)
- }
- ids := []interface{}{"testid1", "testid2"}
- for _, id := range ids {
- if _, _, err = g.Query(`insert into /testtagdir (id) values ('` + id.(string) + `')`); err != nil {
- t.Fatal(err)
- }
- }
- if _, _, err = g.Query(`refresh`); err != nil {
- t.Fatal(err)
- }
- tags := []string{"testTag1", "testTag2"}
- if err = g.AddTags("test", "test", ids, tags); err != nil {
- t.Fatal(err)
- }
- if _, _, err = g.Query(`refresh`); err != nil {
- t.Fatal(err)
- }
- for _, tag := range tags {
- ret, _, err := g.Query(`select id from /testtagdir where tags = '` + tag + `'`)
- if err != nil {
- t.Fatal(err)
- }
- if len(ret) != 2 {
- t.Errorf("Except result size is 2, bug get size is %d", len(ret))
- }
- }
- }
- func TestGutil_DeleteTags(t *testing.T) {
- g := test.TestG()
- ids := []interface{}{"testid1", "testid2"}
- tags := []string{"testTag1", "testTag2"}
- if err := g.DeleteTags(ids, tags); err != nil {
- t.Fatal(err)
- }
- if _, _, err := g.Query(`refresh`); err != nil {
- t.Fatal(err)
- }
- for _, tag := range tags {
- ret, _, err := g.Query(`select id from /testtagdir where tags = '` + tag + `'`)
- if err != nil {
- t.Fatal(err)
- }
- if len(ret) != 0 {
- t.Errorf("Except result size is 0, bug get size is %d", len(ret))
- }
- }
- }
- func TestGutil_GetTags(t *testing.T) {
- g := test.TestG()
- start := time.Now()
- tags, err := g.GetTags("test", "test", "", "pear", "vegetables")
- if err != nil {
- t.Fatal(err)
- }
- t.Log(time.Now().Sub(start).String())
- for _, tag := range tags {
- t.Log(tag)
- }
- if len(tags) != 5 {
- t.Errorf("Except result size is 5, bug get size is %d", len(tags))
- }
- }
|