X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fpkt_test.go;h=37cb637b9dfc2aeb9ec8e3be344d80a100a01f95;hb=0367cce2741e1ce6a89a49fd5c4e9df6005c9744;hp=62efa71fdfe60e0f86903b2ebe91a3af7710eb7f;hpb=ab7c7eca0e53661f0ba904c2a6ba752990bea367;p=nncp.git diff --git a/src/pkt_test.go b/src/pkt_test.go index 62efa71..37cb637 100644 --- a/src/pkt_test.go +++ b/src/pkt_test.go @@ -1,6 +1,6 @@ /* NNCP -- Node to Node copy, utilities for store-and-forward data exchange -Copyright (C) 2016-2021 Sergey Matveev +Copyright (C) 2016-2022 Sergey Matveev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,6 +19,8 @@ package nncp import ( "bytes" + "crypto/rand" + "io" "testing" "testing/quick" @@ -34,24 +36,37 @@ func TestPktEncWrite(t *testing.T) { if err != nil { panic(err) } - f := func(path string, pathSize uint8, data [1 << 16]byte, size, padSize uint16) bool { - dataR := bytes.NewReader(data[:]) + f := func( + path string, + pathSize uint8, + dataSize uint32, + size, minSize uint16, + wrappers uint8, + ) bool { + dataSize %= 1 << 20 + data := make([]byte, dataSize) + if _, err = io.ReadFull(rand.Reader, data); err != nil { + panic(err) + } var ct bytes.Buffer if len(path) > int(pathSize) { path = path[:int(pathSize)] } - pkt, err := NewPkt(PktTypeFile, 123, []byte(path)) + nice := uint8(123) + pkt, err := NewPkt(PktTypeFile, nice, []byte(path)) if err != nil { panic(err) } - _, err = PktEncWrite( + wrappers %= 8 + _, _, err = PktEncWrite( nodeOur, nodeTheir.Their(), pkt, - 123, - int64(size), - int64(padSize), - dataR, + nice, + int64(minSize), + MaxFileSize, + int(wrappers), + bytes.NewReader(data), &ct, ) if err != nil { @@ -83,32 +98,39 @@ func TestPktEncRead(t *testing.T) { f := func( path string, pathSize uint8, - data [1 << 16]byte, - size, padSize uint16, - junk []byte) bool { - dataR := bytes.NewReader(data[:]) + dataSize uint32, + minSize uint16, + wrappers uint8, + ) bool { + dataSize %= 1 << 20 + data := make([]byte, dataSize) + if _, err = io.ReadFull(rand.Reader, data); err != nil { + panic(err) + } var ct bytes.Buffer if len(path) > int(pathSize) { path = path[:int(pathSize)] } - pkt, err := NewPkt(PktTypeFile, 123, []byte(path)) + nice := uint8(123) + pkt, err := NewPkt(PktTypeFile, nice, []byte(path)) if err != nil { panic(err) } - _, err = PktEncWrite( + wrappers %= 8 + _, _, err = PktEncWrite( node1, node2.Their(), pkt, - 123, - int64(size), - int64(padSize), - dataR, + nice, + int64(minSize), + MaxFileSize, + int(wrappers), + bytes.NewReader(data), &ct, ) if err != nil { return false } - ct.Write(junk) var pt bytes.Buffer nodes := make(map[NodeId]*Node) nodes[*node1.Id] = node1.Their() @@ -119,12 +141,12 @@ func TestPktEncRead(t *testing.T) { if *node.Id != *node1.Id { return false } - if sizeGot != sizeWithTags(PktOverhead+int64(size)) { + if sizeGot != int64(len(data)+int(PktOverhead)) { return false } var pktBuf bytes.Buffer xdr.Marshal(&pktBuf, &pkt) - return bytes.Compare(pt.Bytes(), append(pktBuf.Bytes(), data[:int(size)]...)) == 0 + return bytes.Compare(pt.Bytes(), append(pktBuf.Bytes(), data...)) == 0 } if err := quick.Check(f, nil); err != nil { t.Error(err)