style: Apply go fmt to go code (#2046)

~I will add pre-commit hook later if I find a good one~

Found a nice repo, but it is no longer maintained:
https://github.com/dnephin/pre-commit-golang
So, I implemented the check as a local hook.
This commit is contained in:
Ayaz Salikhov
2025-04-28 16:04:50 +01:00
committed by GitHub
parent bebc683ba2
commit 424af5dfe0
6 changed files with 75 additions and 52 deletions

View File

@@ -30,3 +30,12 @@ repos:
hooks: hooks:
- id: prettier - id: prettier
exclude: ^docs/doxygen-awesome-theme/ exclude: ^docs/doxygen-awesome-theme/
- repo: local
hooks:
- id: gofmt
name: Go Format
entry: pre-commit-hooks/run-go-fmt.sh
types: [go]
language: golang
description: "Runs `gofmt`, requires golang"

14
pre-commit-hooks/run-go-fmt.sh Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env bash
#
# Capture and print stdout, since gofmt doesn't use proper exit codes
#
set -e -o pipefail
if ! command -v gofmt &> /dev/null ; then
echo "gofmt not installed or available in the PATH" >&2
exit 1
fi
output="$(gofmt -l -w "$@")"
echo "$output"
[[ -z "$output" ]]

View File

@@ -8,22 +8,22 @@ import (
) )
type AmmoProvider struct { type AmmoProvider struct {
ammo []string ammo []string
currentBullet atomic.Uint64 currentBullet atomic.Uint64
} }
func (ap *AmmoProvider) getIndex() uint64 { func (ap *AmmoProvider) getIndex() uint64 {
result := ap.currentBullet.Add(1) result := ap.currentBullet.Add(1)
return result % uint64(len(ap.ammo)) return result % uint64(len(ap.ammo))
} }
func (ap *AmmoProvider) GetBullet() string { func (ap *AmmoProvider) GetBullet() string {
for { for {
res := ap.ammo[ap.getIndex()] res := ap.ammo[ap.getIndex()]
if !strings.HasPrefix(res, "#") { if !strings.HasPrefix(res, "#") {
return res return res
} }
} }
} }
func New(reader io.Reader) *AmmoProvider { func New(reader io.Reader) *AmmoProvider {

View File

@@ -7,7 +7,7 @@ import (
) )
type CliArgs struct { type CliArgs struct {
Host string Host string
Port uint Port uint
TargetLoad uint TargetLoad uint
Ammo string Ammo string
@@ -23,7 +23,7 @@ func Parse() (*CliArgs, error) {
target_load := flag.UintP("load", "l", 100, "Target requests per second load") target_load := flag.UintP("load", "l", 100, "Target requests per second load")
print_errors := flag.BoolP("print-errors", "e", false, "Print errors") print_errors := flag.BoolP("print-errors", "e", false, "Print errors")
help := flag.BoolP("help", "h", false, "Print help message") help := flag.BoolP("help", "h", false, "Print help message")
ws := flag.BoolP("ws", "w", false, "Use websocket") ws := flag.BoolP("ws", "w", false, "Use websocket")
flag.Parse() flag.Parse()

View File

@@ -4,12 +4,12 @@ import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"github.com/gorilla/websocket"
"io" "io"
"net/http" "net/http"
"net/url" "net/url"
"strings" "strings"
"time" "time"
"github.com/gorilla/websocket"
) )
type RequestMaker interface { type RequestMaker interface {
@@ -17,11 +17,11 @@ type RequestMaker interface {
} }
type WebSocketClient struct { type WebSocketClient struct {
conn *websocket.Conn conn *websocket.Conn
} }
type HttpRequestMaker struct { type HttpRequestMaker struct {
host string host string
transport *http.Transport transport *http.Transport
client *http.Client client *http.Client
} }
@@ -38,10 +38,10 @@ type ResponseData struct {
func (h *HttpRequestMaker) MakeRequest(request string) (*ResponseData, error) { func (h *HttpRequestMaker) MakeRequest(request string) (*ResponseData, error) {
startTime := time.Now() startTime := time.Now()
req, err := http.NewRequest("POST", h.host, strings.NewReader(request)) req, err := http.NewRequest("POST", h.host, strings.NewReader(request))
if err != nil { if err != nil {
return nil, errors.New("Error creating request: " + err.Error()) return nil, errors.New("Error creating request: " + err.Error())
} }
response, err := h.client.Do(req) response, err := h.client.Do(req)
requestDuration := time.Since(startTime) requestDuration := time.Since(startTime)
@@ -80,12 +80,12 @@ func NewHttp(host string, port uint) *HttpRequestMaker {
} }
func NewWebSocketClient(host string, port uint) (*WebSocketClient, error) { func NewWebSocketClient(host string, port uint) (*WebSocketClient, error) {
var u url.URL var u url.URL
if !strings.HasPrefix(host, "ws://") && !strings.HasPrefix(host, "wss://") { if !strings.HasPrefix(host, "ws://") && !strings.HasPrefix(host, "wss://") {
u = url.URL{Scheme: "ws", Host: host + ":" + fmt.Sprintf("%d", port), Path: "/"} u = url.URL{Scheme: "ws", Host: host + ":" + fmt.Sprintf("%d", port), Path: "/"}
} else { } else {
u = url.URL{Host: host + ":" + fmt.Sprintf("%d", port), Path: "/"} u = url.URL{Host: host + ":" + fmt.Sprintf("%d", port), Path: "/"}
} }
conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil) conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
if err != nil { if err != nil {
return nil, errors.New("Error connecting to WebSocket: " + err.Error()) return nil, errors.New("Error connecting to WebSocket: " + err.Error())
@@ -95,24 +95,24 @@ func NewWebSocketClient(host string, port uint) (*WebSocketClient, error) {
// SendMessage sends a message to the WebSocket server // SendMessage sends a message to the WebSocket server
func (ws *WebSocketClient) SendMessage(message string) (*ResponseData, error) { func (ws *WebSocketClient) SendMessage(message string) (*ResponseData, error) {
defer ws.conn.Close() defer ws.conn.Close()
start := time.Now() start := time.Now()
err := ws.conn.WriteMessage(websocket.TextMessage, []byte(message)) err := ws.conn.WriteMessage(websocket.TextMessage, []byte(message))
if err != nil { if err != nil {
return nil, errors.New("Error sending ws message: " + err.Error()) return nil, errors.New("Error sending ws message: " + err.Error())
} }
var msg []byte var msg []byte
err = ws.conn.SetReadDeadline(time.Now().Add(5 * time.Second)) err = ws.conn.SetReadDeadline(time.Now().Add(5 * time.Second))
if err != nil { if err != nil {
return nil, errors.New("Error setting timeout: " + err.Error()) return nil, errors.New("Error setting timeout: " + err.Error())
} }
_, msg, err = ws.conn.ReadMessage() _, msg, err = ws.conn.ReadMessage()
if err != nil { if err != nil {
return nil, errors.New("Error reading message: " + err.Error()) return nil, errors.New("Error reading message: " + err.Error())
} }
requestDuration := time.Since(start) requestDuration := time.Since(start)
ws.conn.Close() ws.conn.Close()
var response JsonMap var response JsonMap
err = json.Unmarshal(msg, &response) err = json.Unmarshal(msg, &response)

View File

@@ -10,25 +10,25 @@ import (
func main() { func main() {
args, err := parse_args.Parse() args, err := parse_args.Parse()
if err != nil { if err != nil {
fmt.Fprintln(os.Stderr, "Error: ", err) fmt.Fprintln(os.Stderr, "Error: ", err)
parse_args.PrintUsage() parse_args.PrintUsage()
os.Exit(1) os.Exit(1)
} }
if args.Help { if args.Help {
parse_args.PrintUsage() parse_args.PrintUsage()
os.Exit(0) os.Exit(0)
} }
fmt.Print("Loading ammo... ") fmt.Print("Loading ammo... ")
f, err := os.Open(args.Ammo) f, err := os.Open(args.Ammo)
if err != nil { if err != nil {
fmt.Println("Error opening file '", args.Ammo, "': ", err) fmt.Println("Error opening file '", args.Ammo, "': ", err)
os.Exit(1) os.Exit(1)
} }
ammoProvider := ammo_provider.New(f) ammoProvider := ammo_provider.New(f)
f.Close() f.Close()
fmt.Println("Done") fmt.Println("Done")
fmt.Println("Firing requests...") fmt.Println("Firing requests...")