diff --git a/bzz/dbstore_test.go b/bzz/dbstore_test.go index d3f866cbc7..d1d8939259 100644 --- a/bzz/dbstore_test.go +++ b/bzz/dbstore_test.go @@ -7,13 +7,17 @@ import ( "github.com/ethereum/go-ethereum/bzz/test" ) -func testDbStore(l int64, branches int64, t *testing.T) { - +func initDbStore() (m *dbStore) { os.RemoveAll("/tmp/bzz") m, err := newDbStore("/tmp/bzz") if err != nil { panic("no dbStore") } + return +} + +func testDbStore(l int64, branches int64, t *testing.T) { + m := initDbStore() defer m.close() testStore(m, l, branches, t) } @@ -41,3 +45,14 @@ func TestDbStore2_100(t *testing.T) { test.LogInit() testDbStore(100, 2, t) } + +func TestDbStoreNotFound(t *testing.T) { + test.LogInit() + m := initDbStore() + defer m.close() + zeroKey := make([]byte, 32) + _, err := m.Get(zeroKey) + if err != notFound { + t.Errorf("Expected notFound, got %v", err) + } +} diff --git a/bzz/dpa.go b/bzz/dpa.go index a026cca03f..aa055645d4 100644 --- a/bzz/dpa.go +++ b/bzz/dpa.go @@ -4,6 +4,7 @@ import ( "errors" "sync" // "time" + "fmt" ethlogger "github.com/ethereum/go-ethereum/logger" // "github.com/ethereum/go-ethereum/rlp" @@ -69,7 +70,7 @@ type ChunkStore interface { Get(Key) (*Chunk, error) } -func (self *DPA) Retrieve(key Key) (data LazySectionReader, err error) { +func (self *DPA) Retrieve(key Key) (data LazySectionReader) { reader, errC := self.Chunker.Join(key, self.retrieveC) data = reader @@ -171,9 +172,14 @@ func (self *DPA) retrieveLoop() { func (self *DPA) storeLoop() { self.storeC = make(chan *Chunk) go func() { + fmt.Printf("StoreLoop started.\n") STORE: - for chunk := range self.storeC { - go self.ChunkStore.Put(chunk) + for { + chunk := <-self.storeC + fmt.Printf("StoreLoop reader size %d\n", chunk.Reader.Size()) + chunk.Data = make([]byte, chunk.Reader.Size()) + chunk.Reader.ReadAt(chunk.Data, 0) + self.ChunkStore.Put(chunk) select { case <-self.quitC: break STORE diff --git a/bzz/dpa_test.go b/bzz/dpa_test.go index f4cf80563f..73f34782ac 100644 --- a/bzz/dpa_test.go +++ b/bzz/dpa_test.go @@ -1,5 +1,51 @@ package bzz import ( -// "github.com/ethereum/go-ethereum/bzz/test" + //"bytes" + "fmt" + "github.com/ethereum/go-ethereum/bzz/test" + "os" + "testing" + "time" ) + +func TestDPA(t *testing.T) { + test.LogInit() + os.RemoveAll("/tmp/bzz") + dbStore, err := newDbStore("/tmp/bzz") + if err != nil { + t.Errorf("DB error: %v", err) + } + // memStore := newMemStore(dbStore) + // localStore := &localStore{ + // memStore, + // dbStore, + // } + chunker := &TreeChunker{} + chunker.Init() + dpa := &DPA{ + Chunker: chunker, + ChunkStore: dbStore, + } + dpa.Start() + reader, slice := testDataReader(0x100) + fmt.Printf("Chunk size: %d.", len(slice)) + //key, err := dpa.Store(reader) + _, err = dpa.Store(reader) + if err != nil { + t.Errorf("Store error: %v", err) + } + // resultReader := dpa.Retrieve(key) + // resultSlice := make([]byte, len(slice)) + // n, err := resultReader.Read(resultSlice) + // if err != nil { + // t.Errorf("Retrieve error: %v", err) + // } + // if n != len(slice) { + // t.Errorf("Slice size error got %d, expected %d.", n, len(slice)) + // } + // if !bytes.Equal(slice, resultSlice) { + // t.Errorf("Comparison error.") + // } + time.Sleep(time.Second) +} diff --git a/bzz/memstore_test.go b/bzz/memstore_test.go index 7e93e6ab31..ee22f72a59 100644 --- a/bzz/memstore_test.go +++ b/bzz/memstore_test.go @@ -34,3 +34,13 @@ func TestMemStore2_100(t *testing.T) { test.LogInit() testMemStore(100, 2, t) } + +func TestMemStoreNotFound(t *testing.T) { + test.LogInit() + m := newMemStore(nil) + zeroKey := make([]byte, 32) + _, err := m.Get(zeroKey) + if err != notFound { + t.Errorf("Expected notFound, got %v", err) + } +}