shared_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright (c) 2012, Sean Treadway, SoundCloud Ltd.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. // Source code and contact info at http://github.com/streadway/amqp
  5. package amqp
  6. import (
  7. "encoding/hex"
  8. "io"
  9. "testing"
  10. )
  11. type pipe struct {
  12. r *io.PipeReader
  13. w *io.PipeWriter
  14. }
  15. func (p pipe) Read(b []byte) (int, error) {
  16. return p.r.Read(b)
  17. }
  18. func (p pipe) Write(b []byte) (int, error) {
  19. return p.w.Write(b)
  20. }
  21. func (p pipe) Close() error {
  22. p.r.Close()
  23. p.w.Close()
  24. return nil
  25. }
  26. type logIO struct {
  27. t *testing.T
  28. prefix string
  29. proxy io.ReadWriteCloser
  30. }
  31. func (me *logIO) Read(p []byte) (n int, err error) {
  32. me.t.Logf("%s reading %d\n", me.prefix, len(p))
  33. n, err = me.proxy.Read(p)
  34. if err != nil {
  35. me.t.Logf("%s read %x: %v\n", me.prefix, p[0:n], err)
  36. } else {
  37. me.t.Logf("%s read:\n%s\n", me.prefix, hex.Dump(p[0:n]))
  38. //fmt.Printf("%s read:\n%s\n", me.prefix, hex.Dump(p[0:n]))
  39. }
  40. return
  41. }
  42. func (me *logIO) Write(p []byte) (n int, err error) {
  43. me.t.Logf("%s writing %d\n", me.prefix, len(p))
  44. n, err = me.proxy.Write(p)
  45. if err != nil {
  46. me.t.Logf("%s write %d, %x: %v\n", me.prefix, len(p), p[0:n], err)
  47. } else {
  48. me.t.Logf("%s write %d:\n%s", me.prefix, len(p), hex.Dump(p[0:n]))
  49. //fmt.Printf("%s write %d:\n%s", me.prefix, len(p), hex.Dump(p[0:n]))
  50. }
  51. return
  52. }
  53. func (me *logIO) Close() (err error) {
  54. err = me.proxy.Close()
  55. if err != nil {
  56. me.t.Logf("%s close : %v\n", me.prefix, err)
  57. } else {
  58. me.t.Logf("%s close\n", me.prefix, err)
  59. }
  60. return
  61. }