test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package commands
  2. import (
  3. "fmt"
  4. "log"
  5. "github.com/v2fly/v2ray-core/v4"
  6. "github.com/v2fly/v2ray-core/v4/commands/base"
  7. )
  8. // CmdTest tests config files
  9. var CmdTest = &base.Command{
  10. CustomFlags: true,
  11. UsageLine: "{{.Exec}} test [-format=json] [-c config.json] [-confdir dir]",
  12. Short: "Test config files",
  13. Long: `
  14. Test config files, without launching V2Ray server.
  15. Example:
  16. {{.Exec}} {{.LongName}} -c config.json
  17. Arguments:
  18. -c value
  19. Short alias of -config
  20. -config value
  21. Config file for V2Ray. Multiple assign is accepted (only
  22. json). Latter ones overrides the former ones.
  23. -confdir string
  24. A dir with multiple json config
  25. -format string
  26. Format of input files. (default "json")
  27. `,
  28. }
  29. func init() {
  30. CmdTest.Run = executeTest //break init loop
  31. }
  32. func executeTest(cmd *base.Command, args []string) {
  33. setConfigFlags(cmd)
  34. cmd.Flag.Parse(args)
  35. if dirExists(configDir) {
  36. log.Println("Using confdir from arg:", configDir)
  37. configFiles = append(configFiles, readConfDir(configDir)...)
  38. }
  39. if len(configFiles) == 0 {
  40. cmd.Flag.Usage()
  41. base.SetExitStatus(1)
  42. base.Exit()
  43. }
  44. printVersion()
  45. _, err := startV2RayTesting()
  46. if err != nil {
  47. base.Fatalf("Test failed: %s", err)
  48. }
  49. fmt.Println("Configuration OK.")
  50. }
  51. func startV2RayTesting() (core.Server, error) {
  52. config, err := core.LoadConfig(getFormatFromAlias(), configFiles[0], configFiles)
  53. if err != nil {
  54. return nil, newError("failed to read config files: [", configFiles.String(), "]").Base(err)
  55. }
  56. server, err := core.New(config)
  57. if err != nil {
  58. return nil, newError("failed to create server").Base(err)
  59. }
  60. return server, nil
  61. }