Merge pull request #349 from ethersphere/enable_testcliswarm

enable TestCLISwarmUp
This commit is contained in:
Anton Evangelatov 2018-03-30 16:00:32 +02:00 committed by GitHub
commit 07a1ae5f01
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -22,57 +22,60 @@ import (
"net/http" "net/http"
"os" "os"
"testing" "testing"
"github.com/ethereum/go-ethereum/log"
) )
// TestCLISwarmUp tests that running 'swarm up' makes the resulting file // TestCLISwarmUp tests that running 'swarm up' makes the resulting file
// available from all nodes via the HTTP API // available from all nodes via the HTTP API
func TestCLISwarmUp(t *testing.T) { func TestCLISwarmUp(t *testing.T) {
// temporarily disable to make travis green log.Info("starting 3 node cluster")
t.Skip()
// start 3 node cluster
t.Log("starting 3 node cluster")
cluster := newTestCluster(t, 3) cluster := newTestCluster(t, 3)
defer cluster.Shutdown() defer cluster.Shutdown()
// create a tmp file // create a tmp file
tmp, err := ioutil.TempFile("", "swarm-test") tmp, err := ioutil.TempFile("", "swarm-test")
assertNil(t, err) if err != nil {
t.Fatal(err)
}
defer tmp.Close() defer tmp.Close()
defer os.Remove(tmp.Name()) defer os.Remove(tmp.Name())
_, err = io.WriteString(tmp, "data")
assertNil(t, err) // write data to file
data := "randomdata"
_, err = io.WriteString(tmp, data)
if err != nil {
t.Fatal(err)
}
// upload the file with 'swarm up' and expect a hash // upload the file with 'swarm up' and expect a hash
t.Log("uploading file with 'swarm up'") log.Info("uploading file with 'swarm up'")
up := runSwarm(t, "--bzzapi", cluster.Nodes[0].URL, "up", tmp.Name()) up := runSwarm(t, "--bzzapi", cluster.Nodes[0].URL, "up", tmp.Name())
_, matches := up.ExpectRegexp(`[a-f\d]{64}`) _, matches := up.ExpectRegexp(`[a-f\d]{64}`)
up.ExpectExit() up.ExpectExit()
hash := matches[0] hash := matches[0]
t.Logf("file uploaded with hash %s", hash) log.Info("file uploaded", "hash", hash)
// get the file from the HTTP API of each node // get the file from the HTTP API of each node
for _, node := range cluster.Nodes { for _, node := range cluster.Nodes {
t.Logf("getting file from %s", node.Name) log.Info("getting file from node", "node", node.Name)
res, err := http.Get(node.URL + "/bzz:/" + hash)
assertNil(t, err)
assertHTTPResponse(t, res, http.StatusOK, "data")
}
}
func assertNil(t *testing.T, err error) { res, err := http.Get(node.URL + "/bzz:/" + hash)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
}
func assertHTTPResponse(t *testing.T, res *http.Response, expectedStatus int, expectedBody string) { if res.StatusCode != 200 {
defer res.Body.Close() t.Fatalf("expected HTTP status %d, got %s", 200, res.Status)
if res.StatusCode != expectedStatus { }
t.Fatalf("expected HTTP status %d, got %s", expectedStatus, res.Status)
reply, err := ioutil.ReadAll(res.Body)
defer res.Body.Close()
if err != nil {
t.Fatal(err)
}
if string(reply) != data {
t.Fatalf("expected HTTP body %q, got %q", data, reply)
} }
data, err := ioutil.ReadAll(res.Body)
assertNil(t, err)
if string(data) != expectedBody {
t.Fatalf("expected HTTP body %q, got %q", expectedBody, data)
} }
} }