use of io.prestosql.spi.resourcegroups.ResourceGroupId in project hetu-core by openlookeng.
the class TestQueuesDb method assertResourceGroupWithClientTags.
private void assertResourceGroupWithClientTags(Set<String> clientTags, ResourceGroupId expectedResourceGroup) throws InterruptedException {
Session session = testSessionBuilder().setCatalog("tpch").setSchema("sf100000").setSource("client_tags").setClientTags(clientTags).build();
QueryId queryId = createQuery(queryRunner, session, LONG_LASTING_QUERY);
waitForQueryState(queryRunner, queryId, ImmutableSet.of(RUNNING, FINISHED));
Optional<ResourceGroupId> resourceGroupId = queryRunner.getCoordinator().getQueryManager().getFullQueryInfo(queryId).getResourceGroupId();
assertTrue(resourceGroupId.isPresent(), "Query should have a resource group");
assertEquals(resourceGroupId.get(), expectedResourceGroup, format("Expected: '%s' resource group, found: %s", expectedResourceGroup, resourceGroupId.get()));
}
use of io.prestosql.spi.resourcegroups.ResourceGroupId in project hetu-core by openlookeng.
the class TestDbResourceGroupConfigurationManager method testEnvironments.
@Test
public void testEnvironments() {
H2DaoProvider daoProvider = setup("test_configuration");
H2ResourceGroupsDao dao = daoProvider.get();
dao.createResourceGroupsGlobalPropertiesTable();
dao.createResourceGroupsTable();
dao.createSelectorsTable();
String prodEnvironment = "prod";
String devEnvironment = "dev";
dao.insertResourceGroupsGlobalProperties("cpu_quota_period", "1h");
// two resource groups are the same except the group for the prod environment has a larger softMemoryLimit
// Hetu: add values for new parameters softReservedMemory and hardReservedConcurrency
dao.insertResourceGroup(1, "prod_global", "10MB", "5MB", 1000, 100, 100, 50, "weighted", null, true, "1h", "1d", "RECENT_QUERIES", null, prodEnvironment);
dao.insertResourceGroup(2, "dev_global", "1MB", "5MB", 1000, 100, 100, 50, "weighted", null, true, "1h", "1d", "RECENT_QUERIES", null, devEnvironment);
dao.insertSelector(1, 1, ".*prod_user.*", null, null, null, null);
dao.insertSelector(2, 2, ".*dev_user.*", null, null, null, null);
// check the prod configuration
DbResourceGroupConfigurationManager manager = new DbResourceGroupConfigurationManager((poolId, listener) -> {
}, new DbResourceGroupConfig(), daoProvider.get(), prodEnvironment);
List<ResourceGroupSpec> groups = manager.getRootGroups();
assertEquals(groups.size(), 1);
InternalResourceGroup prodGlobal = new InternalResourceGroup(Optional.empty(), "prod_global", (group, export) -> {
}, directExecutor());
manager.configure(prodGlobal, new SelectionContext<>(prodGlobal.getId(), new ResourceGroupIdTemplate("prod_global")));
// Hetu: add values for new parameters softReservedMemory and hardReservedConcurrency
assertEqualsResourceGroup(prodGlobal, "10MB", 1000, 100, 100, WEIGHTED, DEFAULT_WEIGHT, true, new Duration(1, HOURS), new Duration(1, DAYS));
assertEquals(manager.getSelectors().size(), 1);
ResourceGroupSelector prodSelector = manager.getSelectors().get(0);
ResourceGroupId prodResourceGroupId = prodSelector.match(new SelectionCriteria(true, "prod_user", Optional.empty(), ImmutableSet.of(), EMPTY_RESOURCE_ESTIMATES, Optional.empty())).get().getResourceGroupId();
assertEquals(prodResourceGroupId.toString(), "prod_global");
// check the dev configuration
manager = new DbResourceGroupConfigurationManager((poolId, listener) -> {
}, new DbResourceGroupConfig(), daoProvider.get(), devEnvironment);
assertEquals(groups.size(), 1);
InternalResourceGroup devGlobal = new InternalResourceGroup(Optional.empty(), "dev_global", (group, export) -> {
}, directExecutor());
manager.configure(devGlobal, new SelectionContext<>(prodGlobal.getId(), new ResourceGroupIdTemplate("dev_global")));
assertEqualsResourceGroup(devGlobal, "1MB", 1000, 100, 100, WEIGHTED, DEFAULT_WEIGHT, true, new Duration(1, HOURS), new Duration(1, DAYS));
assertEquals(manager.getSelectors().size(), 1);
ResourceGroupSelector devSelector = manager.getSelectors().get(0);
ResourceGroupId devResourceGroupId = devSelector.match(new SelectionCriteria(true, "dev_user", Optional.empty(), ImmutableSet.of(), EMPTY_RESOURCE_ESTIMATES, Optional.empty())).get().getResourceGroupId();
assertEquals(devResourceGroupId.toString(), "dev_global");
}
use of io.prestosql.spi.resourcegroups.ResourceGroupId in project hetu-core by openlookeng.
the class TestDbSourceExactMatchSelector method testMatch.
@Test
public void testMatch() {
ResourceGroupId resourceGroupId1 = new ResourceGroupId(ImmutableList.of("global", "test", "user", "insert"));
ResourceGroupId resourceGroupId2 = new ResourceGroupId(ImmutableList.of("global", "test", "user", "select"));
dao.insertExactMatchSelector("test", "@test@test_pipeline", INSERT.name(), CODEC.toJson(resourceGroupId1));
dao.insertExactMatchSelector("test", "@test@test_pipeline", SELECT.name(), CODEC.toJson(resourceGroupId2));
DbSourceExactMatchSelector selector = new DbSourceExactMatchSelector("test", dao);
assertEquals(selector.match(new SelectionCriteria(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), EMPTY_RESOURCE_ESTIMATES, Optional.empty())), Optional.empty());
assertEquals(selector.match(new SelectionCriteria(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), EMPTY_RESOURCE_ESTIMATES, Optional.of(INSERT.name()))).map(SelectionContext::getResourceGroupId), Optional.of(resourceGroupId1));
assertEquals(selector.match(new SelectionCriteria(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), EMPTY_RESOURCE_ESTIMATES, Optional.of(SELECT.name()))).map(SelectionContext::getResourceGroupId), Optional.of(resourceGroupId2));
assertEquals(selector.match(new SelectionCriteria(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), EMPTY_RESOURCE_ESTIMATES, Optional.of(DELETE.name()))), Optional.empty());
assertEquals(selector.match(new SelectionCriteria(true, "testuser", Optional.of("@test@test_new"), ImmutableSet.of(), EMPTY_RESOURCE_ESTIMATES, Optional.of(INSERT.name()))), Optional.empty());
}
use of io.prestosql.spi.resourcegroups.ResourceGroupId in project hetu-core by openlookeng.
the class TestFileResourceGroupConfigurationManager method assertMatch.
private static void assertMatch(FileResourceGroupConfigurationManager manager, SelectionCriteria criteria, String expectedResourceGroup) {
ResourceGroupId resourceGroupId = match(manager, criteria).getResourceGroupId();
assertEquals(resourceGroupId.toString(), expectedResourceGroup, format("Expected: '%s' resource group, found: %s", expectedResourceGroup, resourceGroupId));
}
use of io.prestosql.spi.resourcegroups.ResourceGroupId in project hetu-core by openlookeng.
the class TestResourceGroupIdTemplate method testExpansion.
@Test
public void testExpansion() {
ResourceGroupIdTemplate template = new ResourceGroupIdTemplate("test.${USER}.${SOURCE}");
ResourceGroupId expected = new ResourceGroupId(new ResourceGroupId(new ResourceGroupId("test"), "u"), "s");
assertEquals(template.expandTemplate(new VariableMap(ImmutableMap.of("USER", "u", "SOURCE", "s"))), expected);
template = new ResourceGroupIdTemplate("test.${USER}");
assertEquals(template.expandTemplate(new VariableMap(ImmutableMap.of("USER", "alice.smith", "SOURCE", "s"))), new ResourceGroupId(new ResourceGroupId("test"), "alice.smith"));
}
Aggregations