serial_test.go 558 B

123456789101112131415161718192021222324252627282930313233343536
  1. package modbus
  2. import (
  3. "bytes"
  4. "io"
  5. "testing"
  6. "time"
  7. )
  8. type nopCloser struct {
  9. io.ReadWriter
  10. closed bool
  11. }
  12. func (n *nopCloser) Close() error {
  13. n.closed = true
  14. return nil
  15. }
  16. func TestSerialCloseIdle(t *testing.T) {
  17. port := &nopCloser{
  18. ReadWriter: &bytes.Buffer{},
  19. }
  20. s := serialPort{
  21. port: port,
  22. IdleTimeout: 100 * time.Millisecond,
  23. }
  24. s.lastActivity = time.Now()
  25. s.startCloseTimer()
  26. time.Sleep(150 * time.Millisecond)
  27. if !port.closed || s.port != nil {
  28. t.Fatalf("serial port is not closed when inactivity: %+v", port)
  29. }
  30. }