test_game_race.go 2.02 KB
Newer Older
hujiebin's avatar
1  
hujiebin committed
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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
package main

import (
	"fmt"
	"git.hilo.cn/hilo-common/script/model"
	"git.hilo.cn/hilo-common/script/mysql"
	"git.hilo.cn/hilo-common/script/utils/jwt"
	"io/ioutil"
	"math/rand"
	"net/http"
	"strings"
	"time"
)

func init() {
	rand.Seed(time.Now().UnixNano())
}

var raceUserCodes = []string{"1000653", "1000516", "1000675", "1000890", "1000755", "1000593", "1000629", "1000634", "1000765",
	"1000591", "1000633", "1000224", "1000611", "1000689", "1000467", "1000384", "1000367", "1000623"}
var raceAmounts = []int{10, 100, 1000, 5000}

func main() {
	var users []model.User
	if err := mysql.TestDB.Model(model.User{}).Where("code in ?", raceUserCodes).Find(&users).Error; err != nil {
		panic(err)
	}
	for i := 0; i < 10; i++ {
		go func() {
			for {
				times := 20 + rand.Intn(30)
				for i := 0; i < times; i++ {

					arr := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
					rand.Shuffle(len(arr), func(i, j int) {
						arr[i], arr[j] = arr[j], arr[i]
					})
					for _, id := range arr {
						if rand.Intn(100) < 30 {
							break
						}
						url := "https://test.apiv1.faceline.live/v1/race/"
						method := "POST"
						amount := raceAmounts[rand.Intn(len(raceAmounts))]
						payload := strings.NewReader(fmt.Sprintf("raceId=%d&amount=%d", id, amount))

						client := &http.Client{}
						req, err := http.NewRequest(method, url, payload)

						if err != nil {
							fmt.Println(err)
							return
						}
						u := users[rand.Intn(len(users))]
						token, _ := jwt.GenerateToken(u.Id, u.ExternalId, "hiloApi")
						req.Header.Add("nonce", "hilo")
						req.Header.Add("token", token)
						req.Header.Add("Content-Type", "application/x-www-form-urlencoded")

						res, err := client.Do(req)
						if err != nil {
							fmt.Println(err)
							return
						}
						defer res.Body.Close()

						body, err := ioutil.ReadAll(res.Body)
						if err != nil {
							fmt.Println(err)
							return
						}
						fmt.Printf("body:%v,uid:%v\n", string(body), u.Id)
					}
				}
				//time.Sleep(time.Second * 55)
			}
		}()
	}
	time.Sleep(time.Hour * 24)
}