forked from GoBelieveIO/im_service
/
benchmark_sender.go
65 lines (56 loc) · 1.28 KB
/
benchmark_sender.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package main
import "fmt"
import "net"
import "log"
import "runtime"
import "flag"
import "math/rand"
var first int64
var last int64
var host string
var port int
func init() {
flag.Int64Var(&first, "first", 0, "first uid")
flag.Int64Var(&last, "last", 0, "last uid")
flag.StringVar(&host, "host", "127.0.0.1", "host")
flag.IntVar(&port, "port", 23000, "port")
}
func send(uid int64) {
ip := net.ParseIP(host)
addr := net.TCPAddr{ip, port, ""}
conn, err := net.DialTCP("tcp4", nil, &addr)
if err != nil {
log.Println("connect error")
return
}
seq := 1
SendMessage(conn, &Message{MSG_AUTH, seq, DEFAULT_VERSION, &Authentication{uid: uid}})
ReceiveMessage(conn)
for i := 0; i < 18000; i++ {
r := rand.Int63()
receiver := r%(last-first) + first
log.Println("receiver:", receiver)
content := fmt.Sprintf("test....%d", i)
seq++
msg := &Message{MSG_IM, seq, DEFAULT_VERSION, &IMMessage{uid, receiver, 0, int32(i), content}}
SendMessage(conn, msg)
for {
ack := ReceiveMessage(conn)
if ack.cmd == MSG_ACK {
break
}
}
}
conn.Close()
log.Printf("%d send complete", uid)
}
func main() {
runtime.GOMAXPROCS(4)
flag.Parse()
fmt.Printf("first:%d, last:%d\n", first, last)
if last <= first {
return
}
log.SetFlags(log.Lshortfile | log.LstdFlags)
send(1)
}