### Question:
TimestreamMetadataHandler extends GlueMetadataHandler { @Override public void getPartitions(BlockWriter blockWriter, GetTableLayoutRequest request, QueryStatusChecker queryStatusChecker) throws Exception { } TimestreamMetadataHandler(); @VisibleForTesting protected  TimestreamMetadataHandler(AmazonTimestreamQuery tsQuery,
            AmazonTimestreamWrite tsMeta,
            AWSGlue glue,
            EncryptionKeyFactory keyFactory,
            AWSSecretsManager secretsManager,
            AmazonAthena athena,
            String spillBucket,
            String spillPrefix); @Override ListSchemasResponse doListSchemaNames(BlockAllocator blockAllocator, ListSchemasRequest request); @Override ListTablesResponse doListTables(BlockAllocator blockAllocator, ListTablesRequest request); @Override GetTableResponse doGetTable(BlockAllocator blockAllocator, GetTableRequest request); @Override void getPartitions(BlockWriter blockWriter, GetTableLayoutRequest request, QueryStatusChecker
            queryStatusChecker); @Override GetSplitsResponse doGetSplits(BlockAllocator allocator, GetSplitsRequest request);  }### Answer:
@Test public void doGetTableLayout() throws Exception { logger.info("doGetTableLayout - enter"); Schema schema = SchemaBuilder.newBuilder().build(); GetTableLayoutRequest req = new GetTableLayoutRequest(identity, "query-id", defaultSchema, new TableName("database1", "table1"), new Constraints(new HashMap<>()), schema, Collections.EMPTY_SET); GetTableLayoutResponse res = handler.doGetTableLayout(allocator, req); logger.info("doGetTableLayout - {}", res); Block partitions = res.getPartitions(); for (int row = 0; row < partitions.getRowCount() && row < 10; row++) { logger.info("doGetTableLayout:{} {}", row, BlockUtils.rowToString(partitions, row)); } assertTrue(partitions.getRowCount() == 1); logger.info("doGetTableLayout - exit"); }