package model import ( "encoding/json" "fmt" "net/url" "reflect" "strings" "testing" "time" "github.com/smartystreets/goconvey/convey" "go-common/app/admin/main/aegis/model/common" "go-common/app/admin/main/aegis/model/resource" xtime "go-common/library/time" ) func Test_SubmitOption(t *testing.T) { sopt := &SubmitOptions{ EngineOption: EngineOption{ BaseOptions: common.BaseOptions{ BusinessID: 1, FlowID: 1, OID: "oid-123456", RID: 1, Uname: "cxf", }, Forbid: &Forbid{ Comment: "dqqq", Reason: "我的", }, TaskID: 1, Result: &resource.Result{ Attribute: 3, Note: "哎", RejectReason: "", ReasonID: 3, AttributeList: map[string]int8{ "no_comment": 1, "no_forward": 0, }, }, ExtraData: map[string]interface{}{ "mailto": "chenxuefeng", "mail": 1, "mid": 10086, "notify": 1, }, }, Binds: []int64{2, 3}, } mapformat := map[string]*ActionParam{ "auditor": { Value: "Uname", }, "oid": { Value: "OID", }, "uid": { Value: "ExtraData.mid", }, "forbid_params": { Value: "Forbid", }, "no_comment": { Value: "Result.AttributeList.no_comment", }, "no_forward": { Value: "Result.AttributeList.no_forward", }, "notify": { Value: "ExtraData.notify", }, "reason": { Value: "Result.RejectReason", Default: " ", }, } ot := reflect.TypeOf(*sopt) ov := reflect.ValueOf(*sopt) params := make(map[string]interface{}) for k, v := range mapformat { SubReflect(ot, ov, k, strings.Split(v.Value, "."), v.Default, params) } fmt.Println("params:", params) values := url.Values{} for k, v := range params { values.Set(k, fmt.Sprint(v)) } fmt.Println("values:", values.Encode()) t.Fail() } func Test_reflectMap(t *testing.T) { mv := map[string]int8{"1": 1, "2": 2} v := reflect.ValueOf(mv) fmt.Println("a:", v.MapIndex(reflect.ValueOf("1"))) fmt.Println("b:", v.MapIndex(reflect.ValueOf("b"))) type A struct { Name string Age int } type B struct { Info *A Extra string } b := &B{ Info: &A{ Name: "name", Age: 1, }, Extra: "extra", } vbp := reflect.ValueOf(b) vb := vbp.Elem() fmt.Println("nb:", vb.FieldByName("Info").Elem().FieldByName("Name")) bs, err := json.Marshal(vbp) fmt.Println("bs1:", string(bs)) fmt.Println("err1:", err) bs, err = json.Marshal(vbp.Interface()) fmt.Println("bs2:", string(bs)) fmt.Println("er2:", err) t.Fail() } func Test_Report(t *testing.T) { time1, _ := time.ParseInLocation("2006-01-02 15:04:05", "2018-11-29 11:11:28", time.Local) time2 := time1.Add(+10 * time.Minute) time3 := time1.Add(+2 * time.Hour) time4 := time1.Add(+4 * time.Hour) btime, _ := time.ParseInLocation("2006-01-02 15:04:05", "2018-11-29 11:00:00", time.Local) etime, _ := time.ParseInLocation("2006-01-02 15:04:05", "2018-11-29 20:00:00", time.Local) /* 1.同一小时内同用户 2.同一小时内不同用户 */ metas := []*ReportMeta{ {Mtime: xtime.Time(time1.Unix()), Content: `{"ds":4,"dy":1,"rl":2}`, UID: 1, Uname: "1", }, {Mtime: xtime.Time(time2.Unix()), Content: `{"ds":4,"rl":3}`, UID: 1, Uname: "1", }, {Mtime: xtime.Time(time1.Unix()), Content: `{"ds":4}`, UID: 2, Uname: "2", }, {Mtime: xtime.Time(time2.Unix()), Content: `{"ds":0,"st_3_225":1,"ut":0}`, UID: 2, Uname: "2", }, {Mtime: xtime.Time(time3.Unix()), Content: `{"ds":13,"dy":5,"rl":6,"rs_-1":1,"st_3_736":1,"st_4_0":2,"st_4_736":1,"ut":0}`, UID: 1, Uname: "1", }, {Mtime: xtime.Time(time4.Unix()), Content: `{"ds":2,"rs_1":1,"st_3_2":1,"ut":9}`, UID: 2, Uname: "2", }, } opt := &OptReport{ Btime: btime, Etime: etime, } mnames := map[int64]string{ 1: "1", 2: "2", } tempres := Gentempres(opt, mnames, metas) bs1, _ := json.Marshal(tempres) fmt.Printf("1: %s\n", string(bs1)) res := Genres(opt, tempres, mnames) bs2, _ := json.Marshal(res) fmt.Printf("2: %s\n", string(bs2)) form := Genform(res) bs3, _ := json.Marshal(form) fmt.Printf("3: %s\n", string(bs3)) t.Fail() } func Test_MemberStat(t *testing.T) { time1, _ := time.ParseInLocation("2006-01-02 15:04:05", "2018-11-30 11:11:28", time.Local) /* 1.处理量 2.处理率 3.通过率 4.平均耗时 */ metas := []*ReportMeta{ {Mtime: xtime.Time(time1.Unix()), Content: `{"ds":10,"dy":5,"rl":5,"rs_-1":1,"st_3_1":2,"st_4_0":2,"st_4_736":1,"ut":10}`, UID: 1, Uname: "1", }, {Mtime: xtime.Time(time1.Unix()), Content: `{"ds":5,"dy":5,"rl":5,"rs_-1":1,"rs_0":3,"st_3_1":2,"st_4_0":2,"st_4_736":1,"ut":10}`, UID: 1, Uname: "1", }, {Mtime: xtime.Time(time1.Unix()), Content: `{"ds":5,"dy":0,"rl":0,"rs_-1":1,"rs_0":3,"st_3_1":1,"st_4_0":2,"st_4_736":1,"ut":10}`, UID: 1, Uname: "1", }, {Mtime: xtime.Time(time1.Unix()), Content: `{"ds":0,"st_3_0":1,"ut":0} `, UID: 2, Uname: "2", }, {Mtime: xtime.Time(time1.Unix()), Content: `{"ds":0,"st_3_0":1,"ut":0}`, UID: 2, Uname: "2", }, {Mtime: xtime.Time(time1.Unix()), Content: `{"ds":5,"rs_0":5,"st_3_2":5,"ut":21}`, UID: 2, Uname: "2", }, {Mtime: xtime.Time(time1.Unix()), Content: `{"ds":2}`, UID: 3, Uname: "3", }, {Mtime: xtime.Time(time1.Unix()), Content: `{"ds":0,"rl":2}`, UID: 3, Uname: "3", }, {Mtime: xtime.Time(time1.Unix()), Content: `{"ds":0,"st_4_4":4,"ut":0} `, UID: 4, Uname: "4", }, } res, _ := GenMemberStat(metas, 0) bs, _ := json.Marshal(res) fmt.Printf("%s\n", string(bs)) t.Fail() } func Test_Column(t *testing.T) { column := `[ { "name":"id", "chname":"呵呵" },{ "name":"id2", "chname":"呵呵", "enum":{ "1":"上", "2":"下" } } ]` cs := []*Column{} e := json.Unmarshal([]byte(column), &cs) fmt.Println(e) fmt.Printf("cs:%+v\n", cs) t.Fail() } func TestLogFieldTemp(t *testing.T) { s := LogFieldTemp(LogFieldPID, 1, 0, true) convey.Convey("LogFieldTemp", t, func() { convey.So(s, convey.ShouldNotEqual, "") }) } func TestGetEmptyInfo(t *testing.T) { s := GetEmptyInfo() convey.Convey("GetEmptyInfo", t, func() { convey.So(s, convey.ShouldNotBeNil) }) } func TestEmptyListItem(t *testing.T) { s := EmptyListItem() convey.Convey("EmptyListItem", t, func() { convey.So(s, convey.ShouldNotBeNil) }) }