func newDBStateMsg() *DBStateMsg { msg := new(DBStateMsg) msg.Timestamp = primitives.NewTimestampNow() set := testHelper.CreateTestBlockSet(nil) set = testHelper.CreateTestBlockSet(set) msg.DirectoryBlock = set.DBlock msg.AdminBlock = set.ABlock msg.FactoidBlock = set.FBlock msg.EntryCreditBlock = set.ECBlock msg.EBlocks = []interfaces.IEntryBlock{set.EBlock, set.AnchorEBlock} for _, e := range set.Entries { msg.Entries = append(msg.Entries, e) } return msg }
func TestHandleGetRaw(t *testing.T) { type RawData struct { Hash1 string Hash2 string Raw string } toTest := []RawData{} var err error blockSet := testHelper.CreateTestBlockSet(nil) aBlock := blockSet.ABlock raw := RawData{} raw.Hash1 = aBlock.DatabasePrimaryIndex().String() raw.Hash2 = aBlock.DatabaseSecondaryIndex().String() hex, err := aBlock.MarshalBinary() if err != nil { panic(err) } raw.Raw = primitives.EncodeBinary(hex) toTest = append(toTest, raw) //1 eBlock := blockSet.EBlock raw = RawData{} raw.Hash1 = eBlock.DatabasePrimaryIndex().String() raw.Hash2 = eBlock.DatabaseSecondaryIndex().String() hex, err = eBlock.MarshalBinary() if err != nil { panic(err) } raw.Raw = primitives.EncodeBinary(hex) toTest = append(toTest, raw) //2 ecBlock := blockSet.ECBlock raw = RawData{} raw.Hash1 = ecBlock.(interfaces.DatabaseBatchable).DatabasePrimaryIndex().String() raw.Hash2 = ecBlock.(interfaces.DatabaseBatchable).DatabaseSecondaryIndex().String() hex, err = ecBlock.MarshalBinary() if err != nil { panic(err) } raw.Raw = primitives.EncodeBinary(hex) toTest = append(toTest, raw) //3 fBlock := blockSet.FBlock raw = RawData{} raw.Hash1 = fBlock.(interfaces.DatabaseBatchable).DatabasePrimaryIndex().String() raw.Hash2 = fBlock.(interfaces.DatabaseBatchable).DatabaseSecondaryIndex().String() hex, err = fBlock.MarshalBinary() if err != nil { panic(err) } raw.Raw = primitives.EncodeBinary(hex) toTest = append(toTest, raw) //4 dBlock := blockSet.DBlock raw = RawData{} raw.Hash1 = dBlock.DatabasePrimaryIndex().String() raw.Hash2 = dBlock.DatabaseSecondaryIndex().String() hex, err = dBlock.MarshalBinary() if err != nil { panic(err) } raw.Raw = primitives.EncodeBinary(hex) toTest = append(toTest, raw) //5 context := testHelper.CreateWebContext() for i, v := range toTest { testHelper.ClearContextResponseWriter(context) HandleGetRaw(context, v.Hash1) if strings.Contains(testHelper.GetBody(context), v.Raw) == false { t.Errorf("Looking for %v", v.Hash1) t.Errorf("GetRaw %v/%v from Hash1 failed - %v", i, len(toTest), testHelper.GetBody(context)) } testHelper.ClearContextResponseWriter(context) HandleGetRaw(context, v.Hash2) if strings.Contains(testHelper.GetBody(context), v.Raw) == false { t.Errorf("Looking for %v", v.Hash2) t.Errorf("GetRaw %v/%v from Hash2 failed - %v", i, len(toTest), testHelper.GetBody(context)) } } }
func TestHandleV2GetRaw(t *testing.T) { type RawData struct { Hash1 string Hash2 string Raw string } toTest := []RawData{} var err error blockSet := testHelper.CreateTestBlockSet(nil) aBlock := blockSet.ABlock raw := RawData{} raw.Hash1 = aBlock.DatabasePrimaryIndex().String() raw.Hash2 = aBlock.DatabaseSecondaryIndex().String() hex, err := aBlock.MarshalBinary() if err != nil { panic(err) } raw.Raw = primitives.EncodeBinary(hex) toTest = append(toTest, raw) //1 eBlock := blockSet.EBlock raw = RawData{} raw.Hash1 = eBlock.DatabasePrimaryIndex().String() raw.Hash2 = eBlock.DatabaseSecondaryIndex().String() hex, err = eBlock.MarshalBinary() if err != nil { panic(err) } raw.Raw = primitives.EncodeBinary(hex) toTest = append(toTest, raw) //2 ecBlock := blockSet.ECBlock raw = RawData{} raw.Hash1 = ecBlock.(interfaces.DatabaseBatchable).DatabasePrimaryIndex().String() raw.Hash2 = ecBlock.(interfaces.DatabaseBatchable).DatabaseSecondaryIndex().String() hex, err = ecBlock.MarshalBinary() if err != nil { panic(err) } raw.Raw = primitives.EncodeBinary(hex) toTest = append(toTest, raw) //3 fBlock := blockSet.FBlock raw = RawData{} raw.Hash1 = fBlock.(interfaces.DatabaseBatchable).DatabasePrimaryIndex().String() raw.Hash2 = fBlock.(interfaces.DatabaseBatchable).DatabaseSecondaryIndex().String() hex, err = fBlock.MarshalBinary() if err != nil { panic(err) } raw.Raw = primitives.EncodeBinary(hex) toTest = append(toTest, raw) //4 dBlock := blockSet.DBlock raw = RawData{} raw.Hash1 = dBlock.DatabasePrimaryIndex().String() raw.Hash2 = dBlock.DatabaseSecondaryIndex().String() hex, err = dBlock.MarshalBinary() if err != nil { panic(err) } raw.Raw = primitives.EncodeBinary(hex) toTest = append(toTest, raw) //5 //initializing server state := testHelper.CreateAndPopulateTestState() Start(state) for i, v := range toTest { data := new(HashRequest) data.Hash = v.Hash1 req := primitives.NewJSON2Request("raw-data", 1, data) resp, err := v2Request(req) if err != nil { t.Errorf("%v", err) } if strings.Contains(resp.String(), v.Raw) == false { t.Errorf("Looking for %v", v.Hash1) t.Errorf("GetRaw %v/%v from Hash1 failed - %v", i, len(toTest), resp.String()) } data.Hash = v.Hash2 req = primitives.NewJSON2Request("raw-data", 1, data) resp, err = v2Request(req) if err != nil { t.Errorf("%v", err) } if strings.Contains(resp.String(), v.Raw) == false { t.Errorf("Looking for %v", v.Hash1) t.Errorf("GetRaw %v/%v from Hash2 failed - %v", i, len(toTest), resp.String()) } } }
func TestMultiBatch(t *testing.T) { dbo := NewOverlay(new(mapdb.MapDB)) var prev *testHelper.BlockSet = nil var err error for i := 0; i < 10; i++ { dbo.StartMultiBatch() prev = testHelper.CreateTestBlockSet(prev) err = dbo.ProcessABlockMultiBatch(prev.ABlock) if err != nil { t.Error(err) } err = dbo.ProcessEBlockMultiBatch(prev.EBlock, true) if err != nil { t.Error(err) } err = dbo.ProcessEBlockMultiBatch(prev.AnchorEBlock, true) if err != nil { t.Error(err) } err = dbo.ProcessECBlockMultiBatch(prev.ECBlock, false) if err != nil { t.Error(err) } err = dbo.ProcessFBlockMultiBatch(prev.FBlock) if err != nil { t.Error(err) } err = dbo.ProcessDBlockMultiBatch(prev.DBlock) if err != nil { t.Error(err) } for _, entry := range prev.Entries { err = dbo.InsertEntryMultiBatch(entry) if err != nil { t.Error(err) } } if err := dbo.ExecuteMultiBatch(); err != nil { t.Error(err) } } ahead, err := dbo.FetchABlockHead() if err != nil { t.Error(err) } if ahead == nil { t.Error("DBlock head is nil") } m1, err := prev.ABlock.MarshalBinary() if err != nil { t.Error(err) } m2, err := ahead.MarshalBinary() if err != nil { t.Error(err) } if primitives.AreBytesEqual(m1, m2) == false { t.Error("ABlocks are not equal") } fhead, err := dbo.FetchFBlockHead() if err != nil { t.Error(err) } if fhead == nil { t.Error("DBlock head is nil") } m1, err = prev.FBlock.MarshalBinary() if err != nil { t.Error(err) } m2, err = fhead.MarshalBinary() if err != nil { t.Error(err) } if primitives.AreBytesEqual(m1, m2) == false { t.Error("FBlocks are not equal") } echead, err := dbo.FetchECBlockHead() if err != nil { t.Error(err) } if echead == nil { t.Error("DBlock head is nil") } m1, err = prev.ECBlock.MarshalBinary() if err != nil { t.Error(err) } m2, err = echead.MarshalBinary() if err != nil { t.Error(err) } if primitives.AreBytesEqual(m1, m2) == false { t.Error("ECBlocks are not equal") } dhead, err := dbo.FetchDBlockHead() if err != nil { t.Error(err) } if dhead == nil { t.Error("DBlock head is nil") } m1, err = prev.DBlock.MarshalBinary() if err != nil { t.Error(err) } m2, err = dhead.MarshalBinary() if err != nil { t.Error(err) } if primitives.AreBytesEqual(m1, m2) == false { t.Error("DBlocks are not equal") } }