### Question:
AbstractMetadataReportFactory implements MetadataReportFactory { @Override public MetadataReport getMetadataReport(URL url) { url = url.setPath(MetadataReport.class.getName()) .addParameter(Constants.INTERFACE_KEY, MetadataReport.class.getName()) .removeParameters(Constants.EXPORT_KEY, Constants.REFER_KEY); String key = url.toServiceString(); LOCK.lock(); try { MetadataReport metadataReport = SERVICE_STORE_MAP.get(key); if (metadataReport != null) { return metadataReport; } metadataReport = createMetadataReport(url); if (metadataReport == null) { throw new IllegalStateException("Can not create metadata Report " + url); } SERVICE_STORE_MAP.put(key, metadataReport); return metadataReport; } finally { LOCK.unlock(); } }  @Override MetadataReport getMetadataReport(URL url);  }### Answer:
@Test public void testGetOneMetadataReport() { URL url = URL.valueOf("zookeeper: MetadataReport metadataReport1 = metadataReportFactory.getMetadataReport(url); MetadataReport metadataReport2 = metadataReportFactory.getMetadataReport(url); Assertions.assertEquals(metadataReport1, metadataReport2); }
@Test public void testGetOneMetadataReportForIpFormat() { URL url1 = URL.valueOf("zookeeper: URL url2 = URL.valueOf("zookeeper: MetadataReport metadataReport1 = metadataReportFactory.getMetadataReport(url1); MetadataReport metadataReport2 = metadataReportFactory.getMetadataReport(url2); Assertions.assertEquals(metadataReport1, metadataReport2); }
@Test public void testGetForDiffService() { URL url1 = URL.valueOf("zookeeper: URL url2 = URL.valueOf("zookeeper: MetadataReport metadataReport1 = metadataReportFactory.getMetadataReport(url1); MetadataReport metadataReport2 = metadataReportFactory.getMetadataReport(url2); Assertions.assertEquals(metadataReport1, metadataReport2); }
@Test public void testGetForDiffGroup() { URL url1 = URL.valueOf("zookeeper: URL url2 = URL.valueOf("zookeeper: MetadataReport metadataReport1 = metadataReportFactory.getMetadataReport(url1); MetadataReport metadataReport2 = metadataReportFactory.getMetadataReport(url2); Assertions.assertNotEquals(metadataReport1, metadataReport2); }