package cmd import ( "context" "fmt" "os" "testing" "time" "git.sual.in/casual/gobuster-lib/cli" "git.sual.in/casual/gobuster-lib/gobustervhost" "git.sual.in/casual/gobuster-lib/libgobuster" ) func BenchmarkVhostMode(b *testing.B) { h := httpServer(b, "test") defer h.Close() pluginopts := gobustervhost.NewOptionsVhost() pluginopts.URL = h.URL pluginopts.Timeout = 10 * time.Second wordlist, err := os.CreateTemp("", "") if err != nil { b.Fatalf("could not create tempfile: %v", err) } defer os.Remove(wordlist.Name()) for w := 0; w < 1000; w++ { _, _ = wordlist.WriteString(fmt.Sprintf("%d\n", w)) } wordlist.Close() globalopts := libgobuster.Options{ Threads: 10, Wordlist: wordlist.Name(), NoProgress: true, } ctx := context.Background() oldStdout := os.Stdout oldStderr := os.Stderr defer func(out, err *os.File) { os.Stdout = out; os.Stderr = err }(oldStdout, oldStderr) devnull, err := os.Open(os.DevNull) if err != nil { b.Fatalf("could not get devnull %v", err) } defer devnull.Close() log := libgobuster.NewLogger(false) // Run the real benchmark for x := 0; x < b.N; x++ { os.Stdout = devnull os.Stderr = devnull plugin, err := gobustervhost.NewGobusterVhost(&globalopts, pluginopts) if err != nil { b.Fatalf("error on creating gobusterdir: %v", err) } if err := cli.Gobuster(ctx, &globalopts, plugin, log); err != nil { b.Fatalf("error on running gobuster: %v", err) } os.Stdout = oldStdout os.Stderr = oldStderr } }