sadanand48 commented on PR #8066:
URL: https://github.com/apache/ozone/pull/8066#issuecomment-2720976952

   ```diff
   diff --git 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
   index 5c0699c2cb..d7a4149c57 100644
   --- 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
   +++ 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
   @@ -28,6 +28,7 @@
    import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.VOLUME_NOT_FOUND;
    import static org.assertj.core.api.Assertions.assertThat;
    import static org.junit.jupiter.api.Assertions.assertEquals;
   +import static org.junit.jupiter.api.Assertions.assertFalse;
    import static org.junit.jupiter.api.Assertions.assertNotEquals;
    import static org.junit.jupiter.api.Assertions.assertNull;
    import static org.junit.jupiter.api.Assertions.assertThrows;
   @@ -42,6 +43,7 @@
    import java.util.Collections;
    import java.util.HashSet;
    import java.util.List;
   +import java.util.Random;
    import java.util.Set;
    import java.util.TreeMap;
    import java.util.TreeSet;
   @@ -49,19 +51,29 @@
    import java.util.concurrent.TimeUnit;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
   +import org.apache.hadoop.hdds.client.BlockID;
    import org.apache.hadoop.hdds.client.RatisReplicationConfig;
    import org.apache.hadoop.hdds.conf.OzoneConfiguration;
    import org.apache.hadoop.hdds.protocol.StorageType;
    import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
   +import org.apache.hadoop.hdds.scm.HddsTestUtils;
   +import org.apache.hadoop.hdds.scm.pipeline.Pipeline;
    import org.apache.hadoop.hdds.utils.TransactionInfo;
   +import org.apache.hadoop.hdds.utils.db.Codec;
   +import org.apache.hadoop.hdds.utils.db.DelegatedCodec;
   +import org.apache.hadoop.hdds.utils.db.Proto2Codec;
   +import org.apache.hadoop.hdds.utils.db.Table;
   +import org.apache.hadoop.hdds.utils.db.TableIterator;
    import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
    import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
   +import org.apache.hadoop.ozone.ClientVersion;
    import org.apache.hadoop.ozone.om.exceptions.OMException;
    import org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes;
    import org.apache.hadoop.ozone.om.helpers.BucketLayout;
    import org.apache.hadoop.ozone.om.helpers.ListOpenFilesResult;
    import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
    import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
   +import org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfo;
    import org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfoGroup;
    import org.apache.hadoop.ozone.om.helpers.OmMultipartKeyInfo;
    import org.apache.hadoop.ozone.om.helpers.OmMultipartUpload;
   @@ -71,6 +83,7 @@
    import org.apache.hadoop.ozone.om.helpers.SnapshotInfo;
    import org.apache.hadoop.ozone.om.request.OMRequestTestUtils;
    import org.apache.hadoop.ozone.om.request.util.OMMultipartUploadUtils;
   +import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
    import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ExpiredMultipartUploadInfo;
    import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ExpiredMultipartUploadsBucket;
    import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OpenKey;
   @@ -155,6 +168,63 @@ public void testListVolumes() throws Exception {
        assertEquals(volumeList.size(), totalVol - startOrder - 1);
      }
    
   +  private OmKeyInfo getSampleKeyInfo() {
   +    int blockNum = 1;
   +    List<OmKeyLocationInfo> omKeyLocationInfoList = new ArrayList<>();
   +    Pipeline pipeline = HddsTestUtils.getRandomPipeline();
   +    BlockID blockID = new BlockID(blockNum, blockNum);
   +    OmKeyLocationInfo keyLocationInfo =
   +        new 
OmKeyLocationInfo.Builder().setBlockID(blockID).setPipeline(pipeline).build();
   +    omKeyLocationInfoList.add(keyLocationInfo);
   +    OmKeyLocationInfoGroup omKeyLocationInfoGroup = new 
OmKeyLocationInfoGroup(0, omKeyLocationInfoList);
   +    return new 
OmKeyInfo.Builder().setCreationTime(Time.now()).setModificationTime(Time.now())
   +        
.setReplicationConfig(RatisReplicationConfig.getInstance(HddsProtos.ReplicationFactor.THREE))
   +        .setVolumeName("volume").setBucketName("bucket").setKeyName("key" + 
new Random().nextInt(100))
   +        .setObjectID(Time.now()).setUpdateID(Time.now()).setDataSize(100)
   +        
.setOmKeyLocationInfos(Collections.singletonList(omKeyLocationInfoGroup)).build();
   +  }
   +
   +  private static Codec<OmKeyInfo> customCodec() {
   +    return new DelegatedCodec<>(
   +        
Proto2Codec.get(OzoneManagerProtocolProtos.KeyInfo.getDefaultInstance()),
   +        TestOmMetadataManager::getBasicFieldsFromProtobuf,
   +        k -> k.getProtobuf(true, ClientVersion.CURRENT_VERSION),
   +        OmKeyInfo.class);
   +  }
   +
   +  public static OmKeyInfo 
getBasicFieldsFromProtobuf(OzoneManagerProtocolProtos.KeyInfo keyInfo) {
   +    if (keyInfo == null) {
   +      return null;
   +    }
   +    OmKeyInfo.Builder builder = new OmKeyInfo.Builder()
   +        .setVolumeName(keyInfo.getVolumeName())
   +        .setBucketName(keyInfo.getBucketName())
   +        .setKeyName(keyInfo.getKeyName())
   +        .setDataSize(keyInfo.getDataSize())
   +        .setCreationTime(keyInfo.getCreationTime());
   +    return builder.build();
   +  }
   +
   +  @Test
   +  public void testCustomCodecIteratorOnKeyTable() throws Exception {
   +    OmKeyInfo omKeyInfo = getSampleKeyInfo();
   +    omMetadataManager.getKeyTable(BucketLayout.OBJECT_STORE).put("key", 
omKeyInfo);
   +    try (TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>> 
iterator = omMetadataManager.getKeyTable(
   +        BucketLayout.OBJECT_STORE).iterator(customCodec(), null)) {
   +      while (iterator.hasNext()) {
   +        Table.KeyValue<String, OmKeyInfo> kv = iterator.next();
   +        String key = kv.getKey();
   +        assertEquals(key, "key");
   +        OmKeyInfo val = kv.getValue();
   +        assertNull(val.getLatestVersionLocations());
   +        assertTrue(val.getAcls().isEmpty());
   +        assertTrue(val.getCreationTime() != 0);
   +        // mod time is not decoded as per codec
   +        assertFalse(val.getModificationTime() != 0);
   +      }
   +    }
   +  }
   +
      @Test
      public void testListAllVolumes() throws Exception {
        OmVolumeArgs.Builder argsBuilder =
   
   ```
   added this UT, please feel free to add it.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org
For additional commands, e-mail: issues-h...@ozone.apache.org

Reply via email to