|
@@ -19,14 +19,19 @@
|
|
|
package org.apache.hadoop.ozone;
|
|
|
|
|
|
import org.apache.hadoop.fs.StorageType;
|
|
|
+import org.apache.hadoop.ozone.io.OzoneInputStream;
|
|
|
import org.apache.hadoop.ozone.io.OzoneOutputStream;
|
|
|
import org.apache.hadoop.ozone.web.exceptions.OzoneException;
|
|
|
import org.junit.AfterClass;
|
|
|
import org.junit.Assert;
|
|
|
import org.junit.BeforeClass;
|
|
|
+import org.junit.Rule;
|
|
|
import org.junit.Test;
|
|
|
+import org.junit.rules.ExpectedException;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
import java.util.UUID;
|
|
|
|
|
|
/**
|
|
@@ -34,6 +39,9 @@ import java.util.UUID;
|
|
|
*/
|
|
|
public class TestOzoneClientImpl {
|
|
|
|
|
|
+ @Rule
|
|
|
+ public ExpectedException thrown = ExpectedException.none();
|
|
|
+
|
|
|
private static MiniOzoneCluster cluster = null;
|
|
|
private static OzoneClientImpl ozClient = null;
|
|
|
|
|
@@ -100,6 +108,38 @@ public class TestOzoneClientImpl {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void testSetVolumeOwner()
|
|
|
+ throws IOException, OzoneException {
|
|
|
+ String volumeName = UUID.randomUUID().toString();
|
|
|
+ ozClient.createVolume(volumeName);
|
|
|
+ ozClient.setVolumeOwner(volumeName, "test");
|
|
|
+ OzoneVolume volume = ozClient.getVolumeDetails(volumeName);
|
|
|
+ Assert.assertEquals("test", volume.getOwnerName());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testSetVolumeQuota()
|
|
|
+ throws IOException, OzoneException {
|
|
|
+ String volumeName = UUID.randomUUID().toString();
|
|
|
+ ozClient.createVolume(volumeName);
|
|
|
+ ozClient.setVolumeQuota(volumeName, 10000000000L);
|
|
|
+ OzoneVolume volume = ozClient.getVolumeDetails(volumeName);
|
|
|
+ Assert.assertEquals(10000000000L, volume.getQuota());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testDeleteVolume()
|
|
|
+ throws IOException, OzoneException {
|
|
|
+ thrown.expectMessage("Info Volume failed, error");
|
|
|
+ String volumeName = UUID.randomUUID().toString();
|
|
|
+ ozClient.createVolume(volumeName);
|
|
|
+ OzoneVolume volume = ozClient.getVolumeDetails(volumeName);
|
|
|
+ Assert.assertNotNull(volume);
|
|
|
+ ozClient.deleteVolume(volumeName);
|
|
|
+ ozClient.getVolumeDetails(volumeName);
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
public void testCreateBucket()
|
|
|
throws IOException, OzoneException {
|
|
@@ -184,6 +224,85 @@ public class TestOzoneClientImpl {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void testAddBucketAcl()
|
|
|
+ throws IOException, OzoneException {
|
|
|
+ String volumeName = UUID.randomUUID().toString();
|
|
|
+ String bucketName = UUID.randomUUID().toString();
|
|
|
+ ozClient.createVolume(volumeName);
|
|
|
+ ozClient.createBucket(volumeName, bucketName);
|
|
|
+ List<OzoneAcl> acls = new ArrayList<>();
|
|
|
+ acls.add(new OzoneAcl(
|
|
|
+ OzoneAcl.OzoneACLType.USER, "test",
|
|
|
+ OzoneAcl.OzoneACLRights.READ_WRITE));
|
|
|
+ ozClient.addBucketAcls(volumeName, bucketName, acls);
|
|
|
+ OzoneBucket bucket = ozClient.getBucketDetails(volumeName, bucketName);
|
|
|
+ Assert.assertEquals(bucketName, bucket.getBucketName());
|
|
|
+ Assert.assertTrue(bucket.getAcls().contains(acls.get(0)));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testRemoveBucketAcl()
|
|
|
+ throws IOException, OzoneException {
|
|
|
+ String volumeName = UUID.randomUUID().toString();
|
|
|
+ String bucketName = UUID.randomUUID().toString();
|
|
|
+ OzoneAcl userAcl = new OzoneAcl(OzoneAcl.OzoneACLType.USER, "test",
|
|
|
+ OzoneAcl.OzoneACLRights.READ_WRITE);
|
|
|
+ ozClient.createVolume(volumeName);
|
|
|
+ ozClient.createBucket(volumeName, bucketName, userAcl);
|
|
|
+ List<OzoneAcl> acls = new ArrayList<>();
|
|
|
+ acls.add(userAcl);
|
|
|
+ ozClient.removeBucketAcls(volumeName, bucketName, acls);
|
|
|
+ OzoneBucket bucket = ozClient.getBucketDetails(volumeName, bucketName);
|
|
|
+ Assert.assertEquals(bucketName, bucket.getBucketName());
|
|
|
+ Assert.assertTrue(!bucket.getAcls().contains(acls.get(0)));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testSetBucketVersioning()
|
|
|
+ throws IOException, OzoneException {
|
|
|
+ String volumeName = UUID.randomUUID().toString();
|
|
|
+ String bucketName = UUID.randomUUID().toString();
|
|
|
+ ozClient.createVolume(volumeName);
|
|
|
+ ozClient.createBucket(volumeName, bucketName);
|
|
|
+ ozClient.setBucketVersioning(volumeName, bucketName,
|
|
|
+ OzoneConsts.Versioning.ENABLED);
|
|
|
+ OzoneBucket bucket = ozClient.getBucketDetails(volumeName, bucketName);
|
|
|
+ Assert.assertEquals(bucketName, bucket.getBucketName());
|
|
|
+ Assert.assertEquals(OzoneConsts.Versioning.ENABLED,
|
|
|
+ bucket.getVersioning());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testSetBucketStorageType()
|
|
|
+ throws IOException, OzoneException {
|
|
|
+ String volumeName = UUID.randomUUID().toString();
|
|
|
+ String bucketName = UUID.randomUUID().toString();
|
|
|
+ ozClient.createVolume(volumeName);
|
|
|
+ ozClient.createBucket(volumeName, bucketName);
|
|
|
+ ozClient.setBucketStorageType(volumeName, bucketName,
|
|
|
+ StorageType.SSD);
|
|
|
+ OzoneBucket bucket = ozClient.getBucketDetails(volumeName, bucketName);
|
|
|
+ Assert.assertEquals(bucketName, bucket.getBucketName());
|
|
|
+ Assert.assertEquals(StorageType.SSD, bucket.getStorageType());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testDeleteBucket()
|
|
|
+ throws IOException, OzoneException {
|
|
|
+ thrown.expectMessage("Info Bucket failed, error");
|
|
|
+ String volumeName = UUID.randomUUID().toString();
|
|
|
+ String bucketName = UUID.randomUUID().toString();
|
|
|
+ ozClient.createVolume(volumeName);
|
|
|
+ ozClient.createBucket(volumeName, bucketName);
|
|
|
+ OzoneBucket bucket = ozClient.getBucketDetails(volumeName, bucketName);
|
|
|
+ Assert.assertNotNull(bucket);
|
|
|
+ ozClient.deleteBucket(volumeName, bucketName);
|
|
|
+ ozClient.getBucketDetails(volumeName, bucketName);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Test
|
|
|
public void testPutKey()
|
|
|
throws IOException, OzoneException {
|
|
@@ -196,9 +315,33 @@ public class TestOzoneClientImpl {
|
|
|
OzoneOutputStream out = ozClient.createKey(volumeName, bucketName,
|
|
|
keyName, value.getBytes().length);
|
|
|
out.write(value.getBytes());
|
|
|
- OzoneKey key = ozClient.getkeyDetails(volumeName, bucketName, keyName);
|
|
|
+ out.close();
|
|
|
+ OzoneKey key = ozClient.getKeyDetails(volumeName, bucketName, keyName);
|
|
|
+ Assert.assertEquals(keyName, key.getKeyName());
|
|
|
+ OzoneInputStream is = ozClient.getKey(volumeName, bucketName, keyName);
|
|
|
+ byte[] fileContent = new byte[value.getBytes().length];
|
|
|
+ is.read(fileContent);
|
|
|
+ Assert.assertEquals(value, new String(fileContent));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testDeleteKey()
|
|
|
+ throws IOException, OzoneException {
|
|
|
+ thrown.expectMessage("Lookup key failed, error");
|
|
|
+ String volumeName = UUID.randomUUID().toString();
|
|
|
+ String bucketName = UUID.randomUUID().toString();
|
|
|
+ String keyName = UUID.randomUUID().toString();
|
|
|
+ String value = "sample value";
|
|
|
+ ozClient.createVolume(volumeName);
|
|
|
+ ozClient.createBucket(volumeName, bucketName);
|
|
|
+ OzoneOutputStream out = ozClient.createKey(volumeName, bucketName,
|
|
|
+ keyName, value.getBytes().length);
|
|
|
+ out.write(value.getBytes());
|
|
|
+ out.close();
|
|
|
+ OzoneKey key = ozClient.getKeyDetails(volumeName, bucketName, keyName);
|
|
|
Assert.assertEquals(keyName, key.getKeyName());
|
|
|
- //Content validation has to be done after getKey implementation.
|
|
|
+ ozClient.deleteKey(volumeName, bucketName, keyName);
|
|
|
+ ozClient.getKeyDetails(volumeName, bucketName, keyName);
|
|
|
}
|
|
|
|
|
|
/**
|