diff --git a/client_test.go b/client_test.go index 52fd98f..814170f 100644 --- a/client_test.go +++ b/client_test.go @@ -144,7 +144,7 @@ func TestExecTyped(t *testing.T) { c.Assert(err, qt.IsNil) c.Assert(len(logMessages), qt.Equals, 2) c.Assert(string(logMessages[0].Body), qt.Equals, "first log message") - c.Assert(logMessages[0].Header.Status, qt.Equals, uint16(0)) + c.Assert(logMessages[0].Header.Status, qt.Equals, uint16(150)) c.Assert(logMessages[0].Header.Version, qt.Equals, uint16(32)) c.Assert(client.Close(), qt.IsNil) }) diff --git a/message.go b/message.go index 4cb25a8..50e88f1 100644 --- a/message.go +++ b/message.go @@ -50,7 +50,7 @@ func (h *Header) Read(r io.Reader) error { h.ID = binary.BigEndian.Uint32(buf[0:4]) h.Version = binary.BigEndian.Uint16(buf[4:6]) h.Status = binary.BigEndian.Uint16(buf[6:8]) - h.Size = binary.BigEndian.Uint32(buf[6:]) + h.Size = binary.BigEndian.Uint32(buf[8:]) return nil } @@ -60,7 +60,7 @@ func (h Header) Write(w io.Writer) error { binary.BigEndian.PutUint32(buff[0:4], h.ID) binary.BigEndian.PutUint16(buff[4:6], h.Version) binary.BigEndian.PutUint16(buff[6:8], h.Status) - binary.BigEndian.PutUint32(buff[6:], h.Size) + binary.BigEndian.PutUint32(buff[8:], h.Size) _, err := w.Write(buff) return err } diff --git a/message_test.go b/message_test.go new file mode 100644 index 0000000..db67b42 --- /dev/null +++ b/message_test.go @@ -0,0 +1,34 @@ +package execrpc + +import ( + "bytes" + "testing" + + qt "github.com/frankban/quicktest" +) + +func TestMessage(t *testing.T) { + c := qt.New(t) + + m1 := Message{ + Body: []byte("hello"), + Header: Header{ + ID: 2, + Version: 3, + Status: 4, + Size: 5, + }, + } + + var b bytes.Buffer + + c.Assert(m1.Header.Write(&b), qt.IsNil) + c.Assert(m1.Write(&b), qt.IsNil) + + var m2 Message + c.Assert(m2.Header.Read(&b), qt.IsNil) + c.Assert(m2.Read(&b), qt.IsNil) + + c.Assert(m2, qt.DeepEquals, m1) + +}