123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package main
- import (
- "flag"
- "fmt"
- "os"
- "os/signal"
- "syscall"
- "time"
- )
- var (
- //Global variables
- stopchan chan bool
- //Runtime flags
- benchmarkWebserverListeningPort int
- )
- func init() {
- flag.IntVar(&benchmarkWebserverListeningPort, "port", 8123, "Port to listen on")
- flag.Parse()
- }
- /* SIGTERM handler, do shutdown sequences before closing */
- func SetupCloseHandler() {
- c := make(chan os.Signal, 2)
- signal.Notify(c, os.Interrupt, syscall.SIGTERM)
- go func() {
- <-c
- //Stop all request loops
- fmt.Println("Stopping request generators")
- if stopchan != nil {
- stopchan <- true
- }
- // Wait for all goroutines to finish
- time.Sleep(1 * time.Second)
- os.Exit(0)
- }()
- }
- func main() {
- //Setup the SIGTERM handler
- SetupCloseHandler()
- //Start the web server
- fmt.Println("Starting web server on port", benchmarkWebserverListeningPort)
- fmt.Println("In Zoraxy, point your test proxy rule to this server at the given port")
- startWebServer()
- select {}
- }
|