From: Nizamudeen A Date: Thu, 30 Dec 2021 08:28:58 +0000 (+0530) Subject: mgr/dashboard: stabilizing the cephadm dashboard e2e X-Git-Tag: v16.2.8~274^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F44468%2Fhead;p=ceph.git mgr/dashboard: stabilizing the cephadm dashboard e2e Reordering the tests and adding some more tests to verify the cluster is healthy before proceeding to do some complex tasks like maintenance and drain host Fixes: https://tracker.ceph.com/issues/53742 Signed-off-by: Nizamudeen A (cherry picked from commit fbc9f46459537d0799c448e27f80623d7d4805c8) --- diff --git a/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/services.po.ts b/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/services.po.ts index 0b70e90b6563..2d1969b75bd0 100644 --- a/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/services.po.ts +++ b/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/services.po.ts @@ -70,12 +70,12 @@ export class ServicesPageHelper extends PageHelper { } } - editService(name: string, count: string) { + editService(name: string, daemonCount: string) { this.navigateEdit(name, true, false); cy.get(`${this.pages.create.id}`).within(() => { cy.get('#service_type').should('be.disabled'); cy.get('#service_id').should('be.disabled'); - cy.get('#count').clear().type(count); + cy.get('#count').clear().type(daemonCount); cy.get('cd-submit-button').click(); }); } diff --git a/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/03-create-cluster-create-osds.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/03-create-cluster-create-osds.e2e-spec.ts deleted file mode 100644 index c8d93b479623..000000000000 --- a/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/03-create-cluster-create-osds.e2e-spec.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { CreateClusterWizardHelper } from 'cypress/integration/cluster/create-cluster.po'; -import { OSDsPageHelper } from 'cypress/integration/cluster/osds.po'; - -const osds = new OSDsPageHelper(); - -describe('Create cluster create osds page', () => { - const createCluster = new CreateClusterWizardHelper(); - - beforeEach(() => { - cy.login(); - Cypress.Cookies.preserveOnce('token'); - createCluster.navigateTo(); - createCluster.createCluster(); - cy.get('.nav-link').contains('Create OSDs').click(); - }); - - it('should check if title contains Create OSDs', () => { - cy.get('.title').should('contain.text', 'Create OSDs'); - }); - - describe('when Orchestrator is available', () => { - it('should create OSDs', () => { - osds.navigateTo(); - osds.getTableCount('total').as('initOSDCount'); - - createCluster.navigateTo(); - createCluster.createCluster(); - cy.get('.nav-link').contains('Create OSDs').click(); - - createCluster.createOSD('hdd'); - - // Go to the Review section and Expand the cluster - // because the drive group spec is only stored - // in frontend and will be lost when refreshed - cy.get('.nav-link').contains('Review').click(); - cy.get('button[aria-label="Next"]').click(); - cy.get('cd-dashboard').should('exist'); - }); - }); -}); diff --git a/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/03-create-cluster-create-services.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/03-create-cluster-create-services.e2e-spec.ts new file mode 100644 index 000000000000..e1b33fea34f7 --- /dev/null +++ b/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/03-create-cluster-create-services.e2e-spec.ts @@ -0,0 +1,51 @@ +import { + CreateClusterServicePageHelper, + CreateClusterWizardHelper +} from 'cypress/integration/cluster/create-cluster.po'; + +describe('Create cluster create services page', () => { + const createCluster = new CreateClusterWizardHelper(); + const createClusterServicePage = new CreateClusterServicePageHelper(); + + const createService = (serviceType: string, serviceName: string, count?: string) => { + cy.get('.btn.btn-accent').first().click({ force: true }); + createClusterServicePage.addService(serviceType, false, count); + createClusterServicePage.checkExist(serviceName, true); + }; + + beforeEach(() => { + cy.login(); + Cypress.Cookies.preserveOnce('token'); + createCluster.navigateTo(); + createCluster.createCluster(); + cy.get('.nav-link').contains('Create Services').click(); + }); + + it('should check if title contains Create Services', () => { + cy.get('.title').should('contain.text', 'Create Services'); + }); + + describe('when Orchestrator is available', () => { + const serviceName = 'rgw.foo'; + + it('should create an rgw service', () => { + createService('rgw', serviceName, '2'); + }); + + it('should delete the service and add it back', () => { + createClusterServicePage.deleteService(serviceName); + + createService('rgw', serviceName, '2'); + }); + + it('should edit a service', () => { + const daemonCount = '4'; + createClusterServicePage.editService(serviceName, daemonCount); + createClusterServicePage.expectPlacementCount(serviceName, daemonCount); + }); + + it('should create an ingress service', () => { + createService('ingress', 'ingress.rgw.foo', '2'); + }); + }); +}); diff --git a/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/04-create-cluster-create-osds.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/04-create-cluster-create-osds.e2e-spec.ts new file mode 100644 index 000000000000..c8d93b479623 --- /dev/null +++ b/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/04-create-cluster-create-osds.e2e-spec.ts @@ -0,0 +1,40 @@ +import { CreateClusterWizardHelper } from 'cypress/integration/cluster/create-cluster.po'; +import { OSDsPageHelper } from 'cypress/integration/cluster/osds.po'; + +const osds = new OSDsPageHelper(); + +describe('Create cluster create osds page', () => { + const createCluster = new CreateClusterWizardHelper(); + + beforeEach(() => { + cy.login(); + Cypress.Cookies.preserveOnce('token'); + createCluster.navigateTo(); + createCluster.createCluster(); + cy.get('.nav-link').contains('Create OSDs').click(); + }); + + it('should check if title contains Create OSDs', () => { + cy.get('.title').should('contain.text', 'Create OSDs'); + }); + + describe('when Orchestrator is available', () => { + it('should create OSDs', () => { + osds.navigateTo(); + osds.getTableCount('total').as('initOSDCount'); + + createCluster.navigateTo(); + createCluster.createCluster(); + cy.get('.nav-link').contains('Create OSDs').click(); + + createCluster.createOSD('hdd'); + + // Go to the Review section and Expand the cluster + // because the drive group spec is only stored + // in frontend and will be lost when refreshed + cy.get('.nav-link').contains('Review').click(); + cy.get('button[aria-label="Next"]').click(); + cy.get('cd-dashboard').should('exist'); + }); + }); +}); diff --git a/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/04-create-cluster-create-services.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/04-create-cluster-create-services.e2e-spec.ts deleted file mode 100644 index 266983df155b..000000000000 --- a/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/04-create-cluster-create-services.e2e-spec.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { - CreateClusterServicePageHelper, - CreateClusterWizardHelper -} from 'cypress/integration/cluster/create-cluster.po'; - -describe('Create cluster create services page', () => { - const createCluster = new CreateClusterWizardHelper(); - const createClusterServicePage = new CreateClusterServicePageHelper(); - - const createService = (serviceType: string, serviceName: string, count?: string) => { - cy.get('.btn.btn-accent').first().click({ force: true }); - createClusterServicePage.addService(serviceType, false, count); - createClusterServicePage.checkExist(serviceName, true); - }; - - beforeEach(() => { - cy.login(); - Cypress.Cookies.preserveOnce('token'); - createCluster.navigateTo(); - createCluster.createCluster(); - cy.get('.nav-link').contains('Create Services').click(); - }); - - it('should check if title contains Create Services', () => { - cy.get('.title').should('contain.text', 'Create Services'); - }); - - describe('when Orchestrator is available', () => { - const serviceName = 'rgw.foo'; - - it('should create an rgw service', () => { - createService('rgw', serviceName, '2'); - }); - - it('should delete the service and add it back', () => { - createClusterServicePage.deleteService(serviceName); - - createService('rgw', serviceName, '2'); - }); - - it('should edit a service', () => { - const count = '3'; - createClusterServicePage.editService(serviceName, count); - createClusterServicePage.expectPlacementCount(serviceName, count); - }); - - it('should create an ingress service', () => { - createService('ingress', 'ingress.rgw.foo', '2'); - }); - }); -}); diff --git a/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/06-cluster-check.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/06-cluster-check.e2e-spec.ts index 633d9733c99b..ff6017559f2e 100644 --- a/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/06-cluster-check.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/06-cluster-check.e2e-spec.ts @@ -55,11 +55,13 @@ describe('when cluster creation is completed', () => { }); }); - it('should check if rgw service is running', () => { - hosts.clickTab('cd-host-details', hostnames[3], 'Daemons'); - cy.get('cd-host-details').within(() => { - services.checkServiceStatus('rgw'); - }); + it('should check if mon daemon is running on all hosts', () => { + for (const hostname of hostnames) { + hosts.clickTab('cd-host-details', hostname, 'Daemons'); + cy.get('cd-host-details').within(() => { + services.checkServiceStatus('mon'); + }); + } }); }); @@ -71,7 +73,7 @@ describe('when cluster creation is completed', () => { }); it('should check if osds are created', { retries: 1 }, () => { - osds.getTableCount('total').should('be.gte', 1); + osds.getTableCount('total').should('be.gte', 2); }); }); @@ -90,6 +92,13 @@ describe('when cluster creation is completed', () => { hosts.navigateTo(); }); + it('should check if rgw daemon is running', () => { + hosts.clickTab('cd-host-details', hostnames[3], 'Daemons'); + cy.get('cd-host-details').within(() => { + services.checkServiceStatus('rgw'); + }); + }); + it('should force maintenance and exit', { retries: 1 }, () => { hosts.maintenance(hostnames[3], true, true); });