Change default response to QueryID for unjoined nodes
reason: allow unjoined nodes to find bootstrap node in local cache, while always advertising itself to incoming requests for bootstrapping.
This commit is contained in:
parent
8d349212b4
commit
f6481996d7
2 changed files with 23 additions and 5 deletions
|
@ -132,10 +132,11 @@ spec = do
|
|||
cacheWith2Entries :: NodeCache
|
||||
cacheWith2Entries = addCacheEntryPure 10 (RemoteCacheEntry node5 10) (addCacheEntryPure 10 (RemoteCacheEntry node2 10) emptyCache)
|
||||
cacheWith4Entries = addCacheEntryPure 10 (RemoteCacheEntry node3 10) (addCacheEntryPure 10 (RemoteCacheEntry node4 10) cacheWith2Entries)
|
||||
it "nodes not joined provide the default answer FOUND" $ do
|
||||
it "unjoined nodes should never return themselfs" $ do
|
||||
exampleLocalNodeAsRemote <- toRemoteNodeState <$> exampleLocalNode
|
||||
queryLocalCache <$> exampleLocalNode <*> pure emptyCache <*> pure 3 <*> pure (toNodeID 2^(9::Integer)+5) `shouldReturn` FOUND exampleLocalNodeAsRemote
|
||||
queryLocalCache <$> exampleLocalNode <*> pure cacheWith4Entries <*> pure 1 <*> pure (toNodeID 2342) `shouldReturn` FOUND exampleLocalNodeAsRemote
|
||||
queryLocalCache <$> exampleLocalNode <*> pure emptyCache <*> pure 3 <*> pure (toNodeID 2^(9::Integer)+5) `shouldReturn` FORWARD Set.empty
|
||||
(FORWARD fwSet) <- queryLocalCache <$> exampleLocalNode <*> pure cacheWith4Entries <*> pure 1 <*> (getNid <$> exampleLocalNode)
|
||||
remoteNode (head $ Set.elems fwSet) `shouldBe` node4
|
||||
it "joined nodes do not fall back to the default" $
|
||||
queryLocalCache <$> node1 <*> pure emptyCache <*> pure 1 <*> pure (toNodeID 3) `shouldReturn` FORWARD Set.empty
|
||||
it "works on a cache with less entries than needed" $ do
|
||||
|
@ -265,6 +266,17 @@ spec = do
|
|||
let startAt5 = serialiseMessage 600 (largeMessage {part = 5})
|
||||
Map.lookup 1 startAt5 `shouldBe` Nothing
|
||||
part <$> (deserialiseMessage . fromJust) (Map.lookup 5 startAt5) `shouldBe` Right 5
|
||||
describe "join cache lookup" $
|
||||
it "A bootstrap cache initialised with just one node returns that one." $ do
|
||||
let
|
||||
bootstrapNid = toNodeID 34804191837661041451755206127000721433747285589603756490902196113256157045194
|
||||
bootstrapNode = setNid bootstrapNid exampleNodeState
|
||||
bootstrapCache = addCacheEntryPure 10 (RemoteCacheEntry bootstrapNode 19) initCache
|
||||
ownId = toNodeID 34804191837661041451755206127000721433707928516052624394829818586723613390165
|
||||
ownNode <- setNid ownId <$> exampleLocalNode
|
||||
let (FORWARD qResult) = queryLocalCache ownNode bootstrapCache 2 ownId
|
||||
remoteNode (head $ Set.elems qResult) `shouldBe` bootstrapNode
|
||||
|
||||
|
||||
|
||||
-- some example data
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue