()
| 218 | } |
| 219 | |
| 220 | func verifyData() error { |
| 221 | file, err := os.OpenFile(uploadedDataFile, os.O_RDONLY, 0755) |
| 222 | if err != nil { |
| 223 | return err |
| 224 | } |
| 225 | defer file.Close() |
| 226 | |
| 227 | fileScanner := bufio.NewScanner(file) |
| 228 | fileScanner.Buffer(make([]byte, dataSize*2), kvSize*2) |
| 229 | fileScanner.Split(bufio.ScanLines) |
| 230 | |
| 231 | sm, err := createShardManager() |
| 232 | if err != nil { |
| 233 | return err |
| 234 | } |
| 235 | |
| 236 | client, err := rpc.DialHTTP(rpcEndpoint) |
| 237 | if err != nil { |
| 238 | return err |
| 239 | } |
| 240 | defer client.Close() |
| 241 | |
| 242 | i := uint64(0) |
| 243 | for fileScanner.Scan() { |
| 244 | expectedData := common.Hex2Bytes(fileScanner.Text()) |
| 245 | blob := utils.EncodeBlobs(expectedData)[0] |
| 246 | commit, _, _ := sm.TryReadMeta(i) |
| 247 | data, _, err := sm.TryRead(i, kvSize, common.BytesToHash(commit)) |
| 248 | if err != nil { |
| 249 | return errors.New(fmt.Sprintf("read %d from shard fail with err: %s", i, err.Error())) |
| 250 | } |
| 251 | if bytes.Compare(blob[:], data) != 0 { |
| 252 | return errors.New(fmt.Sprintf("compare shard data %d fail, expected data %s; data: %s", |
| 253 | i, common.Bytes2Hex(blob[:64]), common.Bytes2Hex(data[:64]))) |
| 254 | } |
| 255 | |
| 256 | rpcdata, err := downloadBlobFromRPC(client, i, common.BytesToHash(commit)) |
| 257 | if err != nil { |
| 258 | return errors.New(fmt.Sprintf("get data %d from rpc fail with err: %s", i, err.Error())) |
| 259 | } |
| 260 | if bytes.Compare(blob[:], rpcdata) != 0 { |
| 261 | return errors.New(fmt.Sprintf("compare rpc data %d fail, expected data %s; data: %s", |
| 262 | i, common.Bytes2Hex(blob[:64]), common.Bytes2Hex(rpcdata[:64]))) |
| 263 | } |
| 264 | i++ |
| 265 | } |
| 266 | return nil |
| 267 | } |
| 268 | |
| 269 | func downloadBlobFromRPC(client *rpc.Client, kvIndex uint64, hash common.Hash) ([]byte, error) { |
| 270 | var result hexutil.Bytes |
no test coverage detected