package edu.brown.catalog;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.voltdb.catalog.Catalog;
import org.voltdb.catalog.Cluster;
import org.voltdb.catalog.Host;
import org.voltdb.catalog.Partition;
import org.voltdb.catalog.Site;
import edu.brown.BaseTestCase;
import edu.brown.utils.ProjectType;
public class TestFixCatalog extends BaseTestCase {
private static final int NUM_HOSTS = 10;
private static final int NUM_SITES_PER_HOST = 2;
private static final int NUM_PARTITIONS_PER_SITE = 2;
@Override
protected void setUp() throws Exception {
super.setUp(ProjectType.AUCTIONMARK);
}
/**
* testAddHostInfo
*/
public void testAddHostInfo() throws Exception {
Catalog new_catalog = FixCatalog.cloneCatalog(catalog, NUM_HOSTS, NUM_SITES_PER_HOST, NUM_PARTITIONS_PER_SITE);
Cluster catalog_clus = CatalogUtil.getCluster(new_catalog);
assertEquals(NUM_PARTITIONS_PER_SITE * NUM_SITES_PER_HOST * NUM_HOSTS, CatalogUtil.getNumberOfPartitions(new_catalog));
Set<Host> seen_hosts = new HashSet<Host>();
Set<Site> seen_sites = new HashSet<Site>();
Set<Partition> seen_partitions = new HashSet<Partition>();
Set<Integer> seen_site_ids = new HashSet<Integer>();
Set<Integer> seen_partition_ids = new HashSet<Integer>();
for (Host catalog_host : catalog_clus.getHosts()) {
assertNotNull(catalog_host);
Collection<Site> sites = CatalogUtil.getSitesForHost(catalog_host);
assertEquals(sites.toString(), NUM_SITES_PER_HOST, sites.size());
for (Site catalog_site : sites) {
assertEquals(catalog_host, catalog_site.getHost());
assertEquals(NUM_PARTITIONS_PER_SITE, catalog_site.getPartitions().size());
assertFalse(seen_site_ids.contains(catalog_site.getId()));
for (Partition catalog_part : catalog_site.getPartitions()) {
assertNotNull(catalog_part);
assertFalse(catalog_part.toString(), seen_partitions.contains(catalog_part));
assertFalse(seen_partition_ids.contains(catalog_part.getId()));
seen_partitions.add(catalog_part);
seen_partition_ids.add(catalog_part.getId());
} // FOR (partitions)
seen_sites.add(catalog_site);
} // FOR (sites)
seen_hosts.add(catalog_host);
} // FOR (hosts)
assertEquals(NUM_HOSTS, seen_hosts.size());
assertEquals(NUM_HOSTS * NUM_SITES_PER_HOST, seen_sites.size());
assertEquals(NUM_HOSTS * NUM_SITES_PER_HOST * NUM_PARTITIONS_PER_SITE, seen_partitions.size());
assertEquals(seen_partition_ids.size(), catalog_clus.getNum_partitions());
}
}