@Before public void setUp() throws Exception { // new File("testledger").delete(); // Class.forName("org.postgresql.Driver"); ledger = new PostgresLedger(CONNECTION_STRING); ledger.enableCache(false); }
/** * Request the shutdown and wait until the node stops. */ public void shutdown() { try { if (hookThread != null) Runtime.getRuntime().removeShutdownHook(hookThread); // network.close(); ledger.close(); log("shutting down"); network.shutdown(); clientHTTPServer.shutdown(); } catch (Exception e) { } synchronized (parser) { parser.notifyAll(); } try { logger.close(); } catch (Exception e) { e.printStackTrace(); } }
@Test public void create() throws Exception { // System.out.println("" + ledger.getDb().getIntParam("version")); HashId id = HashId.createRandom(); assertNull(ledger.getRecord(id)); StateRecord r = ledger.findOrCreate(id); System.out.println(r); System.out.println(ledger.countRecords()); }
@Override public long removeEnvironment(HashId ncontractHashId) { long envId = getEnvironmentId(ncontractHashId); removeSubscriptionsByEnvId(envId); removeStorageContractsByEnvId(envId); clearExpiredStorageContractBinaries(); return removeEnvironmentEx(ncontractHashId); }
@Override public void removeExpiredStoragesAndSubscriptionsCascade() { clearExpiredSubscriptions(); clearExpiredStorages(); clearExpiredStorageContractBinaries(); }
@Override public void addNameRecord(final NNameRecord nameRecord) { long nameStorageId = addNameStorage(nameRecord); if (nameStorageId != 0) { nameRecord.setId(nameStorageId); removeNameRecordEntries(nameStorageId); for (NameRecordEntry nameRecordEntry : nameRecord.getEntries()) { ((NNameRecordEntry) nameRecordEntry).setNameRecordId(nameStorageId); addNameEntry((NNameRecordEntry) nameRecordEntry); } } else { throw new Failure("addNameRecord failed"); } }
@Override public Set<HashId> saveEnvironment(NImmutableEnvironment environment) { Set<HashId> conflicts = saveEnvironment_getConflicts(environment); if (conflicts.size() == 0) { NSmartContract nsc = environment.getContract(); removeEnvironment(nsc.getId()); long envId = saveEnvironmentToStorage(nsc.getExtendedType(), nsc.getId(), Boss.pack(environment.getMutable().getKVStore()), nsc.getPackedTransaction()); for (NameRecord nr : environment.nameRecords()) { NNameRecord nnr = (NNameRecord)nr; nnr.setEnvironmentId(envId); addNameRecord(nnr); } for (ContractSubscription css : environment.subscriptions()) saveSubscriptionInStorage(css.getHashId(), css.isChainSubscription(), css.expiresAt(), envId); for (ContractStorage cst : environment.storages()) saveContractInStorage(cst.getContract().getId(), cst.getPackedContract(), cst.expiresAt(), cst.getContract().getOrigin(), envId); FollowerService fs = environment.getFollowerService(); if (fs != null) saveFollowerEnvironment(envId, fs.expiresAt(), fs.mutedAt(), fs.getCallbacksSpent(), fs.getStartedCallbacks()); } return conflicts; }
@Before public void beforeMainTest() throws Exception { // clearLedgers List<String> dbUrls = new ArrayList<>(); dbUrls.add("jdbc:postgresql://localhost:5432/universa_node_t1"); dbUrls.add("jdbc:postgresql://localhost:5432/universa_node_t2"); dbUrls.add("jdbc:postgresql://localhost:5432/universa_node_t3"); dbUrls.add("jdbc:postgresql://localhost:5432/universa_node_t4"); List<Ledger> ledgers = new ArrayList<>(); dbUrls.stream().forEach(url -> { try { clearLedger(url); PostgresLedger ledger = new PostgresLedger(url); ledgers.add(ledger); } catch (Exception e) { e.printStackTrace(); } }); // add U issuer test key configForProvider.addTransactionUnitsIssuerKeyData(new KeyAddress("Zau3tT8YtDkj3UDBSznrWHAjbhhU4SXsfQLWDFsv5vw24TLn6s")); }
@Test public void destroy() throws Exception { StateRecord r1 = ledger.findOrCreate(HashId.createRandom()); r1.destroy(); assertNull(ledger.getRecord(r1.getId())); }
try { PostgresLedger ledger = new PostgresLedger(url); ledgers.add(ledger); } catch (Exception e) { PostgresLedger ledger = new PostgresLedger(url); assertTrue(ledger.findUnfinished().isEmpty()); ledger.close(); } catch (Exception e) { e.printStackTrace();
@Test public void checkNegativeBytesInId() throws Exception { HashId id = HashId.withDigest(Do.randomNegativeBytes(64)); StateRecord r1 = ledger.findOrCreate(id); r1.setState(ItemState.DECLINED); r1.save(); StateRecord r2 = ledger.getRecord(id); assertNotNull(r2); assertNotSame(r1, r2); assertEquals(r1.getState(), r2.getState()); ledger.enableCache(true); StateRecord r3 = ledger.getRecord(id); StateRecord r4 = ledger.getRecord(id); assertEquals(r3.toString(), r4.toString()); // why? assertSame(r3, r4); }
Contract contract = new Contract(TestKeys.privateKey(0)); contract.seal(); StateRecord r = ledger.findOrCreate(contract.getId()); r.setExpiresAt(ZonedDateTime.now().minusSeconds(1)); r.save(); ledger.putItem(r,contract,Instant.now().plusSeconds(300)); r = ledger.findOrCreate(contract.getId()); r.setExpiresAt(ZonedDateTime.now().plusMonths(1)); r.save(); ledger.putItem(r,contract,Instant.now().minusSeconds(1)); ledger.cleanup(false); PreparedStatement st = ledger.getDb().statement("select count(*) from ledger where hash = ?", hash1.getDigest()); st = ledger.getDb().statement("select count(*) from ledger where hash = ?", hash2.getDigest()); st = ledger.getDb().statement("select count(*) from items where id in (select id from ledger where hash = ?)", hash2.getDigest());
loadNetConfig(); ledger.saveConfig(myInfo,netConfig,nodeKey); } else if(options.has("database")) { ledger = new PostgresLedger((String) options.valueOf("database")); log("ledger constructed"); Object[] result = ledger.loadConfig(); myInfo = (NodeInfo) result[0]; netConfig = (NetConfig) result[1];
@Test public void saveAndTransaction() throws Exception { StateRecord r1 = ledger.findOrCreate(HashId.createRandom()); StateRecord r2 = ledger.findOrCreate(HashId.createRandom()); int x = ledger.transaction(() -> { r1.setState(ItemState.APPROVED); r2.setState(ItemState.DECLINED); assertEquals(5, x); r1.reload(); StateRecord r3 = ledger.getRecord(r1.getId()); assertEquals(ItemState.APPROVED, r1.getState()); assertEquals(ItemState.APPROVED, r3.getState()); r2.reload(); assertEquals(ItemState.DECLINED, r2.getState()); Object y = ledger.transaction(() -> { r1.setState(ItemState.REVOKED); r2.setState(ItemState.DISCARDED);
envCache = node.getEnvCache(); StateRecord r = ledger.getRecord(HashId.withDigest("bS/c4YMidaVuzTBhHLkGPFAvPbZQHybzQnXAoBwaZYM8eLYb7mAkVYEpuqKRXYc7anqX47BeNdvFN1n7KluH9A==")); if( r != null ) r.destroy();
Ledger ledger = new PostgresLedger(PostgresLedgerTest.CONNECTION_STRING + "_t" + i, properties);
@Test public void findOrCreateAndGet() throws Exception { // Atomic new record creation HashId id = HashId.createRandom(); StateRecord r = ledger.findOrCreate(id); assertNotNull(r); assertEquals(id, r.getId()); assertEquals(ItemState.PENDING, r.getState()); assertAlmostSame(ZonedDateTime.now(), r.getCreatedAt()); // returning existing record StateRecord r1 = ledger.findOrCreate(id); assertSameRecords(r, r1); StateRecord r2 = ledger.getRecord(id); assertSameRecords(r, r2); StateRecord r3 = ledger.getRecord(HashId.createRandom()); assert (r3 == null); }
properties.load(new FileReader(file)); ledger_s = new PostgresLedger(PostgresLedgerTest.CONNECTION_STRING, properties); node_s = new Node(config_s, myInfo, ledger_s, network_s, getNodeKey(0)); ((TestSingleNetwork)network_s).addNode(myInfo, node_s);
@Test public void recordExpiration() throws Exception { // todo: expired can't be get - it should be dropped by the database HashId hashId = HashId.createRandom(); StateRecord r = ledger.findOrCreate(hashId); assertNotNull(r.getExpiresAt()); assert(r.getExpiresAt().isAfter(ZonedDateTime.now())); long recordId = r.getRecordId(); ZonedDateTime inFuture = ZonedDateTime.now().plusHours(2); r.setExpiresAt(inFuture); StateRecord r1 = ledger.getRecord(hashId); assertNotEquals(r1.getExpiresAt(), inFuture); r.save(); r1 = ledger.getRecord(hashId); assertAlmostSame(r.getExpiresAt(), r1.getExpiresAt()); r.setExpiresAt(ZonedDateTime.now().minusHours(1)); r.save(); r1 = ledger.getRecord(hashId); assertNull(r1); }
try { clearLedger(url); PostgresLedger ledger = new PostgresLedger(url); ledgers.add(ledger); } catch (Exception e) {