X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Ftx_test.go;h=9f8d7506b652ee04d25dd739d8a573e0a64ca079;hb=HEAD;hp=ab0c1c6c8f3a6c6f49ee24772a40aee3dcabba10;hpb=1c773d7a2acd7fef4b7b1567b59e1601a79d55fe;p=nncp.git diff --git a/src/tx_test.go b/src/tx_test.go index ab0c1c6..2dccbc3 100644 --- a/src/tx_test.go +++ b/src/tx_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-2023 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,26 +19,35 @@ package nncp import ( "bytes" + "crypto/rand" "io" - "io/ioutil" "os" - "path" - "strings" + "path/filepath" "testing" "testing/quick" xdr "github.com/davecgh/go-xdr/xdr2" - "golang.org/x/crypto/blake2b" ) func TestTx(t *testing.T) { - f := func(hops uint8, pathSrc, data string, nice, replyNice uint8, padSize int16) bool { + f := func( + hops uint8, + pathSrc string, + dataSize uint32, + nice, replyNice uint8, + minSize uint32, + ) bool { + dataSize %= 1 << 20 + data := make([]byte, dataSize) + if _, err := io.ReadFull(rand.Reader, data); err != nil { + panic(err) + } + minSize %= 1 << 20 if len(pathSrc) > int(MaxPathSize) { pathSrc = pathSrc[:MaxPathSize] } hops = hops % 4 - hops = 1 - spool, err := ioutil.TempDir("", "testtx") + spool, err := os.MkdirTemp("", "testtx") if err != nil { panic(err) } @@ -54,7 +63,7 @@ func TestTx(t *testing.T) { nodeTgt := nodeTgtOur.Their() ctx := Ctx{ Spool: spool, - LogPath: path.Join(spool, "log.log"), + LogPath: filepath.Join(spool, "log.log"), Debug: true, Self: nodeOur, SelfId: nodeOur.Id, @@ -76,15 +85,20 @@ func TestTx(t *testing.T) { nodeTgt.Via = append(nodeTgt.Via, node.Id) } pkt, err := NewPkt(PktTypeExec, replyNice, []byte(pathSrc)) - src := strings.NewReader(data) - dstNode, err := ctx.Tx( + if err != nil { + panic(err) + } + src := bytes.NewReader(data) + dstNode, _, _, err := ctx.Tx( nodeTgt, pkt, 123, int64(src.Len()), - int64(padSize), + int64(minSize), + MaxFileSize, src, "pktName", + nil, ) if err != nil { return false @@ -98,16 +112,22 @@ func TestTx(t *testing.T) { return false } txJob := sentJobs[0] - defer txJob.Fd.Close() + fd, err := os.Open(txJob.Path) + if err != nil { + panic(err) + } + defer fd.Close() var bufR bytes.Buffer - if _, err = io.Copy(&bufR, txJob.Fd); err != nil { + if _, err = io.Copy(&bufR, fd); err != nil { panic(err) } var bufW bytes.Buffer vias := append(nodeTgt.Via, nodeTgt.Id) for i, hopId := range vias { hopOur := privates[*hopId] - foundNode, _, err := PktEncRead(hopOur, ctx.Neigh, &bufR, &bufW) + _, foundNode, _, err := PktEncRead( + hopOur, ctx.Neigh, &bufR, &bufW, true, nil, + ) if err != nil { return false } @@ -130,14 +150,14 @@ func TestTx(t *testing.T) { if !bytes.HasPrefix(pkt.Path[:], []byte(pathSrc)) { return false } - if bytes.Compare(bufR.Bytes(), []byte(data)) != 0 { + if !bytes.Equal(bufR.Bytes(), []byte(data)) { return false } } else { if pkt.Type != PktTypeTrns { return false } - if bytes.Compare(pkt.Path[:blake2b.Size256], vias[i+1][:]) != 0 { + if !bytes.Equal(pkt.Path[:MTHSize], vias[i+1][:]) { return false } }