### Question:
ExampleMetadataHandler extends MetadataHandler { @Override public GetTableResponse doGetTable(BlockAllocator allocator, GetTableRequest request) { logCaller(request); if (!request.getTableName().getSchemaName().equals(ExampleTable.schemaName) || !request.getTableName().getTableName().equals(ExampleTable.tableName)) { throw new IllegalArgumentException("Unknown table " + request.getTableName()); } Set<String> partitionCols = new HashSet<>(); partitionCols.add("month"); partitionCols.add("year"); partitionCols.add("day"); return new GetTableResponse(request.getCatalogName(), request.getTableName(), ExampleTable.schema, partitionCols); } ExampleMetadataHandler(); @VisibleForTesting protected  ExampleMetadataHandler(EncryptionKeyFactory keyFactory,
            AWSSecretsManager awsSecretsManager,
            AmazonAthena athena,
            String spillBucket,
            String spillPrefix); @Override ListSchemasResponse doListSchemaNames(BlockAllocator allocator, ListSchemasRequest request); @Override ListTablesResponse doListTables(BlockAllocator allocator, ListTablesRequest request); @Override GetTableResponse doGetTable(BlockAllocator allocator, GetTableRequest request); @Override void enhancePartitionSchema(SchemaBuilder partitionSchemaBuilder, GetTableLayoutRequest request); @Override void getPartitions(BlockWriter writer, GetTableLayoutRequest request, QueryStatusChecker queryStatusChecker); @Override GetSplitsResponse doGetSplits(BlockAllocator allocator, GetSplitsRequest request); void onPing(PingRequest request);  }### Answer:
@Test public void doGetTable() { logger.info("doGetTable - enter"); GetTableRequest req = new GetTableRequest(IdentityUtil.fakeIdentity(), "queryId", "default", new TableName("custom_source", "fake_table")); ObjectMapperUtil.assertSerialization(req); GetTableResponse res = metadataHandler.doGetTable(allocator, req); ObjectMapperUtil.assertSerialization(res); assertTrue(res.getSchema().getFields().size() > 0); assertTrue(res.getSchema().getCustomMetadata().size() > 0); logger.info("doGetTable - {}", res); logger.info("doGetTable - exit"); }
@Test(expected = LambdaFunctionException.class) public void doGetTableFail() { try { logger.info("doGetTableFail - enter"); GetTableRequest req = new GetTableRequest(IdentityUtil.fakeIdentity(), "queryId", "default", new TableName("lambda", "fake")); metadataHandler.doGetTable(allocator, req); } catch (Exception ex) { logger.info("doGetTableFail: ", ex); throw new LambdaFunctionException(ex.getMessage(), false, "repackaged"); } }