client.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package test
  2. import (
  3. "bufio"
  4. "crypto/tls"
  5. "errors"
  6. "fmt"
  7. "github.com/flashmob/go-guerrilla"
  8. "net"
  9. "time"
  10. )
  11. func Connect(serverConfig guerrilla.ServerConfig, deadline time.Duration) (net.Conn, *bufio.Reader, error) {
  12. var bufin *bufio.Reader
  13. var conn net.Conn
  14. var err error
  15. if serverConfig.TLS.AlwaysOn {
  16. // start tls automatically
  17. conn, err = tls.Dial("tcp", serverConfig.ListenInterface, &tls.Config{
  18. InsecureSkipVerify: true,
  19. ServerName: "127.0.0.1",
  20. })
  21. } else {
  22. conn, err = net.Dial("tcp", serverConfig.ListenInterface)
  23. }
  24. if err != nil {
  25. // handle error
  26. //t.Error("Cannot dial server", config.Servers[0].ListenInterface)
  27. return conn, bufin, errors.New("Cannot dial server: " + serverConfig.ListenInterface + "," + err.Error())
  28. }
  29. bufin = bufio.NewReader(conn)
  30. // should be ample time to complete the test
  31. if err = conn.SetDeadline(time.Now().Add(time.Duration(time.Second * deadline))); err != nil {
  32. return conn, bufin, err
  33. }
  34. // read greeting, ignore it
  35. _, err = bufin.ReadString('\n')
  36. return conn, bufin, err
  37. }
  38. func Command(conn net.Conn, bufin *bufio.Reader, command string) (reply string, err error) {
  39. _, err = fmt.Fprintln(conn, command+"\r")
  40. if err == nil {
  41. return bufin.ReadString('\n')
  42. }
  43. return "", err
  44. }