Repository navigation
Expand file tree
/
Copy pathMakefile
More file actions
114 lines (92 loc) · 4.15 KB
/
Copy pathMakefile
File metadata and controls
114 lines (92 loc) · 4.15 KB
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
.PHONY: all deps build build-server build-client build-dummy-server build-dummy-client run run-dummy-server run-dummy-client run-test run-test-token-auth fmt help clean
CMD_DIR=cmd
LOGS_DIR=logs
BINARY_DIR=bin
CONFIGS_DIR=configs
SCRIPTS_DIR=scripts
BINARY_SERVER=server
BINARY_CLIENT=client
DUMMY_SERVER=dummy_server
DUMMY_CLIENT=dummy_client
DUMMY_SERVER_PORT=4321
DUMMY_SERVER_BIND_ADDRESS=0.0.0.0
DUMMY_SERVER_FULL_ADDRESS=$(DUMMY_SERVER_BIND_ADDRESS):$(DUMMY_SERVER_PORT)
CONFIGS_PORTME_SERVER=$(CONFIGS_DIR)/server.yaml
CONFIGS_PORTME_CLIENT=$(CONFIGS_DIR)/client.yaml
all: build
deps:
@echo "Downloading dependencies..."
GO111MODULE=on go mod download
build: build-server build-client build-dummy-server build-dummy-client
build-server: deps
@echo "Building server..."
@mkdir -p bin
GO111MODULE=on go build -o $(BINARY_DIR)/$(BINARY_SERVER) ./$(CMD_DIR)/$(BINARY_SERVER)
@echo "Build complete. Binaries: $(BINARY_DIR)/$(BINARY_SERVER)"
build-client: deps
@echo "Building client..."
@mkdir -p bin
GO111MODULE=on go build -o $(BINARY_DIR)/$(BINARY_CLIENT) ./$(CMD_DIR)/$(BINARY_CLIENT)
@echo "Build complete. Binaries: $(BINARY_DIR)/$(BINARY_CLIENT)"
build-dummy-server: deps
@echo "Building TCP Dummy server..."
@mkdir -p bin
GO111MODULE=on go build -o $(BINARY_DIR)/$(DUMMY_SERVER) ./$(CMD_DIR)/$(DUMMY_SERVER)
@echo "Build complete. Binaries: $(BINARY_DIR)/$(DUMMY_SERVER)"
build-dummy-client: deps
@echo "Building TCP Dummy client..."
@mkdir -p bin
GO111MODULE=on go build -o $(BINARY_DIR)/$(DUMMY_CLIENT) ./$(CMD_DIR)/$(DUMMY_CLIENT)
@echo "Build complete. Binaries: $(BINARY_DIR)/$(DUMMY_CLIENT)"
run-server: build-server
@echo "Running server..."
./$(BINARY_DIR)/$(BINARY_SERVER) --config $(CONFIGS_PORTME_SERVER)
run-client: build-client
@echo "Running client..."
./$(BINARY_DIR)/$(BINARY_CLIENT) --config $(CONFIGS_PORTME_CLIENT)
run-dummy-server: build-dummy-server
@echo "Starting TCP Dummy server on $(DUMMY_SERVER_FULL_ADDRESS)..."
./$(BINARY_DIR)/$(DUMMY_SERVER) --server $(DUMMY_SERVER_FULL_ADDRESS)
run-dummy-client: build-dummy-client
@echo "Connecting TCP Dummy client to $(DUMMY_SERVER_FULL_ADDRESS)..."
./$(BINARY_DIR)/$(DUMMY_CLIENT) $(DUMMY_SERVER_FULL_ADDRESS)
run-test: build build-dummy-server build-dummy-client
@echo "Running test..."
./$(SCRIPTS_DIR)/run-test.sh
run-test-token-auth: build build-dummy-server build-dummy-client
@echo "Running token auth test..."
export SERVER_AUTH_TOKEN="my_custom_token"
export CLIENT_AUTH_TOKEN="my_custom_token"
./$(SCRIPTS_DIR)/run-test.sh token_auth
test:
@echo "Running unit tests..."
GO111MODULE=on go test ./pkg/client -v
GO111MODULE=on go test ./pkg/config -v
GO111MODULE=on go test ./pkg/server -v
GO111MODULE=on go test ./pkg/utils -v
fmt:
@echo "Formatting Go code..."
go fmt ./...
clean:
@echo "Cleaning build artifacts..."
@rm -rf $(LOGS_DIR)/
@rm -rf $(BINARY_DIR)/
help:
@echo "Available targets:"
@echo " deps - Download and install Go dependencies"
@echo " build - Build all binaries (server, client, dummy-server, dummy-client)"
@echo " build-server - Build the PortMe TCP server binary"
@echo " build-client - Build the PortMe TCP client binary"
@echo " build-dummy-server - Build the TCP Dummy server binary"
@echo " build-dummy-client - Build the TCP Dummy client binary"
@echo " run - Build all binaries (same as build)"
@echo " run-server - Build and run the PortMe TCP server"
@echo " run-client - Build and run the PortMe TCP client"
@echo " run-dummy-server - Build and run the TCP Dummy server on $(DUMMY_SERVER_FULL_ADDRESS)"
@echo " run-dummy-client - Build and run the TCP Dummy client connecting to $(DUMMY_SERVER_FULL_ADDRESS)"
@echo " run-test - Build all binaries and run the comprehensive test suite"
@echo " run-test-token-auth - Build all binaries and run the comprehensive test suite"
@echo " fmt - Format Go source code using go fmt"
@echo " clean - Clean all build artifacts and binaries"
@echo " help - Show this help message"
@echo ""