github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/radar/orgchain/radar_test.go (about) 1 package orgchain 2 3 import ( 4 "testing" 5 6 "os" 7 8 "log" 9 10 "fmt" 11 12 "path" 13 14 "github.com/magiconair/properties/assert" 15 maintypes "github.com/sixexorg/magnetic-ring/core/mainchain/types" 16 "github.com/sixexorg/magnetic-ring/mock" 17 mainstorages "github.com/sixexorg/magnetic-ring/store/mainchain/storages" 18 "github.com/sixexorg/magnetic-ring/store/orgchain/genesis" 19 "github.com/sixexorg/magnetic-ring/store/orgchain/states" 20 "github.com/sixexorg/magnetic-ring/store/orgchain/storages" 21 "github.com/sixexorg/magnetic-ring/store/storelaw" 22 ) 23 24 func TestEntireProcess(t *testing.T) { 25 dbdir := "test" 26 defer os.RemoveAll(dbdir) 27 ledger, _ := storages.NewLedgerStore(path.Join(dbdir, "org")) 28 mainLedger, _ := mainstorages.NewLedgerStore(path.Join(dbdir, "main")) 29 tx := mock.CreateLeagueTx 30 mainBlock := &maintypes.Block{ 31 Header: &maintypes.Header{ 32 Height: 1, 33 Timestamp: mock.OrgTimeSpan, 34 }, 35 Transactions: maintypes.Transactions{tx}, 36 } 37 mainLedger.SaveBlockForMockTest(mainBlock) 38 39 radar := NewRadar() 40 txCh := make(chan *maintypes.Transaction) 41 go func() { txCh <- tx }() 42 block, _, _, _, _, sts := radar.MonitorGenesis(txCh, mainstorages.GetLightLedger(), tx.TxData.From) 43 state := genesis.NewGensisState(mock.CreateLeagueTx) 44 sts2 := states.AccountStates{state} 45 stroot := sts2.GetHashRoot() 46 mock.Block1.Header.StateRoot = stroot 47 assert.Equal(t, stroot, sts.GetHashRoot()) 48 49 blocknew := mock.Block1 50 fmt.Println(blocknew.Header.LeagueId.ToString()) 51 if block.Hash() != blocknew.Hash() { 52 t.Fail() 53 t.Error("diffent between mock and executed") 54 t.Log("\nblock1:", block.Hash().String(), "\nblock2", mock.Block1.Hash().String()) 55 } 56 //err := accountStore.Save(state) 57 err := ledger.SaveAccount(sts[0]) 58 if err != nil { 59 t.Fail() 60 t.Error(err) 61 return 62 } 63 64 blk1 := &storelaw.OrgBlockInfo{ 65 Block: block, 66 } 67 blk2 := &storelaw.OrgBlockInfo{ 68 Block: mock.Block2, 69 } 70 ledger.SaveAll(blk1) 71 ledger.SaveAll(blk2) 72 73 //there can do a for loop here 74 re := radar.RoutingMainTx(mock.ConfirmTx) 75 select { 76 case orgTx := <-re.ORGTX: 77 t.Log(orgTx.Hash().String()) 78 return 79 case mcc := <-re.MCC: 80 blocks, err := radar.GetBlocks(mcc.Start, mcc.End) 81 if err != nil { 82 t.Error(err) 83 t.Fail() 84 return 85 } 86 result := radar.VerifyMainAndLeague(blocks) 87 if !result { 88 t.Log("failed") 89 t.Fail() 90 return 91 } 92 case err := <-re.Err: 93 log.Println(err.Error()) 94 return 95 } 96 97 }