github.com/celestiaorg/celestia-node@v0.15.0-beta.1/share/eds/edstest/testing.go (about) 1 package edstest 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 "github.com/celestiaorg/celestia-app/pkg/wrapper" 9 "github.com/celestiaorg/nmt" 10 "github.com/celestiaorg/rsmt2d" 11 12 "github.com/celestiaorg/celestia-node/share" 13 "github.com/celestiaorg/celestia-node/share/sharetest" 14 ) 15 16 func RandByzantineEDS(t *testing.T, size int, options ...nmt.Option) *rsmt2d.ExtendedDataSquare { 17 eds := RandEDS(t, size) 18 shares := eds.Flattened() 19 copy(share.GetData(shares[0]), share.GetData(shares[1])) // corrupting eds 20 eds, err := rsmt2d.ImportExtendedDataSquare(shares, 21 share.DefaultRSMT2DCodec(), 22 wrapper.NewConstructor(uint64(size), 23 options...)) 24 require.NoError(t, err, "failure to recompute the extended data square") 25 return eds 26 } 27 28 // RandEDS generates EDS filled with the random data with the given size for original square. It 29 // uses require.TestingT to be able to take both a *testing.T and a *testing.B. 30 func RandEDS(t require.TestingT, size int) *rsmt2d.ExtendedDataSquare { 31 shares := sharetest.RandShares(t, size*size) 32 eds, err := rsmt2d.ComputeExtendedDataSquare(shares, share.DefaultRSMT2DCodec(), wrapper.NewConstructor(uint64(size))) 33 require.NoError(t, err, "failure to recompute the extended data square") 34 return eds 35 } 36 37 func RandEDSWithNamespace( 38 t require.TestingT, 39 namespace share.Namespace, 40 size int, 41 ) (*rsmt2d.ExtendedDataSquare, *share.Root) { 42 shares := sharetest.RandSharesWithNamespace(t, namespace, size*size) 43 eds, err := rsmt2d.ComputeExtendedDataSquare(shares, share.DefaultRSMT2DCodec(), wrapper.NewConstructor(uint64(size))) 44 require.NoError(t, err, "failure to recompute the extended data square") 45 dah, err := share.NewRoot(eds) 46 require.NoError(t, err) 47 return eds, dah 48 }