|
|
|
@ -39,6 +39,11 @@ import ( |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
func uploadAndSyncCmd(ctx *cli.Context, tuid string) error { |
|
|
|
|
// use input seed if it has been set
|
|
|
|
|
if inputSeed != 0 { |
|
|
|
|
seed = inputSeed |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
randomBytes := testutil.RandomBytes(seed, filesize*1000) |
|
|
|
|
|
|
|
|
|
errc := make(chan error) |
|
|
|
@ -47,37 +52,28 @@ func uploadAndSyncCmd(ctx *cli.Context, tuid string) error { |
|
|
|
|
errc <- uploadAndSync(ctx, randomBytes, tuid) |
|
|
|
|
}() |
|
|
|
|
|
|
|
|
|
var err error |
|
|
|
|
select { |
|
|
|
|
case err := <-errc: |
|
|
|
|
case err = <-errc: |
|
|
|
|
if err != nil { |
|
|
|
|
metrics.GetOrRegisterCounter(fmt.Sprintf("%s.fail", commandName), nil).Inc(1) |
|
|
|
|
} |
|
|
|
|
return err |
|
|
|
|
case <-time.After(time.Duration(timeout) * time.Second): |
|
|
|
|
metrics.GetOrRegisterCounter(fmt.Sprintf("%s.timeout", commandName), nil).Inc(1) |
|
|
|
|
|
|
|
|
|
e := fmt.Errorf("timeout after %v sec", timeout) |
|
|
|
|
// trigger debug functionality on randomBytes
|
|
|
|
|
err := trackChunks(randomBytes[:]) |
|
|
|
|
if err != nil { |
|
|
|
|
e = fmt.Errorf("%v; triggerChunkDebug failed: %v", e, err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return e |
|
|
|
|
err = fmt.Errorf("timeout after %v sec", timeout) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// trigger debug functionality on randomBytes even on successful runs
|
|
|
|
|
err := trackChunks(randomBytes[:]) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Error(err.Error()) |
|
|
|
|
// trigger debug functionality on randomBytes
|
|
|
|
|
e := trackChunks(randomBytes[:]) |
|
|
|
|
if e != nil { |
|
|
|
|
log.Error(e.Error()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func trackChunks(testData []byte) error { |
|
|
|
|
log.Warn("Test timed out, running chunk debug sequence") |
|
|
|
|
|
|
|
|
|
addrs, err := getAllRefs(testData) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
@ -94,14 +90,14 @@ func trackChunks(testData []byte) error { |
|
|
|
|
|
|
|
|
|
rpcClient, err := rpc.Dial(httpHost) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Error("Error dialing host", "err", err) |
|
|
|
|
log.Error("error dialing host", "err", err, "host", httpHost) |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var hasInfo []api.HasInfo |
|
|
|
|
err = rpcClient.Call(&hasInfo, "bzz_has", addrs) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Error("Error calling host", "err", err) |
|
|
|
|
log.Error("error calling rpc client", "err", err, "host", httpHost) |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -125,7 +121,6 @@ func trackChunks(testData []byte) error { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func getAllRefs(testData []byte) (storage.AddressCollection, error) { |
|
|
|
|
log.Trace("Getting all references for given root hash") |
|
|
|
|
datadir, err := ioutil.TempDir("", "chunk-debug") |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, fmt.Errorf("unable to create temp dir: %v", err) |
|
|
|
|