use of org.apache.accumulo.core.dataImpl.KeyExtent in project accumulo by apache.
the class HostRegexTableLoadBalancerReconfigurationTest method getOnlineTabletsForTable.
@Override
public List<TabletStats> getOnlineTabletsForTable(TServerInstance tserver, TableId tableId) {
List<TabletStats> tablets = new ArrayList<>();
// Report assignment information
for (Entry<KeyExtent, TServerInstance> e : this.assignments.entrySet()) {
if (e.getValue().equals(tserver) && e.getKey().tableId().equals(tableId)) {
TabletStats ts = new TabletStats();
ts.setExtent(e.getKey().toThrift());
tablets.add(ts);
}
}
return tablets;
}
use of org.apache.accumulo.core.dataImpl.KeyExtent in project accumulo by apache.
the class HostRegexTableLoadBalancerReconfigurationTest method testConfigurationChanges.
@Test
public void testConfigurationChanges() {
ServerContext context1 = createMockContext();
replay(context1);
final TestServerConfigurationFactory factory = new TestServerConfigurationFactory(context1);
ServerContext context2 = createMockContext();
expect(context2.getConfiguration()).andReturn(factory.getSystemConfiguration()).anyTimes();
expect(context2.getTableConfiguration(FOO.getId())).andReturn(factory.getTableConfiguration(FOO.getId())).anyTimes();
expect(context2.getTableConfiguration(BAR.getId())).andReturn(factory.getTableConfiguration(BAR.getId())).anyTimes();
expect(context2.getTableConfiguration(BAZ.getId())).andReturn(factory.getTableConfiguration(BAZ.getId())).anyTimes();
replay(context2);
init(context2);
Map<KeyExtent, TServerInstance> unassigned = new HashMap<>();
for (List<KeyExtent> extents : tableExtents.values()) {
for (KeyExtent ke : extents) {
unassigned.put(ke, null);
}
}
this.getAssignments(Collections.unmodifiableSortedMap(allTabletServers), Collections.unmodifiableMap(unassigned), assignments);
assertEquals(15, assignments.size());
// Ensure unique tservers
for (Entry<KeyExtent, TServerInstance> e : assignments.entrySet()) {
for (Entry<KeyExtent, TServerInstance> e2 : assignments.entrySet()) {
if (e.getKey().equals(e2.getKey())) {
continue;
}
if (e.getValue().equals(e2.getValue())) {
fail("Assignment failure. " + e.getKey() + " and " + e2.getKey() + " are assigned to the same host: " + e.getValue());
}
}
}
// Ensure assignments are correct
for (Entry<KeyExtent, TServerInstance> e : assignments.entrySet()) {
if (!tabletInBounds(e.getKey(), e.getValue())) {
fail("tablet not in bounds: " + e.getKey() + " -> " + e.getValue().getHost());
}
}
Set<KeyExtent> migrations = new HashSet<>();
List<TabletMigration> migrationsOut = new ArrayList<>();
// Wait to trigger the out of bounds check which will call our version of
// getOnlineTabletsForTable
UtilWaitThread.sleep(3000);
this.balance(Collections.unmodifiableSortedMap(allTabletServers), migrations, migrationsOut);
assertEquals(0, migrationsOut.size());
// Change property, simulate call by TableConfWatcher
((ConfigurationCopy) factory.getSystemConfiguration()).set(HostRegexTableLoadBalancer.HOST_BALANCER_PREFIX + BAR.getTableName(), "r01.*");
// Wait to trigger the out of bounds check and the repool check
UtilWaitThread.sleep(10000);
this.balance(Collections.unmodifiableSortedMap(allTabletServers), migrations, migrationsOut);
assertEquals(5, migrationsOut.size());
for (TabletMigration migration : migrationsOut) {
assertTrue(migration.newServer.getHost().startsWith("192.168.0.1") || migration.newServer.getHost().startsWith("192.168.0.2") || migration.newServer.getHost().startsWith("192.168.0.3") || migration.newServer.getHost().startsWith("192.168.0.4") || migration.newServer.getHost().startsWith("192.168.0.5"));
}
}
use of org.apache.accumulo.core.dataImpl.KeyExtent in project accumulo by apache.
the class TableLoadBalancerTest method generateFakeTablets.
static List<TabletStats> generateFakeTablets(TServerInstance tserver, TableId tableId) {
List<TabletStats> result = new ArrayList<>();
TabletServerStatus tableInfo = state.get(tserver);
// generate some fake tablets
for (int i = 0; i < tableInfo.tableMap.get(tableId.canonical()).onlineTablets; i++) {
TabletStats stats = new TabletStats();
stats.extent = new KeyExtent(tableId, new Text(tserver.getHost() + String.format("%03d", i + 1)), new Text(tserver.getHost() + String.format("%03d", i))).toThrift();
result.add(stats);
}
return result;
}
use of org.apache.accumulo.core.dataImpl.KeyExtent in project accumulo by apache.
the class MergeInfoTest method testOverlaps_DoesNotNeedChopping.
@Test
public void testOverlaps_DoesNotNeedChopping() {
KeyExtent keyExtent2 = createMock(KeyExtent.class);
expect(keyExtent.overlaps(keyExtent2)).andReturn(false);
expect(keyExtent.tableId()).andReturn(TableId.of("table1"));
replay(keyExtent);
expect(keyExtent2.tableId()).andReturn(TableId.of("table2"));
replay(keyExtent2);
mi = new MergeInfo(keyExtent, MergeInfo.Operation.MERGE);
assertFalse(mi.overlaps(keyExtent2));
}
use of org.apache.accumulo.core.dataImpl.KeyExtent in project accumulo by apache.
the class MergeInfoTest method testSerialization.
@Test
public void testSerialization() throws Exception {
String table = "table";
Text endRow = new Text("end");
Text prevEndRow = new Text("begin");
keyExtent = new KeyExtent(TableId.of(table), endRow, prevEndRow);
mi = new MergeInfo(keyExtent, MergeInfo.Operation.DELETE);
mi.setState(MergeState.STARTED);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
mi.write(dos);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
DataInputStream dis = new DataInputStream(bais);
mi = new MergeInfo();
mi.readFields(dis);
assertSame(MergeState.STARTED, mi.getState());
assertEquals(keyExtent, mi.getExtent());
assertSame(MergeInfo.Operation.DELETE, mi.getOperation());
}
Aggregations