52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
|
package restful
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"net/http"
|
||
|
"net/http/httptest"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func setupCurly(container *Container) []string {
|
||
|
wsCount := 26
|
||
|
rtCount := 26
|
||
|
urisCurly := []string{}
|
||
|
|
||
|
container.Router(CurlyRouter{})
|
||
|
for i := 0; i < wsCount; i++ {
|
||
|
root := fmt.Sprintf("/%s/{%s}/", string(i+97), string(i+97))
|
||
|
ws := new(WebService).Path(root)
|
||
|
for j := 0; j < rtCount; j++ {
|
||
|
sub := fmt.Sprintf("/%s2/{%s2}", string(j+97), string(j+97))
|
||
|
ws.Route(ws.GET(sub).Consumes("application/xml").Produces("application/xml").To(echoCurly))
|
||
|
}
|
||
|
container.Add(ws)
|
||
|
for _, each := range ws.Routes() {
|
||
|
urisCurly = append(urisCurly, "http://bench.com"+each.Path)
|
||
|
}
|
||
|
}
|
||
|
return urisCurly
|
||
|
}
|
||
|
|
||
|
func echoCurly(req *Request, resp *Response) {}
|
||
|
|
||
|
func BenchmarkManyCurly(b *testing.B) {
|
||
|
container := NewContainer()
|
||
|
urisCurly := setupCurly(container)
|
||
|
b.ResetTimer()
|
||
|
for t := 0; t < b.N; t++ {
|
||
|
for r := 0; r < 1000; r++ {
|
||
|
for _, each := range urisCurly {
|
||
|
sendNoReturnTo(each, container, t)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func sendNoReturnTo(address string, container *Container, t int) {
|
||
|
httpRequest, _ := http.NewRequest("GET", address, nil)
|
||
|
httpRequest.Header.Set("Accept", "application/xml")
|
||
|
httpWriter := httptest.NewRecorder()
|
||
|
container.dispatch(httpWriter, httpRequest)
|
||
|
}
|