MCPcopy
hub / github.com/perkeep/perkeep / testStorage

Function testStorage

pkg/blobserver/s3/s3_test.go:126–202  ·  view source on GitHub ↗
(t *testing.T, bucketDir string)

Source from the content-addressed store, hash-verified

124}
125
126func testStorage(t *testing.T, bucketDir string) {
127 if *bucket == "" || *key == "" || *secret == "" {
128 t.Skip("Skipping test because at least one of -s3_key, -s3_secret, or -s3_bucket flags has not been provided.")
129 }
130 if !strings.HasPrefix(*bucket, "camlistore-") || !strings.HasSuffix(*bucket, "-test") {
131 t.Fatalf("bogus bucket name %q; must begin with 'camlistore-' and end in '-test'", *bucket)
132 }
133
134 bucketWithDir := path.Join(*bucket, bucketDir)
135 storagetest.Test(t, func(t *testing.T) blobserver.Storage {
136 sto, err := newFromConfig(nil, jsonconfig.Obj{
137 "aws_access_key": *key,
138 "aws_secret_access_key": *secret,
139 "bucket": bucketWithDir,
140 "cacheSize": float64(0),
141 })
142 if err != nil {
143 t.Fatalf("newFromConfig error: %v", err)
144 }
145 if !testing.Short() {
146 log.Printf("Warning: this test does many serial operations. Without the go test -short flag, this test will be very slow.")
147 }
148
149 if bucketWithDir != *bucket {
150 // Adding "a", and "c" objects in the bucket to make sure objects out of the
151 // "directory" are not touched and have no influence.
152 for _, key := range []string{"a", "c"} {
153 if err != nil {
154 t.Fatalf("could not insert object %s in bucket %v: %v", key, sto.(*s3Storage).bucket, err)
155 }
156 if _, err := sto.(*s3Storage).client.PutObject(&s3.PutObjectInput{
157 Bucket: &sto.(*s3Storage).bucket,
158 Key: aws.String(key),
159 Body: strings.NewReader(key),
160 }); err != nil {
161 t.Fatalf("could not insert object %s in bucket %v: %v", key, sto.(*s3Storage).bucket, err)
162 }
163 }
164 }
165 clearBucket := func(beforeTests bool) func() {
166 return func() {
167 var all []blob.Ref
168 blobserver.EnumerateAll(ctxbg, sto, func(sb blob.SizedRef) error {
169 t.Logf("Deleting: %v", sb.Ref)
170 all = append(all, sb.Ref)
171 return nil
172 })
173 if err := sto.RemoveBlobs(ctxbg, all); err != nil {
174 t.Fatalf("Error removing blobs during cleanup: %v", err)
175 }
176 if beforeTests {
177 return
178 }
179 if bucketWithDir != *bucket {
180 // checking that "a" and "c" at the root were left untouched.
181 for _, key := range []string{"a", "c"} {
182 if _, err := sto.(*s3Storage).client.GetObject(&s3.GetObjectInput{
183 Bucket: &sto.(*s3Storage).bucket,

Callers 2

TestS3Function · 0.70
TestS3WithBucketDirFunction · 0.70

Calls 10

TestFunction · 0.92
EnumerateAllFunction · 0.92
HasPrefixMethod · 0.80
PrintfMethod · 0.80
PutObjectMethod · 0.80
LogfMethod · 0.80
newFromConfigFunction · 0.70
FatalfMethod · 0.65
RemoveBlobsMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected