Skip to content

Commit 5d538c6

Browse files
ConorOM1FedeAlonso
andauthored
[Cypress-e2e] MR enhancements for parallel execution (opendatahub-io#5581)
* edit tags * update db timeout * add polling for db * increase timeout for registry * add unique db id * move mr smoke to new tag --------- Co-authored-by: Fede Alonso <fealonso@redhat.com>
1 parent 504df4a commit 5d538c6

9 files changed

Lines changed: 226 additions & 135 deletions

File tree

frontend/src/__tests__/cypress/cypress/fixtures/resources/yaml/model_registry.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,24 @@ spec:
1111
rest: {}
1212
kubeRBACProxy: {}
1313
mysql:
14-
host: model-registry-db
14+
host: {{DATABASE_NAME}}
1515
port: 3306
1616
database: model_registry
1717
username: mlmduser
1818
skipDBCreation: false
1919
passwordSecret:
20-
name: model-registry-db
20+
name: {{DATABASE_NAME}}
2121
key: database-password
2222
---
2323
apiVersion: v1
2424
kind: Secret
2525
metadata:
26-
name: model-registry-db
26+
name: {{DATABASE_NAME}}
2727
namespace: {{NAMESPACE}}
2828
labels:
29-
app.kubernetes.io/name: model-registry-db
30-
app.kubernetes.io/instance: model-registry-db
31-
app.kubernetes.io/part-of: model-registry-db
29+
app.kubernetes.io/name: {{DATABASE_NAME}}
30+
app.kubernetes.io/instance: {{DATABASE_NAME}}
31+
app.kubernetes.io/part-of: {{DATABASE_NAME}}
3232
app.kubernetes.io/managed-by: kustomize
3333
annotations:
3434
template.openshift.io/expose-database_name: '{.data[''database-name'']}'
@@ -37,4 +37,4 @@ metadata:
3737
stringData:
3838
database-name: "model_registry"
3939
database-password: "TheBlurstOfTimes"
40-
database-user: "mlmduser"
40+
database-user: "mlmduser"

frontend/src/__tests__/cypress/cypress/fixtures/resources/yaml/model_registry_database.yaml

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ items:
44
kind: Service
55
metadata:
66
labels:
7-
app.kubernetes.io/name: model-registry-db
8-
app.kubernetes.io/instance: model-registry-db
9-
app.kubernetes.io/part-of: model-registry-db
7+
app.kubernetes.io/name: {{DATABASE_NAME}}
8+
app.kubernetes.io/instance: {{DATABASE_NAME}}
9+
app.kubernetes.io/part-of: {{DATABASE_NAME}}
1010
app.kubernetes.io/managed-by: kustomize
1111
annotations:
1212
template.openshift.io/expose-uri: mysql://{.spec.clusterIP}:{.spec.ports[?(.name==\mysql\)].port}
13-
name: model-registry-db
13+
name: {{DATABASE_NAME}}
1414
namespace: {{NAMESPACE}}
1515
spec:
1616
ports:
@@ -21,18 +21,18 @@ items:
2121
appProtocol: tcp
2222
targetPort: 3306
2323
selector:
24-
name: model-registry-db
24+
name: {{DATABASE_NAME}}
2525
sessionAffinity: None
2626
type: ClusterIP
2727
- apiVersion: v1
2828
kind: PersistentVolumeClaim
2929
metadata:
3030
labels:
31-
app.kubernetes.io/name: model-registry-db
32-
app.kubernetes.io/instance: model-registry-db
33-
app.kubernetes.io/part-of: model-registry-db
31+
app.kubernetes.io/name: {{DATABASE_NAME}}
32+
app.kubernetes.io/instance: {{DATABASE_NAME}}
33+
app.kubernetes.io/part-of: {{DATABASE_NAME}}
3434
app.kubernetes.io/managed-by: kustomize
35-
name: model-registry-db
35+
name: {{DATABASE_NAME}}
3636
namespace: {{NAMESPACE}}
3737
spec:
3838
accessModes:
@@ -44,26 +44,26 @@ items:
4444
kind: Deployment
4545
metadata:
4646
labels:
47-
app.kubernetes.io/name: model-registry-db
48-
app.kubernetes.io/instance: model-registry-db
49-
app.kubernetes.io/part-of: model-registry-db
47+
app.kubernetes.io/name: {{DATABASE_NAME}}
48+
app.kubernetes.io/instance: {{DATABASE_NAME}}
49+
app.kubernetes.io/part-of: {{DATABASE_NAME}}
5050
app.kubernetes.io/managed-by: kustomize
5151
annotations:
5252
template.alpha.openshift.io/wait-for-ready: "true"
53-
name: model-registry-db
53+
name: {{DATABASE_NAME}}
5454
namespace: {{NAMESPACE}}
5555
spec:
5656
replicas: 1
5757
revisionHistoryLimit: 0
5858
selector:
5959
matchLabels:
60-
name: model-registry-db
60+
name: {{DATABASE_NAME}}
6161
strategy:
6262
type: Recreate
6363
template:
6464
metadata:
6565
labels:
66-
name: model-registry-db
66+
name: {{DATABASE_NAME}}
6767
sidecar.istio.io/inject: "false"
6868
spec:
6969
containers:
@@ -72,22 +72,22 @@ items:
7272
valueFrom:
7373
secretKeyRef:
7474
key: database-user
75-
name: model-registry-db
75+
name: {{DATABASE_NAME}}
7676
- name: MYSQL_PASSWORD
7777
valueFrom:
7878
secretKeyRef:
7979
key: database-password
80-
name: model-registry-db
80+
name: {{DATABASE_NAME}}
8181
- name: MYSQL_ROOT_PASSWORD
8282
valueFrom:
8383
secretKeyRef:
8484
key: database-password
85-
name: model-registry-db
85+
name: {{DATABASE_NAME}}
8686
- name: MYSQL_DATABASE
8787
valueFrom:
8888
secretKeyRef:
8989
key: database-name
90-
name: model-registry-db
90+
name: {{DATABASE_NAME}}
9191
args:
9292
- --datadir
9393
- /var/lib/mysql/datadir
@@ -126,30 +126,30 @@ items:
126126
terminationMessagePath: /dev/termination-log
127127
volumeMounts:
128128
- mountPath: /var/lib/mysql
129-
name: model-registry-db-data
129+
name: {{DATABASE_NAME}}-data
130130
dnsPolicy: ClusterFirst
131131
restartPolicy: Always
132132
volumes:
133-
- name: model-registry-db-data
133+
- name: {{DATABASE_NAME}}-data
134134
persistentVolumeClaim:
135-
claimName: model-registry-db
135+
claimName: {{DATABASE_NAME}}
136136
- apiVersion: v1
137137
kind: Secret
138138
metadata:
139139
labels:
140-
app.kubernetes.io/name: model-registry-db
141-
app.kubernetes.io/instance: model-registry-db
142-
app.kubernetes.io/part-of: model-registry-db
140+
app.kubernetes.io/name: {{DATABASE_NAME}}
141+
app.kubernetes.io/instance: {{DATABASE_NAME}}
142+
app.kubernetes.io/part-of: {{DATABASE_NAME}}
143143
app.kubernetes.io/managed-by: kustomize
144144
annotations:
145145
template.openshift.io/expose-database_name: '{.data[''database-name'']}'
146146
template.openshift.io/expose-password: '{.data[''database-password'']}'
147147
template.openshift.io/expose-username: '{.data[''database-user'']}'
148-
name: model-registry-db
148+
name: {{DATABASE_NAME}}
149149
namespace: {{NAMESPACE}}
150150
stringData:
151151
database-name: "model_registry"
152152
database-password: "TheBlurstOfTimes" # notsecret
153153
database-user: "mlmduser" # notsecret
154154
kind: List
155-
metadata: {}
155+
metadata: {}

frontend/src/__tests__/cypress/cypress/tests/e2e/modelRegistry/testAdminEditRegistry.cy.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ describe('Verify that admin users can edit a model registry', () => {
2323
let originalRegistryName: string;
2424
let deploymentName: string;
2525
const uuid = generateTestUUID();
26+
const databaseName = `model-registry-db-${uuid}`;
2627

2728
before(() => {
2829
cy.step('Load test data from fixture');
@@ -38,10 +39,10 @@ describe('Verify that admin users can edit a model registry', () => {
3839

3940
// Create and verify SQL database
4041
cy.step('Create and verify SQL database for model registry');
41-
createAndVerifyDatabase().should('be.true');
42+
createAndVerifyDatabase(databaseName).should('be.true');
4243

4344
cy.step('Create a model registry and verify it is ready');
44-
createAndVerifyModelRegistry(registryName);
45+
createAndVerifyModelRegistry(registryName, databaseName);
4546

4647
cy.step('Wait for model registry to be in Available state');
4748
checkModelRegistryAvailable(registryName).should('be.true');
@@ -102,13 +103,16 @@ describe('Verify that admin users can edit a model registry', () => {
102103
cy.clearCookies();
103104
cy.clearLocalStorage();
104105

106+
cy.step('Navigate away from model registry before cleanup');
107+
cy.visit('/');
108+
105109
cy.step('Delete the model registry');
106110
deleteModelRegistry(originalRegistryName);
107111

108112
cy.step('Verify model registry is removed from the backend');
109113
checkModelRegistry(originalRegistryName).should('be.false');
110114

111115
cy.step('Delete the SQL database');
112-
deleteModelRegistryDatabase();
116+
deleteModelRegistryDatabase(databaseName).should('be.true');
113117
});
114118
});

frontend/src/__tests__/cypress/cypress/tests/e2e/modelRegistry/testArchiveModels.cy.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ describe('[Product Bug: RHOAIENG-35821] Verify that models and versions can be a
3535
let registryName: string;
3636
let deploymentName: string;
3737
const uuid = generateTestUUID();
38+
const databaseName = `model-registry-db-${uuid}`;
3839

3940
before(() => {
4041
cy.step('Load test data from fixture');
@@ -50,11 +51,11 @@ describe('[Product Bug: RHOAIENG-35821] Verify that models and versions can be a
5051

5152
// Create and verify SQL database
5253
cy.step('Create and verify SQL database for model registry');
53-
createAndVerifyDatabase().should('be.true');
54+
createAndVerifyDatabase(databaseName).should('be.true');
5455

5556
// creates a model registry
5657
cy.step('Create a model registry using YAML');
57-
createModelRegistryViaYAML(registryName);
58+
createModelRegistryViaYAML(registryName, databaseName);
5859

5960
cy.step('Verify model registry is created');
6061
checkModelRegistry(registryName).should('be.true');
@@ -211,8 +212,11 @@ describe('[Product Bug: RHOAIENG-35821] Verify that models and versions can be a
211212
cy.clearCookies();
212213
cy.clearLocalStorage();
213214

215+
cy.step('Navigate away from model registry before cleanup');
216+
cy.visit('/');
217+
214218
cy.step('Clean up registered models from database');
215-
cleanupRegisteredModelsFromDatabase([testData.objectStorageModelName]);
219+
cleanupRegisteredModelsFromDatabase([testData.objectStorageModelName], databaseName);
216220

217221
cy.step('Delete the model registry');
218222
deleteModelRegistry(registryName);
@@ -221,6 +225,6 @@ describe('[Product Bug: RHOAIENG-35821] Verify that models and versions can be a
221225
checkModelRegistry(registryName).should('be.false');
222226

223227
cy.step('Delete the SQL database');
224-
deleteModelRegistryDatabase();
228+
deleteModelRegistryDatabase(databaseName).should('be.true');
225229
});
226230
});

frontend/src/__tests__/cypress/cypress/tests/e2e/modelRegistry/testCreateModelRegistry.cy.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ describe('Verify a model registry can be created and deleted', () => {
1818
let testData: ModelRegistryTestData;
1919
let deploymentName: string;
2020
let registryName: string;
21+
const databaseName = `model-registry-db-create-${Date.now()}`;
2122

2223
before(() => {
2324
cy.step('Load test data from fixture');
@@ -32,7 +33,7 @@ describe('Verify a model registry can be created and deleted', () => {
3233

3334
// Create and verify SQL database
3435
cy.step('Create and verify SQL database for model registry');
35-
createAndVerifyDatabase().should('be.true');
36+
createAndVerifyDatabase(databaseName).should('be.true');
3637
});
3738
});
3839

@@ -43,7 +44,7 @@ describe('Verify a model registry can be created and deleted', () => {
4344

4445
it(
4546
'Creates a model registry and then deletes it',
46-
{ tags: ['@Dashboard', '@ModelRegistry', '@Smoke', '@SmokeSet1', '@NonConcurrent'] },
47+
{ tags: ['@Dashboard', '@ModelRegistry', '@Smoke', '@SmokeSet4', '@NonConcurrent'] },
4748
() => {
4849
cy.step('Login as an Admin');
4950
cy.visitWithLogin('/', HTPASSWD_CLUSTER_ADMIN_USER);
@@ -54,7 +55,7 @@ describe('Verify a model registry can be created and deleted', () => {
5455
cy.step('Create a model registry');
5556
modelRegistrySettings.findCreateButton().click();
5657
modelRegistrySettings.findFormField(FormFieldSelector.NAME).type(registryName);
57-
modelRegistrySettings.findFormField(FormFieldSelector.HOST).type('model-registry-db');
58+
modelRegistrySettings.findFormField(FormFieldSelector.HOST).type(databaseName);
5859
modelRegistrySettings.findFormField(FormFieldSelector.PORT).type('3306');
5960
modelRegistrySettings.findFormField(FormFieldSelector.USERNAME).type('mlmduser');
6061
modelRegistrySettings.findFormField(FormFieldSelector.PASSWORD).type('TheBlurstOfTimes');
@@ -89,13 +90,16 @@ describe('Verify a model registry can be created and deleted', () => {
8990
cy.clearCookies();
9091
cy.clearLocalStorage();
9192

93+
cy.step('Navigate away from model registry before cleanup');
94+
cy.visit('/');
95+
9296
cy.step('Delete the model registry');
9397
deleteModelRegistry(registryName);
9498

9599
cy.step('Verify model registry is removed from the backend');
96100
checkModelRegistry(registryName).should('be.false');
97101

98102
cy.step('Delete the SQL database');
99-
deleteModelRegistryDatabase();
103+
deleteModelRegistryDatabase(databaseName).should('be.true');
100104
});
101105
});

frontend/src/__tests__/cypress/cypress/tests/e2e/modelRegistry/testManageRegistryPermissions.cy.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ describe('Verify model registry permissions can be managed', () => {
2828
let testProjectName: string;
2929
let deploymentName: string;
3030
const uuid = generateTestUUID();
31+
const databaseName = `model-registry-db-${uuid}`;
3132

3233
before(() => {
3334
cy.step('Load test data from fixture');
@@ -44,11 +45,11 @@ describe('Verify model registry permissions can be managed', () => {
4445

4546
// Create and verify SQL database
4647
cy.step('Create and verify SQL database for model registry');
47-
createAndVerifyDatabase().should('be.true');
48+
createAndVerifyDatabase(databaseName).should('be.true');
4849

4950
// creates a model registry
5051
cy.step('Create a model registry using YAML');
51-
createModelRegistryViaYAML(registryName);
52+
createModelRegistryViaYAML(registryName, databaseName);
5253

5354
cy.step('Verify model registry is created');
5455
checkModelRegistry(registryName).should('be.true');
@@ -292,6 +293,9 @@ describe('Verify model registry permissions can be managed', () => {
292293
cy.clearCookies();
293294
cy.clearLocalStorage();
294295

296+
cy.step('Navigate away from model registry before cleanup');
297+
cy.visit('/');
298+
295299
cy.step('Delete the test project');
296300
deleteOpenShiftProject(testProjectName, { wait: false, ignoreNotFound: true });
297301

@@ -302,6 +306,6 @@ describe('Verify model registry permissions can be managed', () => {
302306
checkModelRegistry(registryName).should('be.false');
303307

304308
cy.step('Delete the SQL database');
305-
deleteModelRegistryDatabase();
309+
deleteModelRegistryDatabase(databaseName).should('be.true');
306310
});
307311
});

0 commit comments

Comments
 (0)