github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/state/backups/export_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package backups 5 6 import ( 7 "bytes" 8 "io" 9 10 "github.com/juju/errors" 11 ) 12 13 var ( 14 Create = create 15 FileTimestamp = fileTimestamp 16 17 TestGetFilesToBackUp = &getFilesToBackUp 18 GetDBDumper = &getDBDumper 19 RunCreate = &runCreate 20 FinishMeta = &finishMeta 21 GetMongodumpPath = &getMongodumpPath 22 RunCommand = &runCommandFn 23 AvailableDisk = &availableDisk 24 TotalDisk = &totalDisk 25 DirSize = &dirSize 26 ) 27 28 // ExposeCreateResult extracts the values in a create() result. 29 func ExposeCreateResult(result *createResult) (io.ReadCloser, int64, string, string) { 30 return result.archiveFile, result.size, result.checksum, result.filename 31 } 32 33 // NewTestCreateArgs builds a new args value for create() calls. 34 func NewTestCreateArgs(backupDir string, filesToBackUp []string, db DBDumper, metar io.Reader) *createArgs { 35 args := createArgs{ 36 destinationDir: backupDir, 37 filesToBackUp: filesToBackUp, 38 db: db, 39 metadataReader: metar, 40 } 41 return &args 42 } 43 44 // ExposeCreateResult extracts the values in a create() args value. 45 func ExposeCreateArgs(args *createArgs) (string, []string, DBDumper) { 46 return args.destinationDir, args.filesToBackUp, args.db 47 } 48 49 // NewTestCreateResult builds a new create() result. 50 func NewTestCreateResult(file io.ReadCloser, size int64, checksum, filename string) *createResult { 51 result := createResult{ 52 archiveFile: file, 53 size: size, 54 checksum: checksum, 55 filename: filename, 56 } 57 return &result 58 } 59 60 // NewTestCreate builds a new replacement for create() with the given result. 61 func NewTestCreate(result *createResult) (*createArgs, func(*createArgs) (*createResult, error)) { 62 var received createArgs 63 64 if result == nil { 65 archiveFile := io.NopCloser(bytes.NewBufferString("<archive>")) 66 result = NewTestCreateResult(archiveFile, 10, "<checksum>", "") 67 } 68 69 testCreate := func(args *createArgs) (*createResult, error) { 70 received = *args 71 return result, nil 72 } 73 74 return &received, testCreate 75 } 76 77 // NewTestCreate builds a new replacement for create() with the given failure. 78 func NewTestCreateFailure(failure string) func(*createArgs) (*createResult, error) { 79 return func(*createArgs) (*createResult, error) { 80 return nil, errors.New(failure) 81 } 82 } 83 84 // NewTestMetaFinisher builds a new replacement for finishMetadata with 85 // the given failure. 86 func NewTestMetaFinisher(failure string) func(*Metadata, *createResult) error { 87 return func(*Metadata, *createResult) error { 88 if failure == "" { 89 return nil 90 } 91 return errors.New(failure) 92 } 93 }