use of com.quorum.tessera.cli.parsers.ConfigConverter in project tessera by ConsenSys.
the class MigrationTest method doMigration.
@Test
public void doMigration() {
MigrationCliAdapter migrationCommand = new MigrationCliAdapter();
assertThat(migrationCommand.getType()).isEqualTo(CliType.MULTITENANCY_MIGRATION);
final CommandLine commandLine = new CommandLine(migrationCommand);
commandLine.registerConverter(Config.class, new ConfigConverter()).setSeparator(" ").setCaseInsensitiveEnumValuesAllowed(true);
int exitCode = commandLine.execute(args.toArray(String[]::new));
assertThat(exitCode).isZero();
EntityManager secondaryEntityManager = secondaryEntityManagerFactory.createEntityManager();
EntityManager primaryEntityManager = primaryEntityManagerFactory.createEntityManager();
secondaryEntityManager.getTransaction().begin();
primaryEntityManager.getTransaction().begin();
secondaryEntityManager.createQuery("select count(e) from EncryptedTransaction e", Long.class).getResultStream().findFirst().ifPresent(count -> assertThat(count).isEqualTo(encryptedTransactionCount));
primaryEntityManager.createQuery("select count(e) from EncryptedTransaction e", Long.class).getResultStream().findFirst().ifPresent(count -> assertThat(count).isEqualTo(encryptedTransactionCount));
secondaryEntityManager.createQuery("select count(e) from EncryptedRawTransaction e", Long.class).getResultStream().findFirst().ifPresent(count -> assertThat(count).isEqualTo(encryptedRawTransactionCount));
primaryEntityManager.createQuery("select count(e) from EncryptedRawTransaction e", Long.class).getResultStream().findFirst().ifPresent(count -> assertThat(count).isEqualTo(encryptedRawTransactionCount));
secondaryEntityManager.createQuery("select e from EncryptedTransaction e", EncryptedTransaction.class).getResultStream().forEach(e -> {
EncryptedTransaction copiedEncryptedTransaction = primaryEntityManager.find(EncryptedTransaction.class, e.getHash());
assertThat(copiedEncryptedTransaction).isNotNull();
assertThat(copiedEncryptedTransaction.getEncodedPayload()).isEqualTo(e.getEncodedPayload());
});
secondaryEntityManager.createQuery("select e from EncryptedRawTransaction e", EncryptedRawTransaction.class).getResultStream().forEach(e -> {
EncryptedRawTransaction copiedEncryptedRawTransaction = primaryEntityManager.find(EncryptedRawTransaction.class, e.getHash());
assertThat(copiedEncryptedRawTransaction).isNotNull();
assertThat(copiedEncryptedRawTransaction.getEncryptedKey()).isEqualTo(e.getEncryptedKey());
assertThat(copiedEncryptedRawTransaction.getEncryptedPayload()).isEqualTo(e.getEncryptedPayload());
assertThat(copiedEncryptedRawTransaction.getSender()).isEqualTo(e.getSender());
assertThat(copiedEncryptedRawTransaction.getNonce()).isEqualTo(e.getNonce());
});
secondaryEntityManager.getTransaction().rollback();
primaryEntityManager.getTransaction().rollback();
assertThat(commandLine.execute(args.toArray(String[]::new))).describedAs("Rerunning should throw no errors as there are exist checks before insert").isZero();
primaryEntityManager.createQuery("select count(e) from EncryptedTransaction e", Long.class).getResultStream().findFirst().ifPresent(count -> assertThat(count).isEqualTo(encryptedTransactionCount));
secondaryEntityManager.createQuery("select count(e) from EncryptedRawTransaction e", Long.class).getResultStream().findFirst().ifPresent(count -> assertThat(count).isEqualTo(encryptedRawTransactionCount));
}
Aggregations