Set<Object> storesValues = Sets.newHashSet();
for(Node node: adminClient.getAdminClientCluster().getNodes()) {
Versioned<String> versioned = adminClient.metadataMgmtOps.getRemoteMetadata(node.getId(),
MetadataStore.STORES_KEY);
assertTrue(versioned != null && versioned.getValue() != null);
storesValues.add(new StoreDefinitionsMapper().readStoreList(new StringReader(versioned.getValue())));
}
assertTrue(storesValues.size() == 1);
// create new metadata object
final String newStoreXMLFilePrefix = "updated.stores";
final String newStoreXMLFileSuffix = "xml";
List<StoreDefinition> newStoresToUpload = new ArrayList<StoreDefinition>();
for(StoreDefinition storeDef: stores) {
StoreDefinitionBuilder sb = AdminToolTestUtils.storeDefToBuilder(storeDef);
sb.setName(sb.getName() + "_new");
newStoresToUpload.add(sb.build());
}
// create file of new metadata
File newStoresXMLFolder = TestUtils.createTempDir();
File newStoreXMLFile = File.createTempFile(newStoreXMLFilePrefix,
newStoreXMLFileSuffix,
newStoresXMLFolder);
FileWriter fwriter = new FileWriter(newStoreXMLFile);
fwriter.write(new StoreDefinitionsMapper().writeStoreList(newStoresToUpload));
fwriter.close();
// set new metadata from file
AdminCommand.executeCommand(new String[] { "meta", "set",
MetadataStore.STORES_KEY + "=" + newStoreXMLFile.getAbsolutePath(), "-u", bsURL,
"--confirm" });
// fetch new metadata from node
List<StoreDefinition> newStoresToVerify = adminClient.metadataMgmtOps.getRemoteStoreDefList(adminClient.getAdminClientCluster()
.getNodes()
.iterator()
.next()
.getId())
.getValue();
// check if new metadata is the same as the source
assertTrue(!newStoresToVerify.equals(stores));
assertTrue(newStoresToVerify.equals(newStoresToUpload));
// check if all new metadata are the same
storesValues.clear();
for(Node node: adminClient.getAdminClientCluster().getNodes()) {
Versioned<String> versioned = adminClient.metadataMgmtOps.getRemoteMetadata(node.getId(),
MetadataStore.STORES_KEY);
assertTrue(versioned != null && versioned.getValue() != null);
storesValues.add(new StoreDefinitionsMapper().readStoreList(new StringReader(versioned.getValue())));
}
System.out.println(storesValues.size());
assertTrue(storesValues.size() == 1);
}