mirror of
https://github.com/google/nomulus.git
synced 2025-04-30 03:57:51 +02:00
Remove unused nomulus tool command (#1870)
This command was used to compare mapreduce-generated escrow deposits with those generated by dataflow. <!-- Reviewable:start --> - - - This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/google/nomulus/1870) <!-- Reviewable:end -->
This commit is contained in:
parent
fa3f2a2f21
commit
0cf6d38b97
4 changed files with 0 additions and 198 deletions
|
@ -15,7 +15,6 @@
|
|||
package google.registry.tools;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import google.registry.tools.javascrap.CompareEscrowDepositsCommand;
|
||||
import google.registry.tools.javascrap.CreateCancellationsForOneTimesCommand;
|
||||
|
||||
/** Container class to create and run remote commands against a Datastore instance. */
|
||||
|
@ -33,7 +32,6 @@ public final class RegistryTool {
|
|||
.put("canonicalize_labels", CanonicalizeLabelsCommand.class)
|
||||
.put("check_domain", CheckDomainCommand.class)
|
||||
.put("check_domain_claims", CheckDomainClaimsCommand.class)
|
||||
.put("compare_escrow_deposits", CompareEscrowDepositsCommand.class)
|
||||
.put("convert_idn", ConvertIdnCommand.class)
|
||||
.put("count_domains", CountDomainsCommand.class)
|
||||
.put("create_anchor_tenant", CreateAnchorTenantCommand.class)
|
||||
|
|
|
@ -40,7 +40,6 @@ import google.registry.request.Modules.UrlConnectionServiceModule;
|
|||
import google.registry.request.Modules.UrlFetchServiceModule;
|
||||
import google.registry.request.Modules.UserServiceModule;
|
||||
import google.registry.tools.AuthModule.LocalCredentialModule;
|
||||
import google.registry.tools.javascrap.CompareEscrowDepositsCommand;
|
||||
import google.registry.tools.javascrap.CreateCancellationsForOneTimesCommand;
|
||||
import google.registry.util.UtilsModule;
|
||||
import google.registry.whois.NonCachingWhoisModule;
|
||||
|
@ -89,8 +88,6 @@ interface RegistryToolComponent {
|
|||
|
||||
void inject(CheckDomainCommand command);
|
||||
|
||||
void inject(CompareEscrowDepositsCommand command);
|
||||
|
||||
void inject(CountDomainsCommand command);
|
||||
|
||||
void inject(CreateAnchorTenantCommand command);
|
||||
|
|
|
@ -1,130 +0,0 @@
|
|||
// Copyright 2022 The Nomulus Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package google.registry.tools.javascrap;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.collect.Sets.difference;
|
||||
|
||||
import com.beust.jcommander.Parameter;
|
||||
import com.beust.jcommander.Parameters;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import google.registry.keyring.api.Keyring;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
import google.registry.rde.Ghostryde;
|
||||
import google.registry.tools.Command;
|
||||
import google.registry.tools.params.PathParameter;
|
||||
import google.registry.xjc.XjcXmlTransformer;
|
||||
import google.registry.xjc.rde.XjcRdeDeposit;
|
||||
import google.registry.xjc.rdedomain.XjcRdeDomain;
|
||||
import google.registry.xjc.rderegistrar.XjcRdeRegistrar;
|
||||
import google.registry.xml.XmlException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.xml.bind.JAXBElement;
|
||||
|
||||
/**
|
||||
* Command to view and schema validate an XML RDE escrow deposit.
|
||||
*
|
||||
* <p>Note that this command only makes sure that both deposits contain the same registrars and
|
||||
* domains, regardless of the order. To verify that they are indeed equivalent one still needs to
|
||||
* verify internal consistency within each deposit (i.e. to check that all hosts and contacts
|
||||
* referenced by domains are included in the deposit) by calling {@code
|
||||
* google.registry.tools.ValidateEscrowDepositCommand}.
|
||||
*/
|
||||
@DeleteAfterMigration
|
||||
@Parameters(separators = " =", commandDescription = "Compare two XML escrow deposits.")
|
||||
public final class CompareEscrowDepositsCommand implements Command {
|
||||
|
||||
@Parameter(
|
||||
description =
|
||||
"Two XML escrow deposit files. Each may be a plain XML or an XML GhostRyDE file.",
|
||||
validateWith = PathParameter.InputFile.class)
|
||||
private List<Path> inputs;
|
||||
|
||||
@Inject Provider<Keyring> keyring;
|
||||
|
||||
private XjcRdeDeposit getDeposit(Path input) throws IOException, XmlException {
|
||||
InputStream fileStream = Files.newInputStream(input);
|
||||
InputStream inputStream = fileStream;
|
||||
if (input.toString().endsWith(".ghostryde")) {
|
||||
inputStream = Ghostryde.decoder(fileStream, keyring.get().getRdeStagingDecryptionKey());
|
||||
}
|
||||
return XjcXmlTransformer.unmarshal(XjcRdeDeposit.class, inputStream);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() throws Exception {
|
||||
checkArgument(
|
||||
inputs.size() == 2,
|
||||
"Must supply 2 files to compare, but %s was/were supplied.",
|
||||
inputs.size());
|
||||
XjcRdeDeposit deposit1 = getDeposit(inputs.get(0));
|
||||
XjcRdeDeposit deposit2 = getDeposit(inputs.get(1));
|
||||
compareXmlDeposits(deposit1, deposit2);
|
||||
}
|
||||
|
||||
private static void process(XjcRdeDeposit deposit, Set<String> domains, Set<String> registrars) {
|
||||
for (JAXBElement<?> item : deposit.getContents().getContents()) {
|
||||
if (XjcRdeDomain.class.isAssignableFrom(item.getDeclaredType())) {
|
||||
XjcRdeDomain domain = (XjcRdeDomain) item.getValue();
|
||||
domains.add(checkNotNull(domain.getName()));
|
||||
} else if (XjcRdeRegistrar.class.isAssignableFrom(item.getDeclaredType())) {
|
||||
XjcRdeRegistrar registrar = (XjcRdeRegistrar) item.getValue();
|
||||
registrars.add(checkNotNull(registrar.getId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean printUniqueElements(
|
||||
Set<String> set1, Set<String> set2, String element, String deposit) {
|
||||
ImmutableList<String> uniqueElements = ImmutableList.copyOf(difference(set1, set2));
|
||||
if (!uniqueElements.isEmpty()) {
|
||||
System.out.printf(
|
||||
"%s only in %s:\n%s\n", element, deposit, Joiner.on("\n").join(uniqueElements));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private static void compareXmlDeposits(XjcRdeDeposit deposit1, XjcRdeDeposit deposit2) {
|
||||
Set<String> domains1 = new HashSet<>();
|
||||
Set<String> domains2 = new HashSet<>();
|
||||
Set<String> registrars1 = new HashSet<>();
|
||||
Set<String> registrars2 = new HashSet<>();
|
||||
process(deposit1, domains1, registrars1);
|
||||
process(deposit2, domains2, registrars2);
|
||||
boolean good = true;
|
||||
good &= printUniqueElements(domains1, domains2, "domains", "deposit1");
|
||||
good &= printUniqueElements(domains2, domains1, "domains", "deposit2");
|
||||
good &= printUniqueElements(registrars1, registrars2, "registrars", "deposit1");
|
||||
good &= printUniqueElements(registrars2, registrars1, "registrars", "deposit2");
|
||||
if (good) {
|
||||
System.out.println(
|
||||
"The two deposits contain the same domains and registrars. "
|
||||
+ "You still need to run validate_escrow_deposit to check reference consistency.");
|
||||
} else {
|
||||
System.out.println("The two deposits differ.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,63 +0,0 @@
|
|||
// Copyright 2021 The Nomulus Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package google.registry.tools.javascrap;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import google.registry.rde.RdeTestData;
|
||||
import google.registry.tools.CommandTestCase;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/** Unit tests for {@link CompareEscrowDepositsCommand}. */
|
||||
class CompareEscrowDepositsCommandTest extends CommandTestCase<CompareEscrowDepositsCommand> {
|
||||
|
||||
@Test
|
||||
void testFailure_wrongNumberOfFiles() throws Exception {
|
||||
String file1 = writeToNamedTmpFile("file1", "foo".getBytes(StandardCharsets.UTF_8));
|
||||
String file2 = writeToNamedTmpFile("file2", "bar".getBytes(StandardCharsets.UTF_8));
|
||||
String file3 = writeToNamedTmpFile("file3", "baz".getBytes(StandardCharsets.UTF_8));
|
||||
assertThrows(IllegalArgumentException.class, () -> runCommand(file1));
|
||||
assertThrows(IllegalArgumentException.class, () -> runCommand(file1, file2, file3));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSuccess_sameContentDifferentOrder() throws Exception {
|
||||
String file1 = writeToNamedTmpFile("file1", RdeTestData.loadBytes("deposit_full.xml").read());
|
||||
String file2 =
|
||||
writeToNamedTmpFile("file2", RdeTestData.loadBytes("deposit_full_out_of_order.xml").read());
|
||||
runCommand(file1, file2);
|
||||
assertThat(getStdoutAsString())
|
||||
.contains("The two deposits contain the same domains and registrars.");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSuccess_differentContent() throws Exception {
|
||||
String file1 = writeToNamedTmpFile("file1", RdeTestData.loadBytes("deposit_full.xml").read());
|
||||
String file2 =
|
||||
writeToNamedTmpFile("file2", RdeTestData.loadBytes("deposit_full_different.xml").read());
|
||||
runCommand(file1, file2);
|
||||
assertThat(getStdoutAsString())
|
||||
.isEqualTo(
|
||||
"domains only in deposit1:\n"
|
||||
+ "example2.test\n"
|
||||
+ "domains only in deposit2:\n"
|
||||
+ "example3.test\n"
|
||||
+ "registrars only in deposit2:\n"
|
||||
+ "RegistrarY\n"
|
||||
+ "The two deposits differ.\n");
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue