store: fix various small test issues
This commit is contained in:
parent
1fdbe1bad1
commit
b3261a584e
3 changed files with 32 additions and 14 deletions
15
chihaya.go
15
chihaya.go
|
@ -145,12 +145,17 @@ type Peer struct {
|
|||
Port uint16
|
||||
}
|
||||
|
||||
// Equal reports whether p and x are the same.
|
||||
func (p Peer) Equal(x Peer) bool {
|
||||
return p.EqualEndpoint(x) && p.ID == x.ID
|
||||
}
|
||||
|
||||
// EqualEndpoint reports whether p and x have the same endpoint.
|
||||
func (p Peer) EqualEndpoint(x Peer) bool {
|
||||
return p.Port == x.Port && p.IP.Equal(x.IP)
|
||||
}
|
||||
|
||||
// Params is used to fetch request parameters.
|
||||
type Params interface {
|
||||
String(key string) (string, error)
|
||||
}
|
||||
|
||||
// Equal reports whether peer and x are the same.
|
||||
func (peer Peer) Equal(x Peer) bool {
|
||||
return peer.ID == x.ID && peer.Port == x.Port && peer.IP.Equal(x.IP)
|
||||
}
|
||||
|
|
|
@ -857,6 +857,8 @@ func generatePeers() (a [num1KElements]chihaya.Peer) {
|
|||
func PreparePeerStoreBenchmarker(driver PeerStoreDriver) PeerStoreBenchmarker {
|
||||
return peerStoreBench{
|
||||
driver: driver,
|
||||
infohashes: generateInfohashes(),
|
||||
peers: generatePeers(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -359,6 +359,10 @@ func (s *ipStoreTester) TestHasAllHasAnyNetworks(t *testing.T, cfg *DriverConfig
|
|||
// Every benchmark expects a new, clean storage. Every benchmark should be
|
||||
// called with a DriverConfig that ensures this.
|
||||
type PeerStoreTester interface {
|
||||
// CompareEndpoints sets the function used to compare peers to a
|
||||
// comparison that only compares endpoints and omits PeerIDs.
|
||||
CompareEndpoints()
|
||||
|
||||
TestPeerStore(*testing.T, *DriverConfig)
|
||||
}
|
||||
|
||||
|
@ -366,19 +370,26 @@ var _ PeerStoreTester = &peerStoreTester{}
|
|||
|
||||
type peerStoreTester struct {
|
||||
driver PeerStoreDriver
|
||||
equalityFunc func(a, b chihaya.Peer) bool
|
||||
}
|
||||
|
||||
// PreparePeerStoreTester prepares a reusable suite for PeerStore driver
|
||||
// tests.
|
||||
// The tester will use PeerIDs and endpoints to compare peers.
|
||||
func PreparePeerStoreTester(driver PeerStoreDriver) PeerStoreTester {
|
||||
return &peerStoreTester{
|
||||
driver: driver,
|
||||
equalityFunc: func(a, b chihaya.Peer) bool { return a.Equal(b) },
|
||||
}
|
||||
}
|
||||
|
||||
func peerInSlice(peer chihaya.Peer, peers []chihaya.Peer) bool {
|
||||
func (pt *peerStoreTester) CompareEndpoints() {
|
||||
pt.equalityFunc = func(a, b chihaya.Peer) bool { return a.EqualEndpoint(b) }
|
||||
}
|
||||
|
||||
func (pt *peerStoreTester) peerInSlice(peer chihaya.Peer, peers []chihaya.Peer) bool {
|
||||
for _, v := range peers {
|
||||
if v.Equal(peer) {
|
||||
if pt.equalityFunc(peer, v) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
@ -453,9 +464,9 @@ func (pt *peerStoreTester) TestPeerStore(t *testing.T, cfg *DriverConfig) {
|
|||
}
|
||||
|
||||
if p.seeder {
|
||||
require.True(t, peerInSlice(peer, seeders))
|
||||
require.True(t, pt.peerInSlice(peer, seeders))
|
||||
} else {
|
||||
require.True(t, peerInSlice(peer, leechers))
|
||||
require.True(t, pt.peerInSlice(peer, leechers))
|
||||
}
|
||||
|
||||
if p.seeder {
|
||||
|
@ -506,8 +517,8 @@ func (pt *peerStoreTester) TestPeerStore(t *testing.T, cfg *DriverConfig) {
|
|||
|
||||
err = s.CollectGarbage(time.Now())
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, s.NumLeechers(hash), 0)
|
||||
require.Equal(t, s.NumSeeders(hash), 0)
|
||||
require.Equal(t, 0, s.NumLeechers(hash))
|
||||
require.Equal(t, 0, s.NumSeeders(hash))
|
||||
|
||||
errChan := s.Stop()
|
||||
err = <-errChan
|
||||
|
|
Loading…
Reference in a new issue