package com.neverwinterdp.scribengin.storage.s3;
import java.io.IOException;
import java.util.UUID;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.S3Object;
import com.neverwinterdp.scribengin.storage.s3.S3Client;
import com.neverwinterdp.scribengin.storage.s3.S3ObjectWriter;
import com.neverwinterdp.util.IOUtil;
public class S3ClientIntegrationTest {
static public String BUCKET_NAME = "scribengin-" + UUID.randomUUID();
static S3Client s3Client ;
@BeforeClass
static public void beforeClass() {
s3Client = new S3Client() ;
s3Client.onInit();
s3Client.createBucket(BUCKET_NAME);
}
@AfterClass
static public void afterClass() {
s3Client.deleteBucket(BUCKET_NAME, true);
s3Client.onDestroy();
}
@Test
public void testS3ObjectWriter() throws IOException, InterruptedException {
String KEY = "test-s3-object-writer" ;
S3ObjectWriter writer = new S3ObjectWriter(s3Client, BUCKET_NAME, KEY, new ObjectMetadata());
for(int i = 0; i < 10; i++) {
writer.write(("This is the test " + i + "\n").getBytes());
Thread.sleep(1000);
}
writer.waitAndClose(10000);;
S3Object object = s3Client.getObject(BUCKET_NAME, KEY);
String content = IOUtil.getStreamContentAsString(object.getObjectContent(), "UTF-8") ;
System.out.println(content);
Assert.assertEquals(10, content.split("\n").length);
}
@Test
public void testUpdateObjectMetadata() throws IOException, InterruptedException {
String KEY = "test-update-objec-metadata" ;
ObjectMetadata metadata = new ObjectMetadata() ;
metadata.setContentType("text/plain");
s3Client.createObject(BUCKET_NAME, KEY, new byte[0], metadata);
metadata = s3Client.getObjectMetadata(BUCKET_NAME, KEY) ;
metadata.addUserMetadata("transaction", "buffering");
s3Client.updateObjectMetadata(BUCKET_NAME, KEY, metadata);
metadata = s3Client.getObjectMetadata(BUCKET_NAME, KEY) ;
Assert.assertEquals("buffering", metadata.getUserMetaDataOf("transaction"));
}
}