/*
NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2023 Sergey Matveev <stargrave@stargrave.org>
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
import (
"bytes"
+ "crypto/rand"
"io"
- "io/ioutil"
"os"
"path"
- "strings"
"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)
}
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
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
}
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
}
}