backend_test.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package eth
  2. import (
  3. "math/big"
  4. "testing"
  5. "github.com/ethereum/go-ethereum/common"
  6. "github.com/ethereum/go-ethereum/core"
  7. "github.com/ethereum/go-ethereum/core/types"
  8. "github.com/ethereum/go-ethereum/core/vm"
  9. "github.com/ethereum/go-ethereum/ethdb"
  10. )
  11. func TestMipmapUpgrade(t *testing.T) {
  12. db, _ := ethdb.NewMemDatabase()
  13. addr := common.BytesToAddress([]byte("jeff"))
  14. genesis := core.WriteGenesisBlockForTesting(db)
  15. chain, receipts := core.GenerateChain(genesis, db, 10, func(i int, gen *core.BlockGen) {
  16. var receipts types.Receipts
  17. switch i {
  18. case 1:
  19. receipt := types.NewReceipt(nil, new(big.Int))
  20. receipt.Logs = vm.Logs{&vm.Log{Address: addr}}
  21. gen.AddUncheckedReceipt(receipt)
  22. receipts = types.Receipts{receipt}
  23. case 2:
  24. receipt := types.NewReceipt(nil, new(big.Int))
  25. receipt.Logs = vm.Logs{&vm.Log{Address: addr}}
  26. gen.AddUncheckedReceipt(receipt)
  27. receipts = types.Receipts{receipt}
  28. }
  29. // store the receipts
  30. err := core.PutReceipts(db, receipts)
  31. if err != nil {
  32. t.Fatal(err)
  33. }
  34. })
  35. for i, block := range chain {
  36. core.WriteBlock(db, block)
  37. if err := core.WriteCanonicalHash(db, block.Hash(), block.NumberU64()); err != nil {
  38. t.Fatalf("failed to insert block number: %v", err)
  39. }
  40. if err := core.WriteHeadBlockHash(db, block.Hash()); err != nil {
  41. t.Fatalf("failed to insert block number: %v", err)
  42. }
  43. if err := core.PutBlockReceipts(db, block.Hash(), receipts[i]); err != nil {
  44. t.Fatal("error writing block receipts:", err)
  45. }
  46. }
  47. err := addMipmapBloomBins(db)
  48. if err != nil {
  49. t.Fatal(err)
  50. }
  51. bloom := core.GetMipmapBloom(db, 1, core.MIPMapLevels[0])
  52. if (bloom == types.Bloom{}) {
  53. t.Error("got empty bloom filter")
  54. }
  55. data, _ := db.Get([]byte("setting-mipmap-version"))
  56. if len(data) == 0 {
  57. t.Error("setting-mipmap-version not written to database")
  58. }
  59. }