From: qydysky Date: Thu, 12 May 2022 16:36:20 +0000 (+0800) Subject: fix X-Git-Tag: v0.9.9 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=36d01dce86ef114bb7433c686e4d5322b20cfb3f;p=part%2F.git fix --- diff --git a/msgq/Msgq_test.go b/msgq/Msgq_test.go index a226f7e..b2952d3 100644 --- a/msgq/Msgq_test.go +++ b/msgq/Msgq_test.go @@ -1,12 +1,13 @@ package part import ( - "time" "fmt" "net/http" _ "net/http/pprof" "testing" - p "github.com/qydysky/part" + "time" + + sys "github.com/qydysky/part/sys" ) type test_item struct { @@ -15,31 +16,34 @@ type test_item struct { func Test_msgq(t *testing.T) { - mq := New(5) mun := 100000 - mun_c := make(chan bool,mun) - mun_s := make(chan bool,mun) + mun_c := make(chan bool, mun) + mun_s := make(chan bool, mun) var e int sig := mq.Sig() - for i:=0;i`,len(mun_c)) - p.Sys().Timeoutf(1) + t.Log(`>`, len(mun_c)) + sys.Sys().Timeoutf(1) } - t.Log(`>`,len(mun_c)) + t.Log(`>`, len(mun_c)) t.Log(`push mmm`) mq.Push(`mmm`) @@ -47,63 +51,71 @@ func Test_msgq(t *testing.T) { mq.Push(`mm1`) for len(mun_s) != mun { - t.Log(`<`,len(mun_s)) - p.Sys().Timeoutf(1) + t.Log(`<`, len(mun_s)) + sys.Sys().Timeoutf(1) } - t.Log(`<`,len(mun_s)) + t.Log(`<`, len(mun_s)) - if e!=0 {t.Error(e)} + if e != 0 { + t.Error(e) + } } func Test_msgq2(t *testing.T) { mq := New(5) - mun_c := make(chan bool,100) - go func(){ + mun_c := make(chan bool, 100) + go func() { var ( - sig = mq.Sig() + sig = mq.Sig() data interface{} ) for { - data,sig = mq.Pull(sig) - if data.(test_item).data != `aa1` {t.Error(`1`)} + data, sig = mq.Pull(sig) + if data.(test_item).data != `aa1` { + t.Error(`1`) + } mun_c <- true } - }() - go func(){ + }() + go func() { var ( - sig = mq.Sig() + sig = mq.Sig() data interface{} ) for { - data,sig = mq.Pull(sig) - if data.(test_item).data != `aa1` {t.Error(`2`)} + data, sig = mq.Pull(sig) + if data.(test_item).data != `aa1` { + t.Error(`2`) + } mun_c <- true } }() - go func(){ + go func() { var ( - sig = mq.Sig() + sig = mq.Sig() data interface{} ) for { - data,sig = mq.Pull(sig) - if data.(test_item).data != `aa1` {t.Error(`3`)} + data, sig = mq.Pull(sig) + if data.(test_item).data != `aa1` { + t.Error(`3`) + } mun_c <- true } - }() + }() var fin_turn = 0 t.Log(`start`) time.Sleep(time.Second) for fin_turn < 1000000 { mq.Push(test_item{ - data:`aa1`, + data: `aa1`, }) <-mun_c <-mun_c <-mun_c fin_turn += 1 - fmt.Print("\r",fin_turn) + fmt.Print("\r", fin_turn) } t.Log(`fin`) } @@ -111,10 +123,12 @@ func Test_msgq2(t *testing.T) { func Test_msgq3(t *testing.T) { mq := New(100) - mun_c := make(chan int,100) - mq.Pull_tag(map[string]func(interface{})(bool){ - `A1`:func(data interface{})(bool){ - if v,ok := data.(int);ok {mun_c <- v} + mun_c := make(chan int, 100) + mq.Pull_tag(map[string]func(interface{}) bool{ + `A1`: func(data interface{}) bool { + if v, ok := data.(int); ok { + mun_c <- v + } return false }, }) @@ -123,45 +137,57 @@ func Test_msgq3(t *testing.T) { t.Log(`start`) time.Sleep(time.Second) for fin_turn < 1000000 { - mq.Push_tag(`A1`,fin_turn) - if fin_turn != <-mun_c {t.Error(fin_turn)} + mq.Push_tag(`A1`, fin_turn) + if fin_turn != <-mun_c { + t.Error(fin_turn) + } fin_turn += 1 - fmt.Print("\r",fin_turn) + fmt.Print("\r", fin_turn) } t.Log(`fin`) } func Test_msgq4(t *testing.T) { // mq := New(30) - mq := New(3)//out of list + mq := New(3) //out of list - mun_c1 := make(chan bool,100) - mun_c2 := make(chan bool,100) - mun_c3 := make(chan bool,100) - mq.Pull_tag(map[string]func(interface{})(bool){ - `A1`:func(data interface{})(bool){ - if v,ok := data.(string);!ok || v != `a11`{t.Error(`1`)} + mun_c1 := make(chan bool, 100) + mun_c2 := make(chan bool, 100) + mun_c3 := make(chan bool, 100) + mq.Pull_tag(map[string]func(interface{}) bool{ + `A1`: func(data interface{}) bool { + if v, ok := data.(string); !ok || v != `a11` { + t.Error(`1`) + } mun_c1 <- true return false }, - `A2`:func(data interface{})(bool){ - if v,ok := data.(string);!ok || v != `a11`{t.Error(`2`)} + `A2`: func(data interface{}) bool { + if v, ok := data.(string); !ok || v != `a11` { + t.Error(`2`) + } mun_c2 <- true return false }, - `Error`:func(data interface{})(bool){ - if data == nil {t.Error(`out of list`)} + `Error`: func(data interface{}) bool { + if data == nil { + t.Error(`out of list`) + } return false }, }) - mq.Pull_tag(map[string]func(interface{})(bool){ - `A1`:func(data interface{})(bool){ - if v,ok := data.(string);!ok || v != `a11`{t.Error(`2`)} + mq.Pull_tag(map[string]func(interface{}) bool{ + `A1`: func(data interface{}) bool { + if v, ok := data.(string); !ok || v != `a11` { + t.Error(`2`) + } mun_c3 <- true return false }, - `Error`:func(data interface{})(bool){ - if data == nil {t.Error(`out of list`)} + `Error`: func(data interface{}) bool { + if data == nil { + t.Error(`out of list`) + } return false }, }) @@ -170,19 +196,19 @@ func Test_msgq4(t *testing.T) { t.Log(`start`) time.Sleep(time.Second) for fin_turn < 5 { - go mq.Push_tag(`A1`,`a11`) - go mq.Push_tag(`A1`,`a11`) - go mq.Push_tag(`A1`,`a11`) + go mq.Push_tag(`A1`, `a11`) + go mq.Push_tag(`A1`, `a11`) + go mq.Push_tag(`A1`, `a11`) // mq.Push_tag(`A4`,`a11`) - go mq.Push_tag(`A1`,`a11`) - mq.Push_tag(`A1`,`a11`) - mq.Push_tag(`A2`,`a11`) + go mq.Push_tag(`A1`, `a11`) + mq.Push_tag(`A1`, `a11`) + mq.Push_tag(`A2`, `a11`) // mq.Push_tag(`A4`,`a11`) - <-mun_c2 + <-mun_c2 <-mun_c1 // <-mun_c3 fin_turn += 1 - fmt.Print("\r",fin_turn) + fmt.Print("\r", fin_turn) } t.Log(`fin`) } @@ -190,49 +216,59 @@ func Test_msgq4(t *testing.T) { func Test_msgq5(t *testing.T) { mq := New(30) - mun_c1 := make(chan bool,100) - mun_c2 := make(chan bool,100) - go mq.Pull_tag(map[string]func(interface{})(bool){ - `A1`:func(data interface{})(bool){ - time.Sleep(time.Second)//will block + mun_c1 := make(chan bool, 100) + mun_c2 := make(chan bool, 100) + go mq.Pull_tag(map[string]func(interface{}) bool{ + `A1`: func(data interface{}) bool { + time.Sleep(time.Second) //will block return false }, - `A2`:func(data interface{})(bool){ - if v,ok := data.(string);!ok || v != `a11`{t.Error(`2`)} + `A2`: func(data interface{}) bool { + if v, ok := data.(string); !ok || v != `a11` { + t.Error(`2`) + } mun_c2 <- true return false }, - `Error`:func(data interface{})(bool){ - if data == nil {t.Error(`out of list`)} + `Error`: func(data interface{}) bool { + if data == nil { + t.Error(`out of list`) + } return false }, }) - mq.Pull_tag(map[string]func(interface{})(bool){ - `A1`:func(data interface{})(bool){ - if v,ok := data.(string);!ok || v != `a11`{t.Error(`1`)} + mq.Pull_tag(map[string]func(interface{}) bool{ + `A1`: func(data interface{}) bool { + if v, ok := data.(string); !ok || v != `a11` { + t.Error(`1`) + } mun_c1 <- true return false }, - `A2`:func(data interface{})(bool){ - if v,ok := data.(string);!ok || v != `a11`{t.Error(`2`)} + `A2`: func(data interface{}) bool { + if v, ok := data.(string); !ok || v != `a11` { + t.Error(`2`) + } return false }, - `Error`:func(data interface{})(bool){ - if data == nil {t.Error(`out of list`)} + `Error`: func(data interface{}) bool { + if data == nil { + t.Error(`out of list`) + } return false }, }) - + var fin_turn = 0 t.Log(`start`) time.Sleep(time.Second) for fin_turn < 10 { - mq.Push_tag(`A1`,`a11`) - mq.Push_tag(`A2`,`a11`) + mq.Push_tag(`A1`, `a11`) + mq.Push_tag(`A2`, `a11`) <-mun_c1 <-mun_c2 fin_turn += 1 - fmt.Print("\r",fin_turn) + fmt.Print("\r", fin_turn) } t.Log(`fin`) } @@ -242,28 +278,32 @@ func Test_msgq6(t *testing.T) { go func() { http.ListenAndServe("0.0.0.0:8899", nil) }() - go mq.Pull_tag(map[string]func(interface{})(bool){ - `A1`:func(data interface{})(bool){ + go mq.Pull_tag(map[string]func(interface{}) bool{ + `A1`: func(data interface{}) bool { return false }, - `A2`:func(data interface{})(bool){ - if v,ok := data.(string);!ok || v != `a11`{t.Error(`2`)} + `A2`: func(data interface{}) bool { + if v, ok := data.(string); !ok || v != `a11` { + t.Error(`2`) + } return false }, - `Error`:func(data interface{})(bool){ - if data == nil {t.Error(`out of list`)} + `Error`: func(data interface{}) bool { + if data == nil { + t.Error(`out of list`) + } return false }, }) - + var fin_turn = 0 t.Log(`start`) for fin_turn < 1000 { time.Sleep(time.Second) time.Sleep(time.Second) - mq.Push_tag(`A1`,`a11`) - fin_turn+=1 - fmt.Print("\r",fin_turn) + mq.Push_tag(`A1`, `a11`) + fin_turn += 1 + fmt.Print("\r", fin_turn) } t.Log(`fin`) } diff --git a/web/Web.go b/web/Web.go index fcdfbba..608429e 100644 --- a/web/Web.go +++ b/web/Web.go @@ -1,16 +1,17 @@ package part import ( - "net/http" - "time" - "strconv" "context" - p "github.com/qydysky/part" + "net/http" + "strconv" + "time" + + sys "github.com/qydysky/part/sys" ) type Web struct { Server *http.Server - mux *http.ServeMux + mux *http.ServeMux } func New(conf *http.Server) (o *Web) { @@ -18,7 +19,7 @@ func New(conf *http.Server) (o *Web) { o = new(Web) o.Server = conf - + if o.Server.Handler == nil { o.mux = http.NewServeMux() o.Server.Handler = o.mux @@ -29,24 +30,26 @@ func New(conf *http.Server) (o *Web) { return } -func (t *Web) Handle(path_func map[string]func(http.ResponseWriter,*http.Request)) { - for k,v := range path_func { - t.mux.HandleFunc(k,v) +func (t *Web) Handle(path_func map[string]func(http.ResponseWriter, *http.Request)) { + for k, v := range path_func { + t.mux.HandleFunc(k, v) } } -func Easy_boot() (*Web) { +func Easy_boot() *Web { s := New(&http.Server{ - Addr: "127.0.0.1:"+strconv.Itoa(p.Sys().GetFreePort()), - WriteTimeout: time.Second * time.Duration(10), + Addr: "127.0.0.1:" + strconv.Itoa(sys.Sys().GetFreePort()), + WriteTimeout: time.Second * time.Duration(10), }) - s.Handle(map[string]func(http.ResponseWriter,*http.Request){ - `/`:func(w http.ResponseWriter,r *http.Request){ + s.Handle(map[string]func(http.ResponseWriter, *http.Request){ + `/`: func(w http.ResponseWriter, r *http.Request) { var path string = r.URL.Path[1:] - if path == `` {path = `index.html`} + if path == `` { + path = `index.html` + } http.ServeFile(w, r, path) }, - `/exit`:func(w http.ResponseWriter,r *http.Request){ + `/exit`: func(w http.ResponseWriter, r *http.Request) { s.Server.Shutdown(context.Background()) }, })