2020-06-02 22:48:55 +08:00
|
|
|
package framework
|
|
|
|
|
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
)
|
|
|
|
|
|
|
|
type TestContextType struct {
|
|
|
|
FRPClientPath string
|
|
|
|
FRPServerPath string
|
|
|
|
LogLevel string
|
2020-09-07 14:57:23 +08:00
|
|
|
Debug bool
|
2020-06-02 22:48:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
var TestContext TestContextType
|
|
|
|
|
|
|
|
// RegisterCommonFlags registers flags common to all e2e test suites.
|
|
|
|
// The flag set can be flag.CommandLine (if desired) or a custom
|
|
|
|
// flag set that then gets passed to viperconfig.ViperizeFlags.
|
|
|
|
//
|
|
|
|
// The other Register*Flags methods below can be used to add more
|
|
|
|
// test-specific flags. However, those settings then get added
|
|
|
|
// regardless whether the test is actually in the test suite.
|
|
|
|
func RegisterCommonFlags(flags *flag.FlagSet) {
|
|
|
|
flags.StringVar(&TestContext.FRPClientPath, "frpc-path", "../../bin/frpc", "The frp client binary to use.")
|
|
|
|
flags.StringVar(&TestContext.FRPServerPath, "frps-path", "../../bin/frps", "The frp server binary to use.")
|
|
|
|
flags.StringVar(&TestContext.LogLevel, "log-level", "debug", "Log level.")
|
2020-09-07 14:57:23 +08:00
|
|
|
flags.BoolVar(&TestContext.Debug, "debug", false, "Enable debug mode to print detail info.")
|
2020-06-02 22:48:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func ValidateTestContext(t *TestContextType) error {
|
|
|
|
if t.FRPClientPath == "" || t.FRPServerPath == "" {
|
|
|
|
return fmt.Errorf("frpc and frps binary path can't be empty")
|
|
|
|
}
|
|
|
|
if _, err := os.Stat(t.FRPClientPath); err != nil {
|
|
|
|
return fmt.Errorf("load frpc-path error: %v", err)
|
|
|
|
}
|
|
|
|
if _, err := os.Stat(t.FRPServerPath); err != nil {
|
|
|
|
return fmt.Errorf("load frps-path error: %v", err)
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|