This is an automated email from the ASF dual-hosted git repository.
vogievetsky pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new 1c77491 Test UI to trigger auto compaction (#10469)
1c77491 is described below
commit 1c77491da691e774e5ce5ea1c7d2f398d9d1e3ba
Author: Chi Cao Minh <[email protected]>
AuthorDate: Sun Oct 4 00:06:07 2020 -0700
Test UI to trigger auto compaction (#10469)
In the web console E2E tests, Use the new UI to trigger auto compaction
instead of calling the REST API directly so that the UI is covered by
tests.
---
web-console/e2e-tests/auto-compaction.spec.ts | 21 ++++++-------
.../e2e-tests/component/datasources/overview.ts | 34 ++++++++++++++++++----
2 files changed, 40 insertions(+), 15 deletions(-)
diff --git a/web-console/e2e-tests/auto-compaction.spec.ts
b/web-console/e2e-tests/auto-compaction.spec.ts
index 85d1d9e..7d31d63 100644
--- a/web-console/e2e-tests/auto-compaction.spec.ts
+++ b/web-console/e2e-tests/auto-compaction.spec.ts
@@ -16,7 +16,6 @@
* limitations under the License.
*/
-import axios from 'axios';
import path from 'path';
import * as playwright from 'playwright-chromium';
@@ -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';
@@ -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;
@@ -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(
diff --git a/web-console/e2e-tests/component/datasources/overview.ts
b/web-console/e2e-tests/component/datasources/overview.ts
index d3b7eca..5fb4bf4 100644
--- a/web-console/e2e-tests/component/datasources/overview.ts
+++ b/web-console/e2e-tests/component/datasources/overview.ts
@@ -44,7 +44,6 @@ enum DatasourceColumn {
ACTIONS,
}
-const EDIT_COMPACTION_CONFIGURATION = 'Edit compaction configuration';
const SKIP_OFFSET_FROM_LATEST = 'Skip offset from latest';
/**
@@ -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,
@@ -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);
@@ -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();
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]