sync_pipe_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package namespaces
  2. import (
  3. "fmt"
  4. "testing"
  5. "github.com/docker/libcontainer/network"
  6. )
  7. func TestSendErrorFromChild(t *testing.T) {
  8. pipe, err := NewSyncPipe()
  9. if err != nil {
  10. t.Fatal(err)
  11. }
  12. defer func() {
  13. if err := pipe.Close(); err != nil {
  14. t.Fatal(err)
  15. }
  16. }()
  17. expected := "something bad happened"
  18. pipe.ReportChildError(fmt.Errorf(expected))
  19. childError := pipe.ReadFromChild()
  20. if childError == nil {
  21. t.Fatal("expected an error to be returned but did not receive anything")
  22. }
  23. if childError.Error() != expected {
  24. t.Fatalf("expected %q but received error message %q", expected, childError.Error())
  25. }
  26. }
  27. func TestSendPayloadToChild(t *testing.T) {
  28. pipe, err := NewSyncPipe()
  29. if err != nil {
  30. t.Fatal(err)
  31. }
  32. defer func() {
  33. if err := pipe.Close(); err != nil {
  34. t.Fatal(err)
  35. }
  36. }()
  37. expected := "libcontainer"
  38. if err := pipe.SendToChild(&network.NetworkState{VethHost: expected}); err != nil {
  39. t.Fatal(err)
  40. }
  41. payload, err := pipe.ReadFromParent()
  42. if err != nil {
  43. t.Fatal(err)
  44. }
  45. if payload.VethHost != expected {
  46. t.Fatalf("expected veth host %q but received %q", expected, payload.VethHost)
  47. }
  48. }