Commit 09dbebde authored by chenchongli's avatar chenchongli
Browse files

Update back ground operation test cases according to the new admin

client API.
parent 485b72ad
Loading
Loading
Loading
Loading
+136 −113
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ import com.seagate.kinetic.IntegrationTestLoggerFactory;
import com.seagate.kinetic.client.internal.MessageFactory;
import com.seagate.kinetic.common.lib.KineticMessage;
import com.seagate.kinetic.proto.Kinetic.Command;

import com.seagate.kinetic.proto.Kinetic.Command.MessageType;
import com.seagate.kinetic.proto.Kinetic.Command.Priority;
import com.seagate.kinetic.proto.Kinetic.Command.Range;
import com.seagate.kinetic.proto.Kinetic.Command.Status.StatusCode;
@@ -2613,137 +2613,163 @@ public class KineticAdminTest extends IntegrationTestCase {
    }

    /**
     * Test back ground operation API with valid back op type: MEDIASCAN. Check
     * the response message field.
     * Test back ground operation API: mediaScan. Check the response message
     * field.
     * <p>
     */
    @Test
    public void testBackGroundOperation_BackOpTypeIsMediaScan() {
//        // create request message
//        KineticMessage kmreq = MessageFactory.createKineticMessageWithBuilder();
//
//        Command.Builder commandBuilder = (Command.Builder) kmreq.getCommand();
//
//        Range.Builder rangeBuilder = commandBuilder.getBodyBuilder()
//                .getRangeBuilder();
//
//        // set message type
//        ByteString startKey = ByteString.copyFromUtf8("start_key");
//        ByteString endKey = ByteString.copyFromUtf8("end_key");
//
//        //BackOpType backOpType = BackOpType.MEDIAOPTIMIZE;
//
//        rangeBuilder.setStartKey(startKey);
//        rangeBuilder.setEndKey(endKey);
//        rangeBuilder.setStartKeyInclusive(false);
//        rangeBuilder.setEndKeyInclusive(true);
//
//        Range range = rangeBuilder.build();
//
//        try {
//            KineticMessage kmrsp = getAdminClient().mediaScan(range, Priority.HIGHEST);
//            assertEquals(backOpType, kmrsp.getCommand().getBody()
//                    .getBackgroundOperation().getBackOpType());
//            assertArrayEquals(endKey.toByteArray(), kmrsp.getCommand()
//                    .getBody().getBackgroundOperation().getRange().getEndKey()
//                    .toByteArray());
//        } catch (KineticException e) {
//            fail("back ground operation throw exception: " + e.getMessage());
//        }
//
//        logger.info(this.testEndInfo());
    public void testMediaScan_withPriorityIsHighest_successOperation() {
        // create request message
        KineticMessage kmreq = MessageFactory.createKineticMessageWithBuilder();

        Command.Builder commandBuilder = (Command.Builder) kmreq.getCommand();

        Range.Builder rangeBuilder = commandBuilder.getBodyBuilder()
                .getRangeBuilder();

        ByteString startKey = ByteString.copyFromUtf8("start_key");
        ByteString endKey = ByteString.copyFromUtf8("end_key");

        rangeBuilder.setStartKey(startKey);
        rangeBuilder.setEndKey(endKey);
        rangeBuilder.setStartKeyInclusive(false);
        rangeBuilder.setEndKeyInclusive(true);

        Range range = rangeBuilder.build();

        try {
            KineticMessage kmrsp = getAdminClient().mediaScan(range,
                    Priority.HIGHEST);
            assertEquals(MessageType.MEDIASCAN_RESPONSE, kmrsp.getCommand()
                    .getHeader().getMessageType());
            assertEquals(StatusCode.SUCCESS, kmrsp.getCommand().getStatus()
                    .getCode());
        } catch (KineticException e) {
            fail("media scan operation throw exception: " + e.getMessage());
        }

        logger.info(this.testEndInfo());
    }

    /**
     * Test back ground operation API with valid back op type: MEDIAOPTIMIZE.
     * Check the response message field.
     * Test back ground operation API: mediaScan. The priority is highest, no
     * range permission, should throw exception.
     * <p>
     */
    @Test
    public void testBackGroundOperation_BackOpTypeIsMediaOptimize() {
    public void testMediaScan_withPriorityIsHighest_withNoRangePermission_throwException() {
        List<Role> roles = new ArrayList<Role>();
        roles.add(Role.DELETE);
        roles.add(Role.GETLOG);
        roles.add(Role.READ);
        roles.add(Role.SECURITY);
        roles.add(Role.SETUP);
        roles.add(Role.WRITE);
        roles.add(Role.P2POP);

        Domain domain = new Domain();
        domain.setRoles(roles);

        List<Domain> domains = new ArrayList<Domain>();
        domains.add(domain);

        List<ACL> acls = new ArrayList<ACL>();
        ACL acl1 = new ACL();
        acl1.setDomains(domains);
        acl1.setUserId(1);
        acl1.setKey("asdfasdf");

        acls.add(acl1);

        try {
            getAdminClient().setAcl(acls);
        } catch (KineticException e1) {
            fail("set acls without range permission throw exception:"
                    + e1.getMessage());
        }

        // create request message
//        KineticMessage kmreq = MessageFactory.createKineticMessageWithBuilder();
//
//        Command.Builder commandBuilder = (Command.Builder) kmreq.getCommand();
//
//        Range.Builder rangeBuilder = commandBuilder.getBodyBuilder()
//                .getRangeBuilder();
//
//        ByteString startKey = ByteString.copyFromUtf8("start_key");
//        ByteString endKey = ByteString.copyFromUtf8("end_key");
//
//        BackOpType backOpType = BackOpType.MEDIAOPTIMIZE;
//
//        rangeBuilder.setStartKey(startKey);
//        rangeBuilder.setEndKey(endKey);
//        rangeBuilder.setStartKeyInclusive(false);
//        rangeBuilder.setEndKeyInclusive(true);
//
//        Range range = rangeBuilder.build();
//
//        try {
//            KineticMessage kmrsp = getAdminClient().backgroundOperation(
//                    backOpType, range, Priority.HIGHEST);
//            assertEquals(backOpType, kmrsp.getCommand().getBody()
//                    .getBackgroundOperation().getBackOpType());
//            assertArrayEquals(endKey.toByteArray(), kmrsp.getCommand()
//                    .getBody().getBackgroundOperation().getRange().getEndKey()
//                    .toByteArray());
//            assertEquals(StatusCode.SUCCESS, kmrsp.getCommand().getStatus()
//                    .getCode());
//        } catch (KineticException e) {
//            fail("back ground operation throw exception: " + e.getMessage());
//        }
//
//        logger.info(this.testEndInfo());
        KineticMessage kmreq = MessageFactory.createKineticMessageWithBuilder();

        Command.Builder commandBuilder = (Command.Builder) kmreq.getCommand();

        Range.Builder rangeBuilder = commandBuilder.getBodyBuilder()
                .getRangeBuilder();

        ByteString startKey = ByteString.copyFromUtf8("start_key");
        ByteString endKey = ByteString.copyFromUtf8("end_key");

        rangeBuilder.setStartKey(startKey);
        rangeBuilder.setEndKey(endKey);
        rangeBuilder.setStartKeyInclusive(false);
        rangeBuilder.setEndKeyInclusive(true);

        Range range = rangeBuilder.build();

        try {
            getAdminClient().mediaScan(range, Priority.HIGHEST);
            fail("should throw exception");
        } catch (KineticException e) {
            assertTrue(e.getResponseMessage().getCommand().getStatus()
                    .getCode().equals(StatusCode.NOT_AUTHORIZED));
        }

        // clean up acls
        try {
            getAdminClient().instantErase(null);
        } catch (KineticException e) {
            fail("clean up acls throw excaption: " + e.getMessage());
        }

        logger.info(this.testEndInfo());
    }

    /**
     * Test back ground operation API with invalid back op type: INVALID_BACKOP.
     * Check the exception message field.
     * Test back ground operation API: mediaOptimize. Check the response message
     * field.
     * <p>
     */
    @Test
    public void testBackGroundOperation_BackOpTypeIsInvalidBackOp() {
    public void testMediaOptimize_withPriorityIsHighest_successOperation() {
        // create request message
//        KineticMessage kmreq = MessageFactory.createKineticMessageWithBuilder();
//
//        Command.Builder commandBuilder = (Command.Builder) kmreq.getCommand();
//
//        Range.Builder rangeBuilder = commandBuilder.getBodyBuilder()
//                .getRangeBuilder();
//
//        ByteString startKey = ByteString.copyFromUtf8("start_key");
//        ByteString endKey = ByteString.copyFromUtf8("end_key");
//
//        //BackOpType backOpType = BackOpType.INVALID_BACKOP;
//
//        rangeBuilder.setStartKey(startKey);
//        rangeBuilder.setEndKey(endKey);
//        rangeBuilder.setStartKeyInclusive(false);
//        rangeBuilder.setEndKeyInclusive(true);
//
//        Range range = rangeBuilder.build();
//
//        try {
//            getAdminClient().backgroundOperation(range,
//                    Priority.HIGHEST);
//            fail("should throw exception");
//        } catch (KineticException e) {
//            assertTrue(e.getResponseMessage().getCommand().getStatus()
//                    .getCode().equals(StatusCode.INVALID_REQUEST));
//        }
//
//        logger.info(this.testEndInfo());
        KineticMessage kmreq = MessageFactory.createKineticMessageWithBuilder();

        Command.Builder commandBuilder = (Command.Builder) kmreq.getCommand();

        Range.Builder rangeBuilder = commandBuilder.getBodyBuilder()
                .getRangeBuilder();

        ByteString startKey = ByteString.copyFromUtf8("start_key");
        ByteString endKey = ByteString.copyFromUtf8("end_key");

        rangeBuilder.setStartKey(startKey);
        rangeBuilder.setEndKey(endKey);
        rangeBuilder.setStartKeyInclusive(false);
        rangeBuilder.setEndKeyInclusive(true);

        Range range = rangeBuilder.build();

        try {
            KineticMessage kmrsp = getAdminClient().mediaOptimize(range,
                    Priority.HIGHEST);
            assertEquals(MessageType.MEDIAOPTIMIZE_RESPONSE, kmrsp.getCommand()
                    .getHeader().getMessageType());
            assertEquals(StatusCode.SUCCESS, kmrsp.getCommand().getStatus()
                    .getCode());
        } catch (KineticException e) {
            fail("media optimize operation throw exception: " + e.getMessage());
        }

        logger.info(this.testEndInfo());
    }

    /**
     * Test back ground operation API without range permission: INVALID_BACKOP.
     * Check the exception message field.
     * Test back ground operation API: mediaOptimize. The priority is highest,
     * no range permission, should throw exception.
     * <p>
     */
    @Test
    public void testBackGroundOperation_BackOpNoPermission() {
    public void testMediaOptimize_withPriorityIsHighest_withNoRangePermission_throwException() {
        List<Role> roles = new ArrayList<Role>();
        roles.add(Role.DELETE);
        roles.add(Role.GETLOG);
@@ -2785,8 +2811,6 @@ public class KineticAdminTest extends IntegrationTestCase {
        ByteString startKey = ByteString.copyFromUtf8("start_key");
        ByteString endKey = ByteString.copyFromUtf8("end_key");

        //BackOpType backOpType = BackOpType.MEDIASCAN;

        rangeBuilder.setStartKey(startKey);
        rangeBuilder.setEndKey(endKey);
        rangeBuilder.setStartKeyInclusive(false);
@@ -2795,8 +2819,7 @@ public class KineticAdminTest extends IntegrationTestCase {
        Range range = rangeBuilder.build();

        try {
            getAdminClient().mediaScan(range,
                    Priority.HIGHEST);
            getAdminClient().mediaOptimize(range, Priority.HIGHEST);
            fail("should throw exception");
        } catch (KineticException e) {
            assertTrue(e.getResponseMessage().getCommand().getStatus()