swarm/storage/netstore: add fetcher cancellation on shutdown (#19049)
swarm/network/stream: remove netstore internal wg swarm/network/stream: run individual tests with t.Run
This commit is contained in:
parent
e9f70c9064
commit
3ee09ba035
@ -453,6 +453,8 @@ func TestDeliveryFromNodes(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testDeliveryFromNodes(t *testing.T, nodes, chunkCount int, skipCheck bool) {
|
func testDeliveryFromNodes(t *testing.T, nodes, chunkCount int, skipCheck bool) {
|
||||||
|
t.Helper()
|
||||||
|
t.Run(fmt.Sprintf("testDeliveryFromNodes_%d_%d_skipCheck_%t", nodes, chunkCount, skipCheck), func(t *testing.T) {
|
||||||
sim := simulation.New(map[string]simulation.ServiceFunc{
|
sim := simulation.New(map[string]simulation.ServiceFunc{
|
||||||
"streamer": func(ctx *adapters.ServiceContext, bucket *sync.Map) (s node.Service, cleanup func(), err error) {
|
"streamer": func(ctx *adapters.ServiceContext, bucket *sync.Map) (s node.Service, cleanup func(), err error) {
|
||||||
addr, netStore, delivery, clean, err := newNetStoreAndDelivery(ctx, bucket)
|
addr, netStore, delivery, clean, err := newNetStoreAndDelivery(ctx, bucket)
|
||||||
@ -580,6 +582,7 @@ func testDeliveryFromNodes(t *testing.T, nodes, chunkCount int, skipCheck bool)
|
|||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
t.Fatal(result.Error)
|
t.Fatal(result.Error)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkDeliveryFromNodesWithoutCheck(b *testing.B) {
|
func BenchmarkDeliveryFromNodesWithoutCheck(b *testing.B) {
|
||||||
|
@ -74,7 +74,7 @@ func TestRetrieval(t *testing.T) {
|
|||||||
//if nodes/chunks have been provided via commandline,
|
//if nodes/chunks have been provided via commandline,
|
||||||
//run the tests with these values
|
//run the tests with these values
|
||||||
if *nodes != 0 && *chunks != 0 {
|
if *nodes != 0 && *chunks != 0 {
|
||||||
err := runRetrievalTest(*chunks, *nodes)
|
err := runRetrievalTest(t, *chunks, *nodes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -93,10 +93,12 @@ func TestRetrieval(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, n := range nodeCnt {
|
for _, n := range nodeCnt {
|
||||||
for _, c := range chnkCnt {
|
for _, c := range chnkCnt {
|
||||||
err := runRetrievalTest(c, n)
|
t.Run(fmt.Sprintf("TestRetrieval_%d_%d", n, c), func(t *testing.T) {
|
||||||
|
err := runRetrievalTest(t, c, n)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -225,7 +227,8 @@ simulation's `action` function.
|
|||||||
|
|
||||||
The snapshot should have 'streamer' in its service list.
|
The snapshot should have 'streamer' in its service list.
|
||||||
*/
|
*/
|
||||||
func runRetrievalTest(chunkCount int, nodeCount int) error {
|
func runRetrievalTest(t *testing.T, chunkCount int, nodeCount int) error {
|
||||||
|
t.Helper()
|
||||||
sim := simulation.New(retrievalSimServiceMap)
|
sim := simulation.New(retrievalSimServiceMap)
|
||||||
defer sim.Close()
|
defer sim.Close()
|
||||||
|
|
||||||
|
@ -128,7 +128,25 @@ func (n *NetStore) FetchFunc(ctx context.Context, ref Address) func(context.Cont
|
|||||||
func (n *NetStore) Close() {
|
func (n *NetStore) Close() {
|
||||||
close(n.closeC)
|
close(n.closeC)
|
||||||
n.store.Close()
|
n.store.Close()
|
||||||
// TODO: loop through fetchers to cancel them
|
|
||||||
|
wg := sync.WaitGroup{}
|
||||||
|
for _, key := range n.fetchers.Keys() {
|
||||||
|
if f, ok := n.fetchers.Get(key); ok {
|
||||||
|
if fetch, ok := f.(*fetcher); ok {
|
||||||
|
wg.Add(1)
|
||||||
|
go func(fetch *fetcher) {
|
||||||
|
defer wg.Done()
|
||||||
|
fetch.cancel()
|
||||||
|
|
||||||
|
select {
|
||||||
|
case <-fetch.deliveredC:
|
||||||
|
case <-fetch.cancelledC:
|
||||||
|
}
|
||||||
|
}(fetch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
// get attempts at retrieving the chunk from LocalStore
|
// get attempts at retrieving the chunk from LocalStore
|
||||||
|
Loading…
Reference in New Issue
Block a user