remove sitetest
This commit is contained in:
parent
e25f679ea6
commit
fd3199a83c
|
@ -1,111 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"flag"
|
|
||||||
"fmt"
|
|
||||||
"github.com/fthvgb1/wp-go/helper/httptool"
|
|
||||||
strings2 "github.com/fthvgb1/wp-go/helper/strings"
|
|
||||||
"github.com/fthvgb1/wp-go/safety"
|
|
||||||
"github.com/fthvgb1/wp-go/taskPools"
|
|
||||||
"net/http"
|
|
||||||
"os"
|
|
||||||
"regexp"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
)
|
|
||||||
|
|
||||||
var reg = regexp.MustCompile(`<a.*href="([^"]+?)".*?>`)
|
|
||||||
var m = safety.NewMap[string, bool]()
|
|
||||||
|
|
||||||
var mut = sync.Mutex{}
|
|
||||||
|
|
||||||
func parseHtml(ss string) {
|
|
||||||
r := reg.FindAllStringSubmatch(ss, -1)
|
|
||||||
|
|
||||||
for _, href := range r {
|
|
||||||
if href[1] == "/" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if strings.ContainsAny(href[1], ".") {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if string([]rune(href[1])[0:3]) == "http" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
mut.Lock()
|
|
||||||
if _, ok := m.Load(href[1]); !ok {
|
|
||||||
m.Store(href[1], false)
|
|
||||||
}
|
|
||||||
mut.Unlock()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func siteFetch(c int, u string) {
|
|
||||||
u = strings.TrimRight(u, "/")
|
|
||||||
ss, code, err := httptool.GetString(u, nil)
|
|
||||||
if err != nil || code != http.StatusOK {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
parseHtml(ss)
|
|
||||||
|
|
||||||
p := taskPools.NewPools(c)
|
|
||||||
for {
|
|
||||||
m.Range(func(key string, value bool) bool {
|
|
||||||
if value {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
u := strings2.Join(u, key)
|
|
||||||
p.Execute(func() {
|
|
||||||
ss, code, err := httptool.GetString(u, nil)
|
|
||||||
fmt.Println(u, code)
|
|
||||||
if err != nil || code != http.StatusOK {
|
|
||||||
panic(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
parseHtml(ss)
|
|
||||||
m.Store(key, true)
|
|
||||||
})
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
var x bool
|
|
||||||
m.Range(func(key string, value bool) bool {
|
|
||||||
if !value {
|
|
||||||
x = true
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
if !x {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
p.Wait()
|
|
||||||
m.Flush()
|
|
||||||
}
|
|
||||||
|
|
||||||
var c int
|
|
||||||
var u string
|
|
||||||
var t int
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
flag.IntVar(&c, "c", 10, "concurrency num")
|
|
||||||
flag.StringVar(&u, "url", "http://127.0.0.1:8081", "test url")
|
|
||||||
flag.IntVar(&t, "t", 1, "request full site times")
|
|
||||||
flag.Parse()
|
|
||||||
if u == "" {
|
|
||||||
fmt.Println("url can't emtpy")
|
|
||||||
os.Exit(2)
|
|
||||||
}
|
|
||||||
if c < 1 {
|
|
||||||
fmt.Println("concurrency num must >= 1")
|
|
||||||
os.Exit(2)
|
|
||||||
}
|
|
||||||
if t < 1 {
|
|
||||||
for {
|
|
||||||
siteFetch(c, u)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for i := 0; i < t; i++ {
|
|
||||||
siteFetch(c, u)
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user