func (r *Run) checkWithDuplicates(t *testing.T, items ...fstest.Item) { objects, size, err := fs.Count(r.fremote) require.NoError(t, err) assert.Equal(t, int64(len(items)), objects) wantSize := int64(0) for _, item := range items { wantSize += item.Size } assert.Equal(t, wantSize, size) }
func TestCount(t *testing.T) { objects, size, err := fs.Count(fremote) if err != nil { t.Fatalf("Count failed: %v", err) } if objects != 2 { t.Errorf("want 2 objects got %d", objects) } if size != 60 { t.Errorf("want size 60 got %d", size) } }
func TestCount(t *testing.T) { r := NewRun(t) defer r.Finalise() file1 := r.WriteBoth("potato2", "------------------------------------------------------------", t1) file2 := r.WriteBoth("empty space", "", t2) file3 := r.WriteBoth("sub dir/potato3", "hello", t2) fstest.CheckItems(t, r.fremote, file1, file2, file3) // Check the MaxDepth too fs.Config.MaxDepth = 1 defer func() { fs.Config.MaxDepth = -1 }() objects, size, err := fs.Count(r.fremote) require.NoError(t, err) assert.Equal(t, int64(2), objects) assert.Equal(t, int64(60), size) }
func TestCount(t *testing.T) { r := NewRun(t) defer r.Finalise() file1 := r.WriteBoth("potato2", "------------------------------------------------------------", t1) file2 := r.WriteBoth("empty space", "", t2) fstest.CheckItems(t, r.fremote, file1, file2) objects, size, err := fs.Count(r.fremote) if err != nil { t.Fatalf("Count failed: %v", err) } if objects != 2 { t.Errorf("want 2 objects got %d", objects) } if size != 60 { t.Errorf("want size 60 got %d", size) } }
func TestDeduplicateFirst(t *testing.T) { r := NewRun(t) defer r.Finalise() skipIfCantDedupe(t, r.fremote) file1 := r.WriteUncheckedObject("one", "This is one", t1) file2 := r.WriteUncheckedObject("one", "This is one A", t1) file3 := r.WriteUncheckedObject("one", "This is one BB", t1) r.checkWithDuplicates(t, file1, file2, file3) err := fs.Deduplicate(r.fremote, fs.DeduplicateFirst) require.NoError(t, err) objects, size, err := fs.Count(r.fremote) require.NoError(t, err) assert.Equal(t, int64(1), objects) if size != file1.Size && size != file2.Size && size != file3.Size { t.Errorf("Size not one of the object sizes %d", size) } }
func TestDeduplicateFirst(t *testing.T) { if *RemoteName != "TestDrive:" { t.Skip("Can only test deduplicate on google drive") } r := NewRun(t) defer r.Finalise() file1 := r.WriteUncheckedObject("one", "This is one", t1) file2 := r.WriteUncheckedObject("one", "This is one A", t1) file3 := r.WriteUncheckedObject("one", "This is one BB", t1) r.checkWithDuplicates(t, file1, file2, file3) err := fs.Deduplicate(r.fremote, fs.DeduplicateFirst) require.NoError(t, err) objects, size, err := fs.Count(r.fremote) require.NoError(t, err) assert.Equal(t, 1, objects) if size != file1.Size && size != file2.Size && size != file3.Size { t.Errorf("Size not one of the object sizes %d", size) } }
Produces an md5sum file for all the objects in the path. This is in the same format as the standard md5sum tool produces.`, Run: func(fdst, fsrc fs.Fs) error { return fs.Md5sum(fdst, os.Stdout) }, MinArgs: 1, MaxArgs: 1, }, { Name: "size", ArgsHelp: "remote:path", Help: ` Returns the total size of objects in remote:path and the number of objects.`, Run: func(fdst, fsrc fs.Fs) error { objects, size, err := fs.Count(fdst) if err != nil { return err } fmt.Printf("Total objects: %d\n", objects) fmt.Printf("Total size: %v (%d bytes)\n", fs.SizeSuffix(size), size) return nil }, MinArgs: 1, MaxArgs: 1, }, { Name: "mkdir", ArgsHelp: "remote:path", Help: ` Make the path if it doesn't already exist`,
import ( "fmt" "github.com/ncw/rclone/cmd" "github.com/ncw/rclone/fs" "github.com/spf13/cobra" ) func init() { cmd.Root.AddCommand(commandDefintion) } var commandDefintion = &cobra.Command{ Use: "size remote:path", Short: `Prints the total size and number of objects in remote:path.`, Run: func(command *cobra.Command, args []string) { cmd.CheckArgs(1, 1, command, args) fsrc := cmd.NewFsSrc(args) cmd.Run(false, false, command, func() error { objects, size, err := fs.Count(fsrc) if err != nil { return err } fmt.Printf("Total objects: %d\n", objects) fmt.Printf("Total size: %s (%d Bytes)\n", fs.SizeSuffix(size).Unit("Bytes"), size) return nil }) }, }
"github.com/spf13/cobra" ) func init() { cmd.Root.AddCommand(memtestCmd) } var memtestCmd = &cobra.Command{ Use: "memtest remote:path", Short: `Load all the objects at remote:path and report memory stats.`, Hidden: true, Run: func(command *cobra.Command, args []string) { cmd.CheckArgs(1, 1, command, args) fsrc := cmd.NewFsSrc(args) cmd.Run(false, command, func() error { objects, _, err := fs.Count(fsrc) if err != nil { return err } objs := make([]fs.Object, 0, objects) var before, after runtime.MemStats runtime.GC() runtime.ReadMemStats(&before) var mu sync.Mutex err = fs.ListFn(fsrc, func(o fs.Object) { mu.Lock() objs = append(objs, o) mu.Unlock() }) if err != nil { return err