Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: exclude invalid for remoteObjects #35

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 39 additions & 17 deletions engine/engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,19 @@ type Config struct {
Excludes []string `yaml:"excludes"`
}

func (c *Config) buildRemoteExcludes() []string {
return c.buildExcludes(c.SaveRoot)
}

func (c *Config) buildExcludes(root string) []string {
rets := make([]string, 0)
for _, exclude := range c.Excludes {
rets = append(rets, filepath.Join(root, exclude))
}

return c.Excludes
}

// Engine provides the core logic to finish the feature
type Engine struct {
echo
Expand All @@ -43,7 +56,10 @@ func (e *Engine) TailRun(paths ...string) {
log.Fatalln(err)
}

if stat.IsDir() {
if stat.IsDir() && e.conf.ForceSync {
e.syncTo(path)
continue
} else if stat.IsDir() {
e.uploadDirectory(path)
continue
}
Expand All @@ -52,23 +68,30 @@ func (e *Engine) TailRun(paths ...string) {
}
}

func (e *Engine) uploadDirectory(dirPath string) {
objects, err := e.loadLocalObjects(dirPath)
func (e *Engine) syncTo(dirPath string) {
localObjects, err := e.loadLocalObjects(dirPath)
if err != nil {
log.Fatalln(err)
}

// directory sync
if e.conf.ForceSync {
s := NewSyncer(e.uploader)
if err := s.Sync(objects, e.conf.SaveRoot); err != nil {
log.Fatalln(err)
}
return
remoteObjects, err := e.uploader.ListObjects(e.conf.SaveRoot)
if err != nil {
log.Fatalln(err)
}

s := NewSyncer(e.uploader, e.conf, dirPath)
if err := s.Sync(localObjects, remoteObjects); err != nil {
log.Fatalln(err)
}
}

func (e *Engine) uploadDirectory(dirPath string) {
localObjects, err := e.loadLocalObjects(dirPath)
if err != nil {
log.Fatalln(err)
}

// directory normal upload
for _, obj := range objects {
for _, obj := range localObjects {
e.uploadFile(obj.FilePath, obj.Key)
}
}
Expand All @@ -93,7 +116,7 @@ func (e *Engine) loadLocalObjects(dirPath string) ([]uploader.Object, error) {
return err
}

if info.IsDir() || e.shouldExclude(dirPath, filePath) {
if info.IsDir() {
return nil
}

Expand All @@ -113,10 +136,9 @@ func (e *Engine) loadLocalObjects(dirPath string) ([]uploader.Object, error) {
return localObjects, nil
}

func (e *Engine) shouldExclude(dirPath, filePath string) bool {
parentPath := strings.TrimPrefix(dirPath, "./")
for _, ePath := range e.conf.Excludes {
if strings.HasPrefix(filePath, parentPath+strings.TrimPrefix(ePath, "/")) {
func shouldExclude(filepath string, excludes []string) bool {
for _, ePath := range excludes {
if strings.HasPrefix(filepath, ePath) {
return true
}
}
Expand Down
24 changes: 15 additions & 9 deletions engine/syncer.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,20 @@ import (

// Syncer is the syncer to finish the logic
type Syncer struct {
uploader uploader.Driver
uploader uploader.Driver
config Config
localRoot string

tobeUploadedObjects []uploader.Object
tobeDeletedObjects []uploader.Object
}

// NewSyncer returns a new syncer.
func NewSyncer(uploadDriver uploader.Driver) *Syncer {
func NewSyncer(uploadDriver uploader.Driver, conf Config, localRoot string) *Syncer {
return &Syncer{
uploader: uploadDriver,
uploader: uploadDriver,
config: conf,
localRoot: localRoot,

tobeUploadedObjects: make([]uploader.Object, 0),
tobeDeletedObjects: make([]uploader.Object, 0),
Expand All @@ -27,11 +31,7 @@ func NewSyncer(uploadDriver uploader.Driver) *Syncer {

// Sync uploads the to be upload objects to the cloud
// and delete the not exist remote objects
func (s *Syncer) Sync(localObjects []uploader.Object, saveRoot string) error {
remoteObjects, err := s.uploader.ListObjects(saveRoot)
if err != nil {
return err
}
func (s *Syncer) Sync(localObjects, remoteObjects []uploader.Object) error {
log.Printf("find %d local objects", len(localObjects))
log.Printf("find %d remote objects", len(remoteObjects))
log.Printf("compare the local files and the remote objects...")
Expand Down Expand Up @@ -60,6 +60,11 @@ func (s *Syncer) Sync(localObjects []uploader.Object, saveRoot string) error {
// compareObjects compare local files with the remote objects
func (s *Syncer) compareObjects(localObjects, remoteObjects []uploader.Object) {
for _, localObject := range localObjects {
cleanLocalRoot := strings.TrimPrefix(s.localRoot, "./")
if shouldExclude(localObject.FilePath, s.config.buildExcludes(cleanLocalRoot)) {
continue
}

if !s.objectExist(localObject, remoteObjects) {
localObject.Type = uploader.LocalObjectTypeAdded
s.tobeUploadedObjects = append(s.tobeUploadedObjects, localObject) // the added objects
Expand All @@ -73,7 +78,8 @@ func (s *Syncer) compareObjects(localObjects, remoteObjects []uploader.Object) {

// find the deleted objects
for _, remoteObject := range remoteObjects {
if s.objectExist(remoteObject, localObjects) {
if s.objectExist(remoteObject, localObjects) ||
shouldExclude(remoteObject.FilePath, s.config.buildRemoteExcludes()) {
continue
}

Expand Down
54 changes: 23 additions & 31 deletions engine/syncer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package engine
import (
"crypto/md5"
"encoding/hex"
"fmt"
"path/filepath"
"testing"

"github.com/stretchr/testify/assert"
Expand All @@ -13,43 +13,35 @@ import (

func TestSync(t *testing.T) {
// init test data
files := map[string]string{
"abc1.txt": "abcabc",
"abc2.txt": "112233",
"abc3.txt": "445566",
cfg := Config{SaveRoot: "/test/", Excludes: []string{"./abc"}}
e := New(cfg, &mockUploader{})
localObjects, err := e.loadLocalObjects("./testdata")
assert.NoError(t, err)

// test
syncer := NewSyncer(&mockUploader{}, cfg, "./testdata")
assert.NoError(t, syncer.Sync(localObjects, mockRemoteObjects(cfg.SaveRoot)))
}

func mockRemoteObjects(remoteRoot string) []uploader.Object {
remoteFiles := map[string]string{
"./abc/abc1.txt": "abcabc",
"./aaa/abc2.txt": "112233",
"./bbb/abc3.txt": "445566",
"./testdata/abc/a1.txt": "445566",
"./testdata/abc/a2.txt": "445566",
}

localObjects := make([]uploader.Object, 0)
for name, content := range files {
remoteObjects := make([]uploader.Object, 0)
for name, content := range remoteFiles {
hash := md5.Sum([]byte(content))
localObjects = append(localObjects, uploader.Object{
Key: name,
remoteObjects = append(remoteObjects, uploader.Object{
Key: filepath.Join(remoteRoot, name),
ETag: hex.EncodeToString(hash[:]),
FilePath: name,
Type: "text/plain",
})
}

// test
syncer := NewSyncer(&mockUploader{})
assert.NoError(t, syncer.Sync(localObjects, ""))
}

func TestSync2(t *testing.T) {
objects := []uploader.Object{
{
Key: "test",
FilePath: "test",
Type: "text/plain",
},
}

s := NewSyncer(&mockUploader{listErr: fmt.Errorf("list error")})
assert.Error(t, s.Sync(objects, ""))

s = NewSyncer(&mockUploader{uploadErr: fmt.Errorf("upload error")})
assert.Error(t, s.Sync(objects, ""))

s = NewSyncer(&mockUploader{deleteErr: fmt.Errorf("delete error")})
assert.Error(t, s.Sync(objects, ""))
return remoteObjects
}
Empty file added engine/testdata/abc/a1.txt
Empty file.
Empty file added engine/testdata/abc/a2.txt
Empty file.
Empty file added engine/testdata/file1.txt
Empty file.
Empty file added engine/testdata/file2.txt
Empty file.
Empty file added engine/testdata/file3.txt
Empty file.
15 changes: 10 additions & 5 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/aws/aws-sdk-go v1.30.29 h1:NXNqBS9hjOCpDL8SyCyl38gZX3LLLunKOJc5E7vJ8P0=
github.com/aws/aws-sdk-go v1.30.29/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
Expand Down Expand Up @@ -53,8 +55,10 @@ github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u
github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a h1:FaWFmfWdAUKbSCtOU2QjDaorUexogfaMgbipgYATUMU=
github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
Expand All @@ -65,7 +69,6 @@ github.com/manifoldco/promptui v0.7.0 h1:3l11YT8tm9MnwGFQ4kETwkzpAwY2Jt9lCrumCUW
github.com/manifoldco/promptui v0.7.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ=
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
Expand All @@ -91,8 +94,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/swaggo/gin-swagger v1.2.0/go.mod h1:qlH2+W7zXGZkczuL+r2nEBR2JTT+/lX05Nn6vPhc7OI=
github.com/swaggo/swag v1.5.1/go.mod h1:1Bl9F/ZBpVWh22nY0zmYyASPO1lI/zIwRDrpZU+tv8Y=
Expand Down Expand Up @@ -125,12 +128,12 @@ golang.org/x/net v0.0.0-20190611141213-3f473d35a33a/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120 h1:EZ3cVSzKOlJxAd8e8YAJ7no8nNypTxexh/YE/xW3ZEY=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181228144115-9a3f9b0469bb/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
Expand All @@ -139,6 +142,7 @@ golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
Expand All @@ -149,15 +153,16 @@ golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
14 changes: 7 additions & 7 deletions uploader/driver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,13 @@ var driverConfigs = []Config{
AccessKey: os.Getenv("UPLOADER_S3_AK"),
SecretKey: os.Getenv("UPLOADER_S3_SK"),
},
{
Name: "google",
Region: "auto",
Bucket: "ut-uptoc",
AccessKey: os.Getenv("UPLOADER_STORAGE_AK"),
SecretKey: os.Getenv("UPLOADER_STORAGE_SK"),
},
//{
// Name: "google",
// Region: "auto",
// Bucket: "ut-uptoc",
// AccessKey: os.Getenv("UPLOADER_STORAGE_AK"),
// SecretKey: os.Getenv("UPLOADER_STORAGE_SK"),
//},
}

func TestUploader(t *testing.T) {
Expand Down