package test import ( "background/config" "background/db" "background/logs" "background/model" "background/utils" "fmt" "log" "reflect" "testing" "github.com/olivere/elastic" ) func InitConfig() { e := config.Init("../user.yaml") if nil != e { log.Println(e.Error()) } } func InitMysql() { c := config.GetMysqlConfig() if c == nil { logs.Error("cannnot connect mysql server") } else { db.Init() } } func InitRedisConfig() { e := config.InitRedis() if nil != e { logs.Error(e.Error()) return } } func InitElasticSearch() { e := db.GetElastic().CreateIndex("hardware", model.HardwareTypeMapping()) if nil != e { } } func InitLogs() { logs.Init(config.GetLogConfig().Dir, config.GetLogConfig().File, config.GetLogConfig().Level, config.GetLogConfig().SaveFile) } // 从mysql数据自动导出数据到es,从describe 表新建索引和mapping,然后全表导出到es // port data from mysql to es, it can describe table and create index with mapping ,then port all data to es. func TestPortDocToElastic(t *testing.T) { InitConfig() InitLogs() InitRedisConfig() InitMysql() db.InitELK() e := model.PortDocumentToElasticsearch("doc_copy1") if nil != e { log.Print(e.Error()) } } func TestPortDocTreeToElastic(t *testing.T) { InitConfig() InitLogs() InitRedisConfig() InitMysql() db.InitELK() e := model.PortDocumentToElasticsearch("doc_copy1") if nil != e { log.Print(e.Error()) } } func TestReflect(t *testing.T) { type XX struct { A int16 `json:"bb"` B string `json: "cc" xml:"test"` } unmar := map[string]interface{}{ "bb": 2, "cc": "hello", } xx := XX{} utils.UnmarshalJson2Struct(&xx, unmar) log.Print(xx) } // 测试新建索引,查看mapping是否生效 // // test create new index,and check the mapping works // func TestCreateIndex(t *testing.T) { // InitConfig() // InitLogs() // InitRedisConfig() // InitMysql() // db.InitELK() // InitElasticSearch() // } // 测试query doc // test doc query works func TestQueryDoc(t *testing.T) { InitConfig() InitLogs() InitRedisConfig() InitMysql() db.InitELK() query := elastic.NewTermQuery("title", "c") x := []model.Doc{} _, e := db.GetElastic().Query("doc", query, &x, 10, 0) if nil != e { log.Print(e.Error()) } for _, v := range x { t.Logf(v.Title, " ", v.ID, " ", v.Type) } } func TestChangeStructFieldThroughStruct(t *testing.T) { var arr1 = []int{1, 2, 3} log.Print(reflect.ValueOf(&arr1).Kind()) a0 := reflect.ValueOf(&arr1).Elem() log.Print(a0.Kind()) e0 := make([]reflect.Value, 0) e0 = append(e0, reflect.ValueOf(100)) e0 = append(e0, reflect.ValueOf(200)) e0 = append(e0, reflect.ValueOf(300)) e0 = append(e0, reflect.ValueOf(400)) val_arr1 := reflect.Append(a0, e0...) a0.Set(val_arr1) fmt.Println("a0 is ", a0) fmt.Println("arr1 is ", arr1) fmt.Println(cap(e0)) fmt.Println(cap(arr1)) } func TestPortDocVersion(t *testing.T) { InitConfig() InitLogs() InitRedisConfig() InitMysql() docs := []model.Doc{} doc_groups := []model.DocGroup{} doc_types := []model.DocType{} e := db.GetMysqlClient().Query2("select * from doc_group", &doc_groups) if nil != e { log.Print(e.Error()) } // for k,v := range doc_groups{ // log.Print(k,v) // e := db.GetMysqlClient().Query2("select * from doc_group",&doc_groups) // if(nil != e){ // log.Print(e.Error()) // } // str := fmt.Sprintf("insert into doc_copy1 (title,type,content,author,create_time,version,is_public, deleted,origin_url,es_id,father,level) values ('%s',0,'','admin','%s', 1,1,0,'','',0,0)", // v.Name,time.Now().Format("2006-01-02 15:04:05")) // log.Print(str) // _,e = db.GetMysqlClient().Query(str) // if nil != e{ // log.Print(e.Error()) // } // } // e = db.GetMysqlClient().Query2("select * from doc_type",&doc_types) // if(nil != e){ // log.Print(e.Error()) // } // for k,v := range doc_types{ // log.Print(k,v) // doc_group := []model.DocGroup{} // e = db.GetMysqlClient().Query2(fmt.Sprintf("select * from doc_group where doc_group.int = '%d'",v.Group),&doc_group) // if nil != e{ // log.Print(e.Error()) // } // log.Print(doc_group[0]) // doc := []model.Doc{} // e = db.GetMysqlClient().Query2(fmt.Sprintf("select * from doc_copy1 where doc_copy1.title = '%s' and doc_copy1.father=0",doc_group[0].Name),&doc) // if nil != e{ // log.Print(e.Error()) // } // log.Print(doc) // str := fmt.Sprintf("insert into doc_copy1 (title,type,content,author,create_time,version,is_public, deleted,origin_url,es_id,father,level) values ('%s',0,'','admin','%s', 1,1,0,'','',%d,1)", // v.TypeName,time.Now().Format("2006-01-02 15:04:05"),doc[0].ID) // log.Print(str) // _,e = db.GetMysqlClient().Query(str) // if nil != e{ // log.Print(e.Error()) // } // } e = db.GetMysqlClient().Query2("select id,title,type from doc_copy1 where doc_copy1.father is NULL ", &docs) if nil != e { log.Print(e.Error()) } for k, v := range docs { log.Print(k, v) e = db.GetMysqlClient().Query2(fmt.Sprintf("select * from doc_type where doc_type.id = %d ", v.Type), &doc_types) if nil != e { log.Print(e.Error()) } log.Print(doc_types) if len(doc_types) > 0 { docsfortype := []model.Doc{} e = db.GetMysqlClient().Query2(fmt.Sprintf("select * from doc_copy1 where doc_copy1.title = '%s' and doc_copy1.level = 1", doc_types[0].TypeName), &docsfortype) if nil != e { log.Print(e.Error()) } log.Print(docsfortype) if len(docsfortype) > 0 { str := fmt.Sprintf("update doc_copy1 set father = %d ,level = %d where doc_copy1.id = %d", docsfortype[0].ID, docsfortype[0].Level+1, (v.ID)) log.Print(str) _, e = db.GetMysqlClient().Query(str) if nil != e { log.Printf(e.Error()) } } } } } func TestPortDocTree(t *testing.T) { InitConfig() InitLogs() InitRedisConfig() InitMysql() docs := []model.Doc{} doc_groups := []model.DocGroup{} doc_types := []model.DocType{} e := db.GetMysqlClient().Query2("select * from doc_group", &doc_groups) if nil != e { log.Print(e.Error()) } // for k,v := range doc_groups{ // log.Print(k,v) // e := db.GetMysqlClient().Query2("select * from doc_group",&doc_groups) // if(nil != e){ // log.Print(e.Error()) // } // str := fmt.Sprintf("insert into doc_copy1 (title,type,content,author,create_time,version,is_public, deleted,origin_url,es_id,father,level) values ('%s',0,'','admin','%s', 1,1,0,'','',0,0)", // v.Name,time.Now().Format("2006-01-02 15:04:05")) // log.Print(str) // _,e = db.GetMysqlClient().Query(str) // if nil != e{ // log.Print(e.Error()) // } // } // e = db.GetMysqlClient().Query2("select * from doc_type",&doc_types) // if(nil != e){ // log.Print(e.Error()) // } // for k,v := range doc_types{ // log.Print(k,v) // doc_group := []model.DocGroup{} // e = db.GetMysqlClient().Query2(fmt.Sprintf("select * from doc_group where doc_group.int = '%d'",v.Group),&doc_group) // if nil != e{ // log.Print(e.Error()) // } // log.Print(doc_group[0]) // doc := []model.Doc{} // e = db.GetMysqlClient().Query2(fmt.Sprintf("select * from doc_copy1 where doc_copy1.title = '%s' and doc_copy1.father=0",doc_group[0].Name),&doc) // if nil != e{ // log.Print(e.Error()) // } // log.Print(doc) // str := fmt.Sprintf("insert into doc_copy1 (title,type,content,author,create_time,version,is_public, deleted,origin_url,es_id,father,level) values ('%s',0,'','admin','%s', 1,1,0,'','',%d,1)", // v.TypeName,time.Now().Format("2006-01-02 15:04:05"),doc[0].ID) // log.Print(str) // _,e = db.GetMysqlClient().Query(str) // if nil != e{ // log.Print(e.Error()) // } // } e = db.GetMysqlClient().Query2("select id,title,type from doc_copy1 where doc_copy1.father is NULL ", &docs) if nil != e { log.Print(e.Error()) } for k, v := range docs { log.Print(k, v) e = db.GetMysqlClient().Query2(fmt.Sprintf("select * from doc_type where doc_type.id = %d ", v.Type), &doc_types) if nil != e { log.Print(e.Error()) } log.Print(doc_types) if len(doc_types) > 0 { docsfortype := []model.Doc{} e = db.GetMysqlClient().Query2(fmt.Sprintf("select * from doc_copy1 where doc_copy1.title = '%s' and doc_copy1.level = 1", doc_types[0].TypeName), &docsfortype) if nil != e { log.Print(e.Error()) } log.Print(docsfortype) if len(docsfortype) > 0 { str := fmt.Sprintf("update doc_copy1 set father = %d ,level = %d where doc_copy1.id = %d", docsfortype[0].ID, docsfortype[0].Level+1, (v.ID)) log.Print(str) _, e = db.GetMysqlClient().Query(str) if nil != e { log.Printf(e.Error()) } } } } }