package at.ac.ait.archistar.integration;
import io.netty.channel.nio.NioEventLoopGroup;
import java.util.HashSet;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import at.ac.ait.archistar.backendserver.storageinterface.MemoryStorage;
import at.ac.ait.archistar.backendserver.storageinterface.StorageServer;
import at.ac.ait.archistar.engine.TestEngine;
import at.ac.ait.archistar.engine.distributor.BFTDistributor;
import at.ac.ait.archistar.engine.distributor.Distributor;
import at.ac.ait.archistar.engine.distributor.TestServerConfiguration;
import at.ac.ait.archistar.engine.metadata.MetadataService;
import at.ac.ait.archistar.engine.metadata.SimpleMetadataService;
import at.archistar.crypto.CryptoEngine;
import at.archistar.crypto.RabinBenOrEngine;
import at.archistar.crypto.secretsharing.WeakSecurityException;
import at.archistar.crypto.random.FakeRandomSource;
import java.security.NoSuchAlgorithmException;
public class BftTest extends AbstractIntegrationTest {
@BeforeClass
public static void prepareBftNetwork() throws NoSuchAlgorithmException, WeakSecurityException {
/* test configuration */
HashSet<StorageServer> servers = new HashSet<>();
for (int i = 0; i < 4; i ++) {
servers.add(new MemoryStorage(i));
}
serverConfig = new TestServerConfiguration(servers);
serverConfig.setupTestServer(1);
CryptoEngine crypto = new RabinBenOrEngine(4, 3, new FakeRandomSource());
Distributor distributor = new BFTDistributor(serverConfig, new NioEventLoopGroup());
MetadataService metadata = new SimpleMetadataService(serverConfig, distributor, crypto);
engine = new TestEngine(serverConfig, metadata, distributor, crypto);
}
@AfterClass
public static void shutdownServers() {
serverConfig.teardownTestServer();
}
}