client.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. conn.SetDeadline(time.Now().Add(time.Duration(time.Second * deadline)))
  32. // read greeting, ignore it
  33. _, err = bufin.ReadString('\n')
  34. return conn, bufin, err
  35. }
  36. func Command(conn net.Conn, bufin *bufio.Reader, command string) (reply string, err error) {
  37. _, err = fmt.Fprintln(conn, command+"\r")
  38. if err == nil {
  39. return bufin.ReadString('\n')
  40. }
  41. return "", err
  42. }