Files
go-sip/deploys/test/saas-mock/main.go
T

37 lines
1.4 KiB
Go

// saas-mock serves approved, static SaaS test snapshots through the formal
// Dispatcher configuration API. It never creates calls or publishes MQ jobs.
package main
import (
"errors"
"flag"
"log"
"net/http"
"os"
"time"
)
func main() {
dataDir := flag.String("data", "", "private directory with sip.json, providers.json, quota.json and tasks/*.json")
dispatcherID := flag.String("dispatcher-id", "", "approved test Dispatcher UUID")
listen := flag.String("listen", "", "explicit HTTPS listen address")
cert := flag.String("tls-cert", "", "HTTPS certificate file")
key := flag.String("tls-key", "", "HTTPS private key file")
flag.Parse()
secret := os.Getenv("SAAS_MOCK_DISPATCHER_SECRET")
brokerURL := os.Getenv("SAAS_MOCK_RABBITMQ_URL")
if *dataDir == "" || *dispatcherID == "" || *listen == "" || *cert == "" || *key == "" || secret == "" || brokerURL == "" || flag.NArg() != 0 {
log.Fatal(errors.New("data, dispatcher-id, listen, tls-cert, tls-key, SAAS_MOCK_DISPATCHER_SECRET and SAAS_MOCK_RABBITMQ_URL are required"))
}
data, err := loadDataset(*dataDir, *dispatcherID)
if err != nil {
log.Fatal(err)
}
if err := provisionMQ(brokerURL, data); err != nil {
log.Fatal(err)
}
log.Printf("SaaS test configuration and MQ topology ready: tasks=%d dispatcher=%s", len(data.tasks), *dispatcherID)
server := http.Server{Addr: *listen, Handler: data.handler(secret), ReadHeaderTimeout: 5 * time.Second}
log.Fatal(server.ListenAndServeTLS(*cert, *key))
}