mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 01:43:47 +00:00
cmd/smart: add validation for uploaded vs downloaded file. use strings trim for getting rid of 0x"
This commit is contained in:
parent
84759594dc
commit
86c8c0a27f
1 changed files with 28 additions and 4 deletions
|
|
@ -17,10 +17,14 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
|
"crypto/md5"
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/swarm"
|
"github.com/ethereum/go-ethereum/swarm"
|
||||||
|
|
@ -55,7 +59,7 @@ func TestCLISwarmExportImport(t *testing.T) {
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
// generate an export.tar
|
// generate an export.tar
|
||||||
exportCmd := runSwarm(t, "db", "export", info.Path+"/chunks", info.Path+"/export.tar", info.BzzKey[2:])
|
exportCmd := runSwarm(t, "db", "export", info.Path+"/chunks", info.Path+"/export.tar", strings.TrimPrefix(info.BzzKey, "0x"))
|
||||||
exportCmd.ExpectExit()
|
exportCmd.ExpectExit()
|
||||||
|
|
||||||
// start second cluster
|
// start second cluster
|
||||||
|
|
@ -71,11 +75,11 @@ func TestCLISwarmExportImport(t *testing.T) {
|
||||||
defer cluster2.Cleanup()
|
defer cluster2.Cleanup()
|
||||||
|
|
||||||
// import the export.tar
|
// import the export.tar
|
||||||
importCmd := runSwarm(t, "db", "import", info2.Path+"/chunks", info.Path+"/export.tar", info2.BzzKey[2:])
|
importCmd := runSwarm(t, "db", "import", info2.Path+"/chunks", info.Path+"/export.tar", strings.TrimPrefix(info2.BzzKey, "0x"))
|
||||||
importCmd.ExpectExit()
|
importCmd.ExpectExit()
|
||||||
|
|
||||||
// spin second cluster back up
|
// spin second cluster back up
|
||||||
cluster2.StartExistingNodes(t, 1, info2.BzzAccount[2:])
|
cluster2.StartExistingNodes(t, 1, strings.TrimPrefix(info2.BzzAccount, "0x"))
|
||||||
|
|
||||||
// try to fetch imported file
|
// try to fetch imported file
|
||||||
res, err := http.Get(cluster2.Nodes[0].URL + "/bzz:/" + hash)
|
res, err := http.Get(cluster2.Nodes[0].URL + "/bzz:/" + hash)
|
||||||
|
|
@ -87,7 +91,27 @@ func TestCLISwarmExportImport(t *testing.T) {
|
||||||
t.Fatalf("expected HTTP status %d, got %s", 200, res.Status)
|
t.Fatalf("expected HTTP status %d, got %s", 200, res.Status)
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: compare res with generated random file
|
// compare downloaded file with the generated random file
|
||||||
|
mustEqualFiles(t, f, res.Body)
|
||||||
|
}
|
||||||
|
|
||||||
|
func mustEqualFiles(t *testing.T, up io.Reader, down io.Reader) {
|
||||||
|
h := md5.New()
|
||||||
|
upLen, err := io.Copy(h, up)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
upHash := h.Sum(nil)
|
||||||
|
h.Reset()
|
||||||
|
downLen, err := io.Copy(h, down)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
downHash := h.Sum(nil)
|
||||||
|
|
||||||
|
if !bytes.Equal(upHash, downHash) || upLen != downLen {
|
||||||
|
t.Fatalf("downloaded imported file md5=%x (length %v) is not the same as the generated one mp5=%x (length %v)", downHash, downLen, upHash, upLen)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateRandomFile(t *testing.T, size int) (f *os.File, teardown func()) {
|
func generateRandomFile(t *testing.T, size int) (f *os.File, teardown func()) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue