Package org.apache.hadoop.hdfs.protocol

Source Code of org.apache.hadoop.hdfs.protocol.TestClientProxyRequests

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.hdfs.protocol;

import com.facebook.swift.codec.ThriftCodec;
import com.facebook.swift.codec.ThriftCodecManager;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.permission.FsPermission;
import org.apache.hadoop.hdfs.protocol.ClientProxyRequests.*;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.WritableUtils;
import org.apache.hadoop.security.UnixUserGroupInformation;
import org.apache.thrift.protocol.TCompactProtocol;
import org.apache.thrift.transport.TMemoryBuffer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.Arrays;
import java.util.Random;

import static org.apache.hadoop.hdfs.protocol.RandomObjectsGenerators.assertEqualsVerbose;
import static org.apache.hadoop.hdfs.protocol.RandomObjectsGenerators.rndBlock;
import static org.apache.hadoop.hdfs.protocol.RandomObjectsGenerators.rndByteArr;
import static org.apache.hadoop.hdfs.protocol.RandomObjectsGenerators.rndDatanodeID;
import static org.apache.hadoop.hdfs.protocol.RandomObjectsGenerators.rndDatanodeInfoArr;
import static org.apache.hadoop.hdfs.protocol.RandomObjectsGenerators.rndFsPermission;
import static org.apache.hadoop.hdfs.protocol.RandomObjectsGenerators.rndLocatedBlockArr;
import static org.apache.hadoop.hdfs.protocol.RandomObjectsGenerators.rndPInt;
import static org.apache.hadoop.hdfs.protocol.RandomObjectsGenerators.rndString;

public class TestClientProxyRequests {
  final Random rnd = new Random(1337L);
  final UnixUserGroupInformation ugi = new UnixUserGroupInformation("testuser", Arrays.asList(
      "testgroup1", "testgroup2", "testgroup3"));
  final RequestMetaInfo metaInfo = new RequestMetaInfo(37, "resource1", 1337, 31337, ugi);
  TMemoryBuffer transport;
  TCompactProtocol protocol;

  @Before
  public void setUp() {
    transport = new TMemoryBuffer(1024 * 1024);
    protocol = new TCompactProtocol(transport);
  }

  @After
  public void tearDown() {
    transport.close();
  }

  @Test
  public void testResourceMetaInfo() throws Exception {
    verifyStruct(new RequestMetaInfo(rndPInt(rnd), rndString(rnd), rndPInt(rnd), rndPInt(rnd),
        ugi));
    verifyStruct(new RequestMetaInfo(RequestMetaInfo.NO_CLUSTER_ID, rndString(rnd), rnd.nextInt(
        100), rndPInt(rnd), ugi));
    verifyStruct(new RequestMetaInfo(rndPInt(rnd), null, rndPInt(rnd), rndPInt(rnd), ugi));
    verifyStruct(new RequestMetaInfo(rndPInt(rnd), rndString(rnd), RequestMetaInfo.NO_NAMESPACE_ID,
        rndPInt(rnd), ugi));
    verifyStruct(new RequestMetaInfo(rndPInt(rnd), rndString(rnd), rndPInt(rnd),
        RequestMetaInfo.NO_APPLICATION_ID, ugi));
    verifyStruct(new RequestMetaInfo(rndPInt(rnd), rndString(rnd), rndPInt(rnd), rndPInt(rnd),
        null));

    verifyStruct(new RequestMetaInfo(rndPInt(rnd), null, RequestMetaInfo.NO_NAMESPACE_ID,
        rnd.nextInt(), ugi));
    verifyStruct(new RequestMetaInfo(RequestMetaInfo.NO_CLUSTER_ID, null, rnd.nextInt(),
        rnd.nextInt(), null));
    verifyStruct(new RequestMetaInfo(rndPInt(rnd), rndString(rnd), RequestMetaInfo.NO_NAMESPACE_ID,
        RequestMetaInfo.NO_APPLICATION_ID, null));
    verifyStruct(new RequestMetaInfo(RequestMetaInfo.NO_CLUSTER_ID, rndString(rnd), rnd.nextInt(),
        RequestMetaInfo.NO_APPLICATION_ID, null));

    verifyStruct(new RequestMetaInfo(RequestMetaInfo.NO_CLUSTER_ID, null,
        RequestMetaInfo.NO_NAMESPACE_ID, RequestMetaInfo.NO_APPLICATION_ID, null));
  }

  @Test
  public void testGetBlockLocationRequest() throws Exception {
    verifyStruct(new GetBlockLocationsRequest(metaInfo, rndString(rnd), rndPInt(rnd),
        rnd.nextLong()));
  }

  @Test
  public void testOpenRequest() throws Exception {
    verifyStruct(new OpenRequest(metaInfo, rndString(rnd), rndPInt(rnd), rnd.nextLong()));
  }

  @Test
  public void testCreateRequest() throws Exception {
    verifyStruct(new CreateRequest(metaInfo, rndString(rnd), rndString(rnd), rndFsPermission(rnd),
        rnd.nextBoolean(), rnd.nextBoolean(), (short) rnd.nextInt(5), rnd.nextLong()));
  }

  @Test
  public void testAppendRequest() throws Exception {
    verifyStruct(new AppendRequest(metaInfo, rndString(rnd), rndString(rnd)));
  }

  @Test
  public void testRecoverLease() throws Exception {
    verifyStruct(new RecoverLeaseRequest(metaInfo, rndString(rnd), rndString(rnd)));
  }

  @Test
  public void testCloseRecoverLease() throws Exception {
    verifyStruct(new CloseRecoverLeaseRequest(metaInfo, rndString(rnd), rndString(rnd),
        rnd.nextBoolean()));
  }

  @Test
  public void testSetReplicationRequest() throws Exception {
    verifyStruct(new SetReplicationRequest(metaInfo, rndString(rnd), (short) rnd.nextInt(5)));
  }

  @Test
  public void testSetPermissionRequest() throws Exception {
    verifyStruct(new SetPermissionRequest(metaInfo, rndString(rnd), new FsPermission(
        (short) rnd.nextInt())));
  }

  @Test
  public void testSetOwnerRequest() throws Exception {
    verifyStruct(new SetOwnerRequest(metaInfo, rndString(rnd), rndString(rnd),
        "group" + rnd.nextInt()));
  }

  @Test
  public void testAbandonBlockRequest() throws Exception {
    verifyStruct(new AbandonBlockRequest(metaInfo, rndString(rnd), rndString(rnd), rndBlock(rnd)));
  }

  @Test
  public void testAbandonFileRequest() throws Exception {
    verifyStruct(new AbandonFileRequest(metaInfo, rndString(rnd), rndString(rnd)));
  }

  @Test
  public void testAddBlockRequest() throws Exception {
    verifyStruct(new AddBlockRequest(metaInfo, rndString(rnd), rndString(rnd), Arrays.asList(
        rndDatanodeInfoArr(rnd, 10)), Arrays.asList(rndDatanodeInfoArr(rnd, 10)), rnd.nextInt(),
        rndBlock(rnd)));
  }

  @Test
  public void testCompleteRequest() throws Exception {
    verifyStruct(new CompleteRequest(metaInfo, rndString(rnd), rndString(rnd), rnd.nextInt(),
        rndBlock(rnd)));
  }

  @Test
  public void testReportBadBlockRequest() throws Exception {
    verifyStruct(new ReportBadBlocksRequest(metaInfo, Arrays.asList(rndLocatedBlockArr(rnd, 100))));
  }

  @Test
  public void testHardLinkRequest() throws Exception {
    verifyStruct(new HardLinkRequest(metaInfo, rndString(rnd), rndString(rnd)));
  }

  @Test
  public void testGetHardLinkedFilesRequest() throws Exception {
    verifyStruct(new GetHardLinkedFilesRequest(metaInfo, rndString(rnd)));
  }

  @Test
  public void testRenameRequest() throws Exception {
    verifyStruct(new RenameRequest(metaInfo, rndString(rnd), rndString(rnd)));
  }

  @Test
  public void testConcatRequest() throws Exception {
    verifyStruct(new ConcatRequest(metaInfo, "trg1", Arrays.asList("src1", "src2", "src3"),
        rnd.nextBoolean()));
  }

