forked from TrueCloudLab/neoneo-go
added basic checksum test. + fix travis build
This commit is contained in:
parent
cf1a57aa83
commit
6f08d967ba
3 changed files with 23 additions and 46 deletions
|
@ -10,6 +10,12 @@
|
||||||
Node and SDK for the <b>NEO</b> blockchain written in the <b>Go</b> language.
|
Node and SDK for the <b>NEO</b> blockchain written in the <b>Go</b> language.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://travis-ci.org/anthdm/neo-go">
|
||||||
|
<img src="https://travis-ci.org/anthdm/neo-go.svg?branch=master">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
# Overview
|
# Overview
|
||||||
### Long term project goals
|
### Long term project goals
|
||||||
Full port of the original C# [NEO project](https://github.com/neo-project). A complete toolkit for the NEO blockchain.
|
Full port of the original C# [NEO project](https://github.com/neo-project). A complete toolkit for the NEO blockchain.
|
||||||
|
|
|
@ -17,6 +17,10 @@ const (
|
||||||
cmdSize = 12
|
cmdSize = 12
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
errChecksumMismatch = errors.New("checksum mismatch")
|
||||||
|
)
|
||||||
|
|
||||||
// NetMode type that is compatible with netModes below.
|
// NetMode type that is compatible with netModes below.
|
||||||
type NetMode uint32
|
type NetMode uint32
|
||||||
|
|
||||||
|
@ -166,7 +170,7 @@ func (m *Message) decodePayload(r io.Reader) error {
|
||||||
|
|
||||||
// Compare the checksum of the payload.
|
// Compare the checksum of the payload.
|
||||||
if !compareChecksum(m.Checksum, pbuf) {
|
if !compareChecksum(m.Checksum, pbuf) {
|
||||||
return errors.New("checksum mismatch error")
|
return errChecksumMismatch
|
||||||
}
|
}
|
||||||
|
|
||||||
r = bytes.NewReader(pbuf)
|
r = bytes.NewReader(pbuf)
|
||||||
|
|
|
@ -8,23 +8,6 @@ import (
|
||||||
"github.com/anthdm/neo-go/pkg/network/payload"
|
"github.com/anthdm/neo-go/pkg/network/payload"
|
||||||
)
|
)
|
||||||
|
|
||||||
// func TestNewMessage(t *testing.T) {
|
|
||||||
// payload := []byte{}
|
|
||||||
// m := newMessage(ModeTestNet, cmdVersion, payload)
|
|
||||||
|
|
||||||
// if have, want := m.Length, uint32(0); want != have {
|
|
||||||
// t.Errorf("want %d have %d", want, have)
|
|
||||||
// }
|
|
||||||
// if have, want := len(m.Command), 12; want != have {
|
|
||||||
// t.Errorf("want %d have %d", want, have)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// sum := sumSHA256(sumSHA256(payload))[:4]
|
|
||||||
// sumuint32 := binary.LittleEndian.Uint32(sum)
|
|
||||||
// if have, want := m.Checksum, sumuint32; want != have {
|
|
||||||
// t.Errorf("want %d have %d", want, have)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
func TestMessageEncodeDecode(t *testing.T) {
|
func TestMessageEncodeDecode(t *testing.T) {
|
||||||
m := newMessage(ModeTestNet, cmdVersion, nil)
|
m := newMessage(ModeTestNet, cmdVersion, nil)
|
||||||
|
|
||||||
|
@ -50,52 +33,36 @@ func TestMessageEncodeDecode(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMessageEncodeDecodeWithVersion(t *testing.T) {
|
func TestMessageEncodeDecodeWithVersion(t *testing.T) {
|
||||||
p := payload.NewVersion(2000, "/neo/", 0, true)
|
p := payload.NewVersion(12227, 2000, "./neo:2.6.0/", 0, true)
|
||||||
m := newMessage(ModeTestNet, cmdVersion, p)
|
m := newMessage(ModeTestNet, cmdVersion, p)
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := new(bytes.Buffer)
|
||||||
if err := m.encode(buf); err != nil {
|
if err := m.encode(buf); err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
t.Log(buf.Len())
|
|
||||||
|
|
||||||
m1 := &Message{}
|
mDecode := &Message{}
|
||||||
if err := m1.decode(buf); err != nil {
|
if err := mDecode.decode(buf); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
p1 := m1.Payload.(*payload.Version)
|
|
||||||
|
|
||||||
t.Log(p1)
|
if !reflect.DeepEqual(m, mDecode) {
|
||||||
|
t.Fatalf("expected both messages to be equal %v and %v", m, mDecode)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMessageInvalidChecksum(t *testing.T) {
|
func TestMessageInvalidChecksum(t *testing.T) {
|
||||||
m := newMessage(ModeTestNet, cmdVersion, nil)
|
p := payload.NewVersion(1111, 3000, "./NEO:2.6.0/", 0, true)
|
||||||
|
m := newMessage(ModeTestNet, cmdVersion, p)
|
||||||
m.Checksum = 1337
|
m.Checksum = 1337
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := new(bytes.Buffer)
|
||||||
if err := m.encode(buf); err != nil {
|
if err := m.encode(buf); err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
md := &Message{}
|
md := &Message{}
|
||||||
if err := md.decode(buf); err == nil {
|
if err := md.decode(buf); err == nil && err != errChecksumMismatch {
|
||||||
t.Error("decode should failed with checkum mismatch error")
|
t.Fatalf("decode should fail with %s", errChecksumMismatch)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// func TestNewVersionPayload(t *testing.T) {
|
|
||||||
// ua := "/neo/0.0.1/"
|
|
||||||
// p := newVersionPayload(3000, ua, 0, true)
|
|
||||||
// b, err := p.encode()
|
|
||||||
// if err != nil {
|
|
||||||
// t.Fatal(err)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// pd := &Version{}
|
|
||||||
// if err := pd.decode(b); err != nil {
|
|
||||||
// t.Fatal(err)
|
|
||||||
// }
|
|
||||||
// if !reflect.DeepEqual(p, pd) {
|
|
||||||
// t.Errorf("both payloads should be equal: %v != %v", p, pd)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
Loading…
Reference in a new issue