From 23a956787190094e28de7dba5bd26c44b7a80a67 Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Mon, 26 Feb 2024 23:38:49 +0100 Subject: [PATCH] Added more test accounts --- server/game/Database.go | 53 ++++++++++++++++++++++------------------- server/go.mod | 2 +- stresstest/go.mod | 2 +- stresstest/main.go | 39 +++++++++++++++++++++--------- 4 files changed, 58 insertions(+), 38 deletions(-) diff --git a/server/game/Database.go b/server/game/Database.go index d093691..0359fac 100644 --- a/server/game/Database.go +++ b/server/game/Database.go @@ -1,30 +1,33 @@ package game -var accounts = map[string]*Account{ - "user0": { - ID: "4J6qpK1ve", - Name: "user0", - Password: "password", - Position: Vector3{3, 0, 0}, - }, - "user1": { - ID: "I_vyeZamg", - Name: "user1", - Password: "password", - Position: Vector3{-3, 0, 0}, - }, - "user2": { - ID: "VJOK1ckvx", - Name: "user2", - Password: "password", - Position: Vector3{0, 0, 3}, - }, - "user3": { - ID: "EkCcqbwFl", - Name: "user3", - Password: "password", - Position: Vector3{0, 0, -3}, - }, +import ( + "fmt" + "math" + "math/rand" +) + +var ( + SpawnPoint = Vector3{584.98, 9.5, 394.68} + accounts = map[string]*Account{} +) + +func init() { + MakeTestAccounts() +} + +// MakeTestAccounts creates accounts for stress testing. +func MakeTestAccounts() { + for i := range 500 { + angle := rand.Float64() * math.Pi * 2 + distance := rand.Float64() * 12.0 + + accounts[fmt.Sprintf("user%d", i)] = &Account{ + ID: fmt.Sprintf("id%d", i), + Name: fmt.Sprintf("user%d", i), + Password: "password", + Position: Vector3{SpawnPoint.X + float32(math.Cos(angle)*distance), SpawnPoint.Y, SpawnPoint.Z + float32(math.Sin(angle)*distance)}, + } + } } // GetAccountByName retrieves the account with the given name. diff --git a/server/go.mod b/server/go.mod index fba5bef..982beb7 100644 --- a/server/go.mod +++ b/server/go.mod @@ -1,3 +1,3 @@ module server -go 1.21.6 +go 1.22 diff --git a/stresstest/go.mod b/stresstest/go.mod index b6ebb6f..f81ace3 100644 --- a/stresstest/go.mod +++ b/stresstest/go.mod @@ -1,3 +1,3 @@ module stresstest -go 1.21.6 +go 1.22 diff --git a/stresstest/main.go b/stresstest/main.go index b2041f0..1fde340 100644 --- a/stresstest/main.go +++ b/stresstest/main.go @@ -1,6 +1,9 @@ package main import ( + "crypto/sha256" + "encoding/hex" + "encoding/json" "flag" "fmt" "net" @@ -15,11 +18,19 @@ var ( message = []byte{1, 0} ) -func init() { +func main() { flag.Parse() + wg := sync.WaitGroup{} + + for i := 0; i < *numClients; i++ { + wg.Add(1) + go udpClient(&wg, i) + } + + wg.Wait() } -func udpClient(wg *sync.WaitGroup) { +func udpClient(wg *sync.WaitGroup, id int) { defer wg.Done() clientAddr, err := net.ResolveUDPAddr("udp", *address) @@ -38,6 +49,18 @@ func udpClient(wg *sync.WaitGroup) { defer conn.Close() + loginRequest := [2]string{fmt.Sprintf("user%d", id+1), sha256Text("password")} + data, err := json.Marshal(loginRequest) + + if err != nil { + fmt.Println("Error creating JSON:", err) + return + } + + request := append([]byte{2}, data...) + fmt.Println(string(request)) + conn.Write(request) + for { _, err := conn.Write(message) @@ -50,13 +73,7 @@ func udpClient(wg *sync.WaitGroup) { } } -func main() { - wg := sync.WaitGroup{} - - for i := 0; i < *numClients; i++ { - wg.Add(1) - go udpClient(&wg) - } - - wg.Wait() +func sha256Text(password string) string { + sum := sha256.Sum256([]byte(password)) + return hex.EncodeToString(sum[:]) }