errors_errno_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
  2. // SPDX-License-Identifier: MIT
  3. //go:build aix || darwin || dragonfly || freebsd || linux || nacl || nacljs || netbsd || openbsd || solaris || windows
  4. // +build aix darwin dragonfly freebsd linux nacl nacljs netbsd openbsd solaris windows
  5. // For systems having syscall.Errno.
  6. // The build target must be same as errors_errno.go.
  7. package dtls
  8. import (
  9. "errors"
  10. "net"
  11. "testing"
  12. )
  13. func TestErrorsTemporary(t *testing.T) {
  14. addrListen, errListen := net.ResolveUDPAddr("udp", "localhost:0")
  15. if errListen != nil {
  16. t.Fatalf("Unexpected error: %v", errListen)
  17. }
  18. // Server is not listening.
  19. conn, errDial := net.DialUDP("udp", nil, addrListen)
  20. if errDial != nil {
  21. t.Fatalf("Unexpected error: %v", errDial)
  22. }
  23. _, _ = conn.Write([]byte{0x00}) // trigger
  24. _, err := conn.Read(make([]byte, 10))
  25. _ = conn.Close()
  26. if err == nil {
  27. t.Skip("ECONNREFUSED is not set by system")
  28. }
  29. var ne net.Error
  30. if !errors.As(netError(err), &ne) {
  31. t.Fatalf("netError must return net.Error")
  32. }
  33. if ne.Timeout() {
  34. t.Errorf("%v must not be timeout error", err)
  35. }
  36. if !ne.Temporary() { //nolint:staticcheck
  37. t.Errorf("%v must be temporary error", err)
  38. }
  39. }