func TestCallback(t *testing.T) {
	chunkAddr := chunktesting.GenerateTestRandomChunk().Address()
	targets := pss.Targets{[]byte{0xED}}
	callbackWasCalled := make(chan bool)  
	pssSender := &mockPssSender{
		callbackC: callbackWasCalled,
	}
	recoveryCallback := recovery.NewCallback(pssSender)
	go recoveryCallback(chunkAddr, targets)
	select {
	case <-callbackWasCalled:
		break
	case <-time.After(100 * time.Millisecond):
		t.Fatal("recovery callback was not called")
	}
}
TestCallback tests that a  callback can be created and called.
package recovery_test
import (
	"context"
	"crypto/ecdsa"
	"errors"
	"io/ioutil"
	"testing"
	"time"
	accountingmock "github.com/ethsana/sana/pkg/accounting/mock"
	"github.com/ethsana/sana/pkg/logging"
	"github.com/ethsana/sana/pkg/netstore"
	"github.com/ethsana/sana/pkg/p2p/streamtest"
	"github.com/ethsana/sana/pkg/postage"
	pricermock "github.com/ethsana/sana/pkg/pricer/mock"
	"github.com/ethsana/sana/pkg/pss"
	"github.com/ethsana/sana/pkg/pushsync"
	pushsyncmock "github.com/ethsana/sana/pkg/pushsync/mock"
	"github.com/ethsana/sana/pkg/recovery"
	"github.com/ethsana/sana/pkg/retrieval"
	"github.com/ethsana/sana/pkg/sctx"
	"github.com/ethsana/sana/pkg/storage"
	"github.com/ethsana/sana/pkg/storage/mock"
	storemock "github.com/ethsana/sana/pkg/storage/mock"
	chunktesting "github.com/ethsana/sana/pkg/storage/testing"
	"github.com/ethsana/sana/pkg/swarm"
	"github.com/ethsana/sana/pkg/topology"
)