cmd/moxy/main.go (42 lines of code) (raw):
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License 2.0;
// you may not use this file except in compliance with the Elastic License 2.0.
package main
import (
"flag"
"fmt"
"net/http"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"github.com/elastic/apm-perf/internal/proxy"
)
func main() {
logLevel := zap.LevelFlag(
"loglevel", zapcore.InfoLevel,
"set log level to one of: DEBUG, INFO (default), WARN, ERROR, DPANIC, PANIC, FATAL",
)
username := flag.String("username", "elastic", "authentication username to mimic ES")
password := flag.String("password", "", "authentication username to mimic ES")
port := flag.Int("port", 9200, "http port to listen on")
flag.Parse()
zapcfg := zap.NewProductionConfig()
zapcfg.EncoderConfig.EncodeTime = zapcore.RFC3339TimeEncoder
zapcfg.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
zapcfg.Encoding = "console"
zapcfg.Level = zap.NewAtomicLevelAt(*logLevel)
logger, err := zapcfg.Build()
if err != nil {
panic(err)
}
defer logger.Sync()
options := []proxy.StubESOption{
proxy.StubESWithLogger(logger),
}
if *username != "" && *password != "" {
options = append(options, proxy.StubESWithAuth(*username, *password))
}
s := http.Server{
Addr: fmt.Sprintf(":%d", *port),
Handler: proxy.NewHandlerStubES(options...),
}
if err := s.ListenAndServe(); err != nil {
logger.Fatal("listen error", zap.Error(err))
}
}