(b *testing.B, full bool, count uint64)
| 252 | } |
| 253 | |
| 254 | func benchReadChain(b *testing.B, full bool, count uint64) { |
| 255 | testdb := database.NewMemDatabase() |
| 256 | dir, err := ioutil.TempDir("", "eth-chain-bench") |
| 257 | if err != nil { |
| 258 | b.Fatalf("cannot create temporary directory: %v", err) |
| 259 | } |
| 260 | defer os.RemoveAll(dir) |
| 261 | |
| 262 | db, err := database.NewLDBDatabase(dir, 128, 1024) |
| 263 | if err != nil { |
| 264 | b.Fatalf("error opening database at %v: %v", dir, err) |
| 265 | } |
| 266 | makeChainForBench(db, full, count) |
| 267 | db.Close() |
| 268 | |
| 269 | b.ReportAllocs() |
| 270 | b.ResetTimer() |
| 271 | |
| 272 | for i := 0; i < b.N; i++ { |
| 273 | db, err := database.NewLDBDatabase(dir, 128, 1024) |
| 274 | remoteDB := database.NewIpfsDbWithAdapter(database.NewFakeIpfsAdapter()) |
| 275 | if err != nil { |
| 276 | b.Fatalf("error opening database at %v: %v", dir, err) |
| 277 | } |
| 278 | chain, err := NewBlockChain(db, nil, configs.TestChainConfig, dpor.NewFaker(configs.ChainConfigInfo().Dpor, testdb), vm.Config{}, remoteDB, nil) |
| 279 | if err != nil { |
| 280 | b.Fatalf("error creating chain: %v", err) |
| 281 | } |
| 282 | |
| 283 | for n := uint64(0); n < count; n++ { |
| 284 | header := chain.GetHeaderByNumber(n) |
| 285 | if full { |
| 286 | hash := header.Hash() |
| 287 | rawdb.ReadBody(db, hash, n) |
| 288 | rawdb.ReadReceipts(db, hash, n) |
| 289 | } |
| 290 | } |
| 291 | chain.Stop() |
| 292 | db.Close() |
| 293 | } |
| 294 | } |
no test coverage detected