Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 11 additions & 10 deletions web-console/e2e-tests/auto-compaction.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
* limitations under the License.
*/

import axios from 'axios';
import path from 'path';
import * as playwright from 'playwright-chromium';

Expand All @@ -25,7 +24,6 @@ import { Datasource } from './component/datasources/datasource';
import { DatasourcesOverview } from './component/datasources/overview';
import { HashedPartitionsSpec } from './component/load-data/config/partition';
import { saveScreenshotIfError } from './util/debug';
import { COORDINATOR_URL } from './util/druid';
import { DRUID_EXAMPLES_QUICKSTART_TUTORIAL_DIR } from './util/druid';
import { UNIFIED_CONSOLE_URL } from './util/druid';
import { runIndexTask } from './util/druid';
Expand Down Expand Up @@ -77,7 +75,7 @@ describe('Auto-compaction', () => {
// need several iterations if several time chunks need compaction
let currNumSegment = uncompactedNumSegment;
await retryIfJestAssertionError(async () => {
await triggerCompaction();
await triggerCompaction(page);
currNumSegment = await waitForCompaction(page, datasourceName, currNumSegment);

const compactedNumSegment = 2;
Expand Down Expand Up @@ -127,15 +125,18 @@ async function configureCompaction(
const datasourcesOverview = new DatasourcesOverview(page, UNIFIED_CONSOLE_URL);
await datasourcesOverview.setCompactionConfiguration(datasourceName, compactionConfig);

const savedCompactionConfig = await datasourcesOverview.getCompactionConfiguration(
datasourceName,
);
expect(savedCompactionConfig).toEqual(compactionConfig);
// Saving the compaction config is not instantaneous
await retryIfJestAssertionError(async () => {
const savedCompactionConfig = await datasourcesOverview.getCompactionConfiguration(
datasourceName,
);
expect(savedCompactionConfig).toEqual(compactionConfig);
});
}

async function triggerCompaction() {
const res = await axios.post(`${COORDINATOR_URL}/druid/coordinator/v1/compaction/compact`);
expect(res.status).toBe(200);
async function triggerCompaction(page: playwright.Page) {
const datasourcesOverview = new DatasourcesOverview(page, UNIFIED_CONSOLE_URL);
await datasourcesOverview.triggerCompaction();
}

async function waitForCompaction(
Expand Down
34 changes: 29 additions & 5 deletions web-console/e2e-tests/component/datasources/overview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ enum DatasourceColumn {
ACTIONS,
}

const EDIT_COMPACTION_CONFIGURATION = 'Edit compaction configuration';
const SKIP_OFFSET_FROM_LATEST = 'Skip offset from latest';

/**
Expand Down Expand Up @@ -83,9 +82,8 @@ export class DatasourcesOverview {
datasourceName: string,
compactionConfig: CompactionConfig,
): Promise<void> {
await this.openEditActions(datasourceName);
await this.openCompactionConfigurationDialog(datasourceName);

await this.page.click(`"${EDIT_COMPACTION_CONFIGURATION}"`);
await setLabeledInput(
this.page,
SKIP_OFFSET_FROM_LATEST,
Expand All @@ -96,10 +94,20 @@ export class DatasourcesOverview {
await clickButton(this.page, 'Submit');
}

async getCompactionConfiguration(datasourceName: string): Promise<CompactionConfig> {
private async openCompactionConfigurationDialog(datasourceName: string): Promise<void> {
await this.openEditActions(datasourceName);
await this.clickMenuItem('Edit compaction configuration');
await this.page.waitForSelector('div.compaction-dialog');
}

private async clickMenuItem(text: string): Promise<void> {
const menuItemSelector = `//a[*[contains(text(),"${text}")]]`;
await this.page.click(menuItemSelector);
}

async getCompactionConfiguration(datasourceName: string): Promise<CompactionConfig> {
await this.openCompactionConfigurationDialog(datasourceName);

await this.page.click(`"${EDIT_COMPACTION_CONFIGURATION}"`);
const skipOffsetFromLatest = await getLabeledInput(this.page, SKIP_OFFSET_FROM_LATEST);
const partitionsSpec = await readPartitionSpec(this.page);

Expand All @@ -116,6 +124,22 @@ export class DatasourcesOverview {

const editActions = await this.page.$$('span[icon=wrench]');
editActions[index].click();
await this.waitForPopupMenu();
}

private async waitForPopupMenu(): Promise<void> {
await this.page.waitForSelector('ul.bp3-menu');
}

async triggerCompaction(): Promise<void> {
await this.page.goto(this.baseUrl);
await this.clickMoreButton({ modifiers: ['Alt'] });
await this.clickMenuItem('Force compaction run');
await clickButton(this.page, 'Force compaction run');
}

private async clickMoreButton(options: any): Promise<void> {
await this.page.click('//button[span[@icon="more"]]', options);
await this.waitForPopupMenu();
}
}