use of org.aion.util.types.ByteArrayWrapper in project aion by aionnetwork.
the class TaskImportBlocksTest method testFilterBatch_wPruningRestrictions.
@Test
public void testFilterBatch_wPruningRestrictions() {
int current_count = 5, height = 10;
StandaloneBlockchain.Bundle bundle = builder.withValidatorConfiguration("simple").withDefaultAccounts(accounts).withRepoConfig(new RepositoryConfig() {
@Override
public String getDbPath() {
return "";
}
@Override
public PruneConfig getPruneConfig() {
// top pruning without archiving
return new PruneConfig() {
@Override
public boolean isEnabled() {
return true;
}
@Override
public boolean isArchived() {
return false;
}
@Override
public int getCurrentCount() {
return current_count;
}
@Override
public int getArchiveRate() {
return 0;
}
};
}
@Override
public Properties getDatabaseConfig(String db_name) {
Properties props = new Properties();
props.setProperty(DatabaseFactory.Props.DB_TYPE, DBVendor.MOCKDB.toValue());
return props;
}
}).build();
StandaloneBlockchain chain = bundle.bc;
// populate chain at random
generateRandomChain(chain, height, 1, accounts, 10);
// populate initial input lists
List<Block> allBlocks = new ArrayList<>();
Map<ByteArrayWrapper, Object> allHashes = new HashMap<>();
List<Block> unrestrictedBlocks = new ArrayList<>();
Map<ByteArrayWrapper, Object> unrestrictedHashes = new HashMap<>();
for (long i = 0; i <= height; i++) {
Block current = chain.getBlockByNumber(i);
allBlocks.add(current);
allHashes.put(ByteArrayWrapper.wrap(current.getHash()), true);
if (i >= height - current_count + 1) {
unrestrictedBlocks.add(current);
unrestrictedHashes.put(ByteArrayWrapper.wrap(current.getHash()), true);
}
}
// will filter out all blocks
assertThat(filterBatch(allBlocks, chain, allHashes)).isEmpty();
// will filter out all blocks
assertThat(filterBatch(allBlocks, chain, unrestrictedHashes)).isEmpty();
// will filter out the prune restricted blocks
assertThat(filterBatch(allBlocks, chain, new HashMap<>())).isEqualTo(unrestrictedBlocks);
}
use of org.aion.util.types.ByteArrayWrapper in project aion by aionnetwork.
the class TaskImportBlocksTest method testFilterBatch_woPruningRestrictions.
@Test
public void testFilterBatch_woPruningRestrictions() {
StandaloneBlockchain.Bundle bundle = builder.withValidatorConfiguration("simple").withDefaultAccounts(accounts).build();
StandaloneBlockchain chain = bundle.bc;
// populate chain at random
generateRandomChain(chain, 3, 1, accounts, 10);
// populate initial input lists
List<Block> batch = new ArrayList<>();
Map<ByteArrayWrapper, Object> imported = new HashMap<>();
Block current = chain.getBestBlock();
while (current.getNumber() > 0) {
batch.add(current);
imported.put(ByteArrayWrapper.wrap(current.getHash()), true);
current = chain.getBlockByHash(current.getParentHash());
}
batch.add(current);
imported.put(ByteArrayWrapper.wrap(current.getHash()), true);
// will filter out all blocks
assertThat(filterBatch(batch, chain, imported)).isEmpty();
// will filter out none of the blocks
assertThat(filterBatch(batch, chain, new HashMap<>())).isEqualTo(batch);
}
use of org.aion.util.types.ByteArrayWrapper in project aion by aionnetwork.
the class ExternalStateForAvm method putStorage.
@Override
public void putStorage(AionAddress address, byte[] key, byte[] value) {
ByteArrayWrapper storageKey = ByteArrayWrapper.wrap(key);
ByteArrayWrapper storageValue = ByteArrayWrapper.wrap(value);
this.repositoryCache.addStorageRow(address, storageKey, storageValue);
setVmType(address);
}
use of org.aion.util.types.ByteArrayWrapper in project aion by aionnetwork.
the class ExternalStateForAvm method removeStorage.
@Override
public void removeStorage(AionAddress address, byte[] key) {
ByteArrayWrapper storageKey = ByteArrayWrapper.wrap(key);
this.repositoryCache.removeStorageRow(address, storageKey);
setVmType(address);
}
use of org.aion.util.types.ByteArrayWrapper in project aion by aionnetwork.
the class ExternalStateForAvm method getStorage.
@Override
public byte[] getStorage(AionAddress address, byte[] key) {
ByteArrayWrapper storageKey = ByteArrayWrapper.wrap(key);
ByteArrayWrapper value = this.repositoryCache.getStorageValue(address, storageKey);
return (value == null) ? null : value.toBytes();
}
Aggregations