swarm/storage, swarm/network: Fix delivery tests

This commit is contained in:
Balint Gabor 2018-01-23 17:50:32 +01:00
parent 97e4497c49
commit 172eb9e14d
3 changed files with 24 additions and 11 deletions

View file

@ -63,11 +63,12 @@ func NewStreamerService(ctx *adapters.ServiceContext) (node.Service, error) {
id := ctx.Config.ID id := ctx.Config.ID
addr := toAddr(id) addr := toAddr(id)
kad := network.NewKademlia(addr.Over(), network.NewKadParams()) kad := network.NewKademlia(addr.Over(), network.NewKadParams())
store := stores[id] store := stores[id].(*storage.LocalStore)
db := storage.NewDBAPI(store.(*storage.LocalStore)) db := storage.NewDBAPI(store)
delivery := NewDelivery(kad, db) delivery := NewDelivery(kad, db)
deliveries[id] = delivery deliveries[id] = delivery
r := NewRegistry(addr, delivery, store, defaultSkipCheck) netStore := storage.NewNetStore(store, nil)
r := NewRegistry(addr, delivery, netStore, defaultSkipCheck)
RegisterSwarmSyncerServer(r, db) RegisterSwarmSyncerServer(r, db)
RegisterSwarmSyncerClient(r, db) RegisterSwarmSyncerClient(r, db)
go func() { go func() {

View file

@ -94,6 +94,7 @@ func NewTestLocalStoreForAddr(path string, basekey []byte) (*LocalStore, error)
// LocalStore is itself a chunk store // LocalStore is itself a chunk store
// unsafe, in that the data is not integrity checked // unsafe, in that the data is not integrity checked
func (self *LocalStore) Put(chunk *Chunk) { func (self *LocalStore) Put(chunk *Chunk) {
chunk.Size = int64(binary.LittleEndian.Uint64(chunk.SData[0:8]))
self.memStore.Put(chunk) self.memStore.Put(chunk)
go func() { go func() {
self.DbStore.Put(chunk) self.DbStore.Put(chunk)

View file

@ -36,17 +36,28 @@ func NewNetStore(localStore *LocalStore, retrieve func(chunk *Chunk) error) *Net
// Get is the entrypoint for local retrieve requests // Get is the entrypoint for local retrieve requests
// waits for response or times out // waits for response or times out
func (self *NetStore) Get(key Key) (chunk *Chunk, err error) { func (self *NetStore) Get(key Key) (chunk *Chunk, err error) {
var created bool if self.retrieve == nil {
chunk, created = self.localStore.GetOrCreateRequest(key) chunk, err = self.localStore.Get(key)
if chunk.ReqC == nil { if err == nil {
return chunk, nil return chunk, nil
} }
if err != ErrFetching {
if created {
if err := self.retrieve(chunk); err != nil {
return nil, err return nil, err
} }
} else {
var created bool
chunk, created = self.localStore.GetOrCreateRequest(key)
if chunk.ReqC == nil {
return chunk, nil
}
if created {
if err := self.retrieve(chunk); err != nil {
return nil, err
}
}
} }
t := time.NewTicker(searchTimeout) t := time.NewTicker(searchTimeout)
defer t.Stop() defer t.Stop()