mirror of
https://github.com/minio/minio.git
synced 2024-12-25 14:45:54 -05:00
tests: Fix a potential race in RemoveBucketNotification. (#3037)
Fixes #3036
This commit is contained in:
parent
ecaccefd2e
commit
e3ab478c70
@ -406,46 +406,17 @@ func testListenBucketNotificationHandler(obj ObjectLayer, instanceType, bucketNa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func testRemoveNotificationConfig(obj ObjectLayer, instanceType string, t TestErrHandler) {
|
func testRemoveNotificationConfig(obj ObjectLayer, instanceType, bucketName string, apiRouter http.Handler,
|
||||||
|
credentials credential, t *testing.T) {
|
||||||
invalidBucket := "Invalid\\Bucket"
|
invalidBucket := "Invalid\\Bucket"
|
||||||
// get random bucket name.
|
// get random bucket name.
|
||||||
randBucket := getRandomBucketName()
|
randBucket := bucketName
|
||||||
|
|
||||||
err := obj.MakeBucket(randBucket)
|
|
||||||
if err != nil {
|
|
||||||
// failed to create bucket, abort.
|
|
||||||
t.Fatalf("Failed to create bucket %s %s : %s", randBucket,
|
|
||||||
instanceType, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
sampleNotificationBytes := []byte("<NotificationConfiguration><TopicConfiguration>" +
|
sampleNotificationBytes := []byte("<NotificationConfiguration><TopicConfiguration>" +
|
||||||
"<Event>s3:ObjectCreated:*</Event><Event>s3:ObjectRemoved:*</Event><Filter>" +
|
"<Event>s3:ObjectCreated:*</Event><Event>s3:ObjectRemoved:*</Event><Filter>" +
|
||||||
"<S3Key></S3Key></Filter><Id></Id><Topic>arn:minio:sns:us-east-1:1474332374:listen</Topic>" +
|
"<S3Key></S3Key></Filter><Id></Id><Topic>arn:minio:sns:us-east-1:1474332374:listen</Topic>" +
|
||||||
"</TopicConfiguration></NotificationConfiguration>")
|
"</TopicConfiguration></NotificationConfiguration>")
|
||||||
|
|
||||||
// Register the API end points with XL/FS object layer.
|
|
||||||
apiRouter := initTestAPIEndPoints(obj, []string{
|
|
||||||
"PutBucketNotification",
|
|
||||||
"ListenBucketNotification",
|
|
||||||
})
|
|
||||||
|
|
||||||
// initialize the server and obtain the credentials and root.
|
|
||||||
// credentials are necessary to sign the HTTP request.
|
|
||||||
rootPath, err := newTestConfig("us-east-1")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Init Test config failed")
|
|
||||||
}
|
|
||||||
// remove the root folder after the test ends.
|
|
||||||
defer removeAll(rootPath)
|
|
||||||
|
|
||||||
credentials := serverConfig.GetCredential()
|
|
||||||
|
|
||||||
//Initialize global event notifier with mock queue targets.
|
|
||||||
err = initEventNotifier(obj)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Test %s: Failed to initialize mock event notifier %v",
|
|
||||||
instanceType, err)
|
|
||||||
}
|
|
||||||
// Set sample bucket notification on randBucket.
|
// Set sample bucket notification on randBucket.
|
||||||
testRec := httptest.NewRecorder()
|
testRec := httptest.NewRecorder()
|
||||||
testReq, tErr := newTestSignedRequestV4("PUT", getPutBucketNotificationURL("", randBucket),
|
testReq, tErr := newTestSignedRequestV4("PUT", getPutBucketNotificationURL("", randBucket),
|
||||||
@ -472,5 +443,8 @@ func testRemoveNotificationConfig(obj ObjectLayer, instanceType string, t TestEr
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestRemoveNotificationConfig(t *testing.T) {
|
func TestRemoveNotificationConfig(t *testing.T) {
|
||||||
ExecObjectLayerTest(t, testRemoveNotificationConfig)
|
ExecObjectLayerAPITest(t, testRemoveNotificationConfig, []string{
|
||||||
|
"PutBucketNotification",
|
||||||
|
"ListenBucketNotification",
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user