google-nomulus/java/google/registry/util
Ben McIlwain f5e76868f0 Add generic implementation comparator
This is an alternative to the "manually constructed" version in []

This generator recieves two objects implementing some interface. It returns a new implementation that exactly duplicates the behavior (return values, exceptions etc.) of the first ("original") object, but also logs any differences (in either return value or thrown exception) from the second object.

Nothing in the second object's execution will affect the results - not even thrown exceptions - it's only used for logging any differences.

This is useful when switching backend architecture for the some interface (say... from keystore to datastore+KMS for the Keyring interface :)) as we can make sure everything was OK for some extended period of real data before doing the switch.

This is better than just comparing the outputs once because having a completely different backend out of our control can result in "glitches" that are rare but relevant: maybe the new backend has lower availability, or sometimes fails and gives wrong results, or... well, that's it.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149706165
2017-03-13 11:22:55 -04:00
..
AppEngineTimeLimiter.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
BUILD Add generic implementation comparator 2017-03-13 11:22:55 -04:00
CapturingLogHandler.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
CidrAddressBlock.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
Clock.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
CollectionUtils.java Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
ComparingInvocationHandler.java Add generic implementation comparator 2017-03-13 11:22:55 -04:00
Concurrent.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
DatastoreServiceUtils.java Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
DateTimeUtils.java Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
DiffUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
DomainNameUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
FixedClock.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
FormattingLogger.java Resolve some Guava 20 TODOs (mostly unnecessary asList() calls) 2017-02-07 13:27:40 -05:00
HexDumper.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
Idn.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
ImprovedInputStream.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
ImprovedOutputStream.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
ListNamingUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
NetworkUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
NonFinalForTesting.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
ObjectifyUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
package-info.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
PipelineUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
PosixTarHeader.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
PreconditionsUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
PredicateUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
RandomStringGenerator.java Generate authInfo for imported domains 2017-02-08 17:42:57 -05:00
RegistrarUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
ResourceUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
Retrier.java Resolve some Guava 20 TODOs (mostly unnecessary asList() calls) 2017-02-07 13:27:40 -05:00
SendEmailService.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
SerializeUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
Sleeper.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
SqlTemplate.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
StringGenerator.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
SystemClock.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
SystemSleeper.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
TaskEnqueuer.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
TeeOutputStream.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
TokenUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
TypeUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
UrlFetchException.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
UrlFetchUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
X509Utils.java Replace Throwables.propagate and variants with Guava 20 versions 2017-02-02 17:01:23 -05:00
XmlEnumUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
XmlToEnumMapper.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00