]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/dashboard: Edit Pool Placement Group E2E Test
authorAdam King <kingamk3@gmail.com>
Tue, 20 Aug 2019 19:03:41 +0000 (15:03 -0400)
committerAdam King <kingamk3@gmail.com>
Tue, 20 Aug 2019 19:03:41 +0000 (15:03 -0400)
Test that the user can edit a pool's placement group

Fixes: https://tracker.ceph.com/issues/41357
Signed-off-by: Adam King <adking@redhat.com>
Signed-off-by: Rafael Quintero <rquinter@redhat.com>
src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts
src/pybind/mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts
src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts

index 1e96b55f4ece515726e2598a01c79bf266f24fdb..ede59c18b68d380bec989de322e03ef4f77c782d 100644 (file)
@@ -59,6 +59,10 @@ export abstract class PageHelper {
     return element(by.cssContainingText('.datatable-body-cell-label', content));
   }
 
+  getTableRow(content) {
+    return element(by.cssContainingText('.datatable-body-row', content));
+  }
+
   getTable() {
     return element.all(by.css('.datatable-body'));
   }
index 26166fa2775e4ce34926f8b6e30ce3decce5b43b..b56ca7ee5cf297450c89b8eaca609e10c3eff894 100644 (file)
@@ -41,6 +41,13 @@ describe('Pools page', () => {
     });
   });
 
+  it('should edit a pools placement group', () => {
+    pools.exist(poolName, true).then(() => {
+      pools.navigateTo();
+      pools.edit_pool_pg(poolName, 32);
+    });
+  });
+
   it('should delete a pool', () => {
     pools.exist(poolName);
     pools.delete(poolName).then(() => {
index 968bcde019f63cb3288b8c594e34751dd59282d5..55f1a43b10d0b106904e6272845c9a7150495aae 100644 (file)
@@ -52,6 +52,36 @@ export class PoolPageHelper extends PageHelper {
     });
   }
 
+  edit_pool_pg(name: string, new_pg: number): promise.Promise<any> {
+    if (!this.isPowerOf2(new_pg)) {
+      return Promise.reject(`Placement groups ${new_pg} are not a power of 2`);
+    }
+    return this.getTableCellByContent(name).then((elem) => {
+      elem.click(); // select pool from the table
+      element(by.cssContainingText('button', 'Edit')).click(); // click edit button
+      expect(this.getBreadcrumbText()).toEqual('Edit'); // verify we are now on edit page
+      $('input[name=pgNum]')
+        .sendKeys(protractor.Key.CONTROL, 'a', protractor.Key.NULL, new_pg)
+        .then(() => {
+          element(by.css('cd-submit-button')).click();
+          const str = `${new_pg} active+clean`;
+          browser
+            .wait(
+              EC.visibilityOf(this.getTableRow(name)),
+              Helper.TIMEOUT,
+              'Timed out waiting for table row to load'
+            )
+            .then(() => {
+              return browser.wait(
+                EC.textToBePresentInElement(this.getTableRow(name), str),
+                Helper.TIMEOUT,
+                'Timed out waiting for placement group to be updated'
+              );
+            });
+        });
+    });
+  }
+
   private setApplications(apps: string[]) {
     if (!apps || apps.length === 0) {
       return;