An example of how to make an out of tree backend for rclone
This commit is contained in:
40
backend/ram/ram_internal_test.go
Normal file
40
backend/ram/ram_internal_test.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package ram
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
_ "github.com/rclone/rclone/backend/local"
|
||||
"github.com/rclone/rclone/fs/operations"
|
||||
"github.com/rclone/rclone/fstest"
|
||||
"github.com/rclone/rclone/fstest/fstests"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
var t1 = fstest.Time("2001-02-03T04:05:06.499999999Z")
|
||||
|
||||
// InternalTest dispatches all internal tests
|
||||
func (f *Fs) InternalTest(t *testing.T) {
|
||||
t.Run("PurgeListDeadlock", func(t *testing.T) {
|
||||
testPurgeListDeadlock(t)
|
||||
})
|
||||
}
|
||||
|
||||
// test that Purge fallback does not result in deadlock from concurrently listing and removing
|
||||
func testPurgeListDeadlock(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
r := fstest.NewRunIndividual(t)
|
||||
r.Mkdir(ctx, r.Fremote)
|
||||
r.Fremote.Features().Disable("Purge") // force fallback-purge
|
||||
|
||||
// make a lot of files to prevent it from finishing too quickly
|
||||
for i := range 100 {
|
||||
dst := "file" + fmt.Sprint(i) + ".txt"
|
||||
r.WriteObject(ctx, dst, "hello", t1)
|
||||
}
|
||||
|
||||
require.NoError(t, operations.Purge(ctx, r.Fremote, ""))
|
||||
}
|
||||
|
||||
var _ fstests.InternalTester = (*Fs)(nil)
|
||||
Reference in New Issue
Block a user