  @Test
  public void testDeleteRequest() throws Exception {
    verifyStruct(new DeleteRequest(metaInfo, rndString(rnd), rnd.nextBoolean()));
  }

  @Test
  public void testMkdirsRequest() throws Exception {
    verifyStruct(new MkdirsRequest(metaInfo, rndString(rnd), rndFsPermission(rnd)));
  }

  @Test
  public void testIterativeGetOpenFilesRequest() throws Exception {
    verifyStruct(new IterativeGetOpenFilesRequest(metaInfo, rndString(rnd), rnd.nextInt(),
        rndString(rnd)));
  }

  @Test
  public void testGetPartialFileStatusRequest() throws Exception {
    verifyStruct(new GetPartialListingRequest(metaInfo, rndString(rnd), rndByteArr(rnd, rnd.nextInt(
        37))));
  }

  @Test
  public void testGetLocatedPartialFileStatusRequest() throws Exception {
    verifyStruct(new GetLocatedPartialListingRequest(metaInfo, rndString(rnd), rndByteArr(rnd,
        rnd.nextInt(37))));
  }

  @Test
  public void testRenewLeaseRequest() throws Exception {
    verifyStruct(new RenewLeaseRequest(metaInfo, rndString(rnd)));
  }

  @Test
  public void testGetStatsRequest() throws Exception {
    verifyStruct(new GetStatsRequest(metaInfo));
  }

  @Test
  public void testGetPreferredBlockSizeRequest() throws Exception {
    verifyStruct(new GetPreferredBlockSizeRequest(metaInfo, rndString(rnd)));
  }

  @Test
  public void testListCorruptFileBlocksRequest() throws Exception {
    verifyStruct(new ListCorruptFileBlocksRequest(metaInfo, rndString(rnd), rndString(rnd)));
  }

  @Test
  public void testGetFileInfoRequest() throws Exception {
    verifyStruct(new GetFileInfoRequest(metaInfo, rndString(rnd)));
  }

  @Test
  public void testContentSummaryRequest() throws Exception {
    verifyStruct(new GetContentSummaryRequest(metaInfo, rndString(rnd)));
  }

  @Test
  public void testFSyncRequest() throws Exception {
    verifyStruct(new FSyncRequest(metaInfo, rndString(rnd), rndString(rnd)));
  }

  @Test
  public void testSetTimesRequest() throws Exception {
    verifyStruct(new SetTimesRequest(metaInfo, rndString(rnd), rnd.nextLong(), rnd.nextLong()));
  }

  @Test
  public void testUpdatePipelineRequest() throws Exception {
    verifyStruct(new UpdatePipelineRequest(metaInfo, rndString(rnd), rndBlock(rnd), rndBlock(rnd),
        Arrays.asList(rndDatanodeID(rnd), rndDatanodeID(rnd))));
  }

  @Test
  public void testGetDataTransferProtocolVersionRequest() throws Exception {
    verifyStruct(new GetDataTransferProtocolVersionRequest(metaInfo));
  }

  @Test
  public void testGetBlockInfoRequest() throws Exception {
    verifyStruct(new GetBlockInfoRequest(metaInfo, rnd.nextInt()));
  }

  @Test
  public void testRaidFileRequest() throws Exception {
    verifyStruct(new RaidFileRequest(metaInfo, rndString(rnd), rndString(rnd),
        (short) rnd.nextInt()));
  }

  @Test
  public void testPingRequest() throws Exception {
    verifyStruct(new PingRequest(metaInfo));
  }

  /** Helper verifier */
  private <T extends Writable> void verifyStruct(T object) throws Exception {
    @SuppressWarnings("unchecked") Class<T> clazz = (Class<T>) object.getClass();
    ThriftCodec<T> codec = new ThriftCodecManager().getCodec(clazz);
    codec.write(object, protocol);
    T thriftCopy = codec.read(protocol);
    assertEqualsVerbose(object, thriftCopy);
    T writableCopy = WritableUtils.clone(object, new Configuration());
    assertEqualsVerbose(object, writableCopy);
  }
}
TOP

Related Classes of org.apache.hadoop.hdfs.protocol.TestClientProxyRequests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.