mock test for DestroyShard

This commit is contained in:
LexLuthr 2022-07-11 17:11:35 +05:30
parent 2b63a9d0bd
commit 89b3119220

View File

@ -23,7 +23,7 @@ import (
// TestWrapperAcquireRecovery verifies that if acquire shard returns a "not found" // TestWrapperAcquireRecovery verifies that if acquire shard returns a "not found"
// error, the wrapper will attempt to register the shard then reacquire // error, the wrapper will attempt to register the shard then reacquire
func TestWrapperAcquireRecovery(t *testing.T) { func TestWrapperAcquireRecoveryDestroy(t *testing.T) {
ctx := context.Background() ctx := context.Background()
pieceCid, err := cid.Parse("bafkqaaa") pieceCid, err := cid.Parse("bafkqaaa")
require.NoError(t, err) require.NoError(t, err)
@ -48,6 +48,7 @@ func TestWrapperAcquireRecovery(t *testing.T) {
Accessor: getShardAccessor(t), Accessor: getShardAccessor(t),
}, },
register: make(chan shard.Key, 1), register: make(chan shard.Key, 1),
destroy: make(chan shard.Key, 1),
} }
w.dagst = mock w.dagst = mock
@ -73,6 +74,27 @@ func TestWrapperAcquireRecovery(t *testing.T) {
count++ count++
} }
require.Greater(t, count, 0) require.Greater(t, count, 0)
// Destroy the shard
dr := make(chan dagstore.ShardResult, 1)
err = w.DestroyShard(ctx, pieceCid, dr)
dctx, cancel := context.WithTimeout(ctx, time.Second)
defer cancel()
select {
case <-dctx.Done():
require.Fail(t, "failed to call register")
case k := <-mock.destroy:
require.Equal(t, k.String(), pieceCid.String())
}
var dcount int
dch, err := mybs.AllKeysChan(ctx)
require.NoError(t, err)
for range dch {
count++
}
require.Equal(t, dcount, 0)
} }
// TestWrapperBackground verifies the behaviour of the background go routine // TestWrapperBackground verifies the behaviour of the background go routine
@ -130,11 +152,14 @@ type mockDagStore struct {
gc chan struct{} gc chan struct{}
recover chan shard.Key recover chan shard.Key
destroy chan shard.Key
close chan struct{} close chan struct{}
} }
func (m *mockDagStore) DestroyShard(ctx context.Context, key shard.Key, out chan dagstore.ShardResult, _ dagstore.DestroyOpts) error { func (m *mockDagStore) DestroyShard(ctx context.Context, key shard.Key, out chan dagstore.ShardResult, _ dagstore.DestroyOpts) error {
panic("implement me") m.destroy <- key
out <- dagstore.ShardResult{Key: key}
return nil
} }
func (m *mockDagStore) GetShardInfo(k shard.Key) (dagstore.ShardInfo, error) { func (m *mockDagStore) GetShardInfo(k shard.Key) (dagstore.ShardInfo, error) {