Skip to content

Commit fcb5902

Browse files
committed
feat(frontend): redis即时内存分析 #12258
1 parent a6a32e1 commit fcb5902

File tree

72 files changed

+2799
-904
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+2799
-904
lines changed

dbm-ui/frontend/cypress/e2e/db-manage/mysql/MYSQL_HA_FULL_BACKUP.cy.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@ describe('MYSQL 全库备份 Test', () => {
22
beforeEach(() => {
33
cy.login();
44
cy.intercept('get', '/apis/cmdb/list_bizs/', {
5-
fixture: 'mysql/common/listBizs.json',
5+
fixture: 'common/listBizs.json',
66
}).as('listBizs');
77
cy.intercept('get', '/apis/mysql/bizs/3/tendbha_resources/?bk_biz_id=3&limit=10&offset=0', {
88
fixture: 'mysql/common/getTendbhaClusters.json',
99
}).as('getTendbhaClusters');
1010
cy.intercept('post', '/apis/tickets/', {
11-
fixture: 'mysql/common/ticket.json',
11+
fixture: 'common/ticket.json',
1212
}).as('submitTicket');
1313
});
1414

1515
it('MYSQL 全库备份', () => {
16-
cy.on('uncaught:exception', (err, runnable) => {
16+
cy.on('uncaught:exception', (err) => {
1717
if (['ResizeObserver', 'false', 'valid user identity'].some((message) => err.message.includes(message))) {
1818
return false;
1919
}
@@ -25,11 +25,11 @@ describe('MYSQL 全库备份 Test', () => {
2525
cy.get('.db-icon-batch-host-select').click();
2626
cy.wait('@getTendbhaClusters');
2727
cy.get('.vxe-body--row').not('is-offline').first().click();
28-
cy.get('[data-test-id="clusterSelectorPreviewItem"]').should('exist');
29-
cy.get('[data-test-id="clusterSelectorConfirmButton"]').click();
30-
cy.get('textarea').type('前端自动化测试,请忽略此单据');
31-
cy.get('[data-test-id="submitTicket"]').click();
28+
cy.get('[data-test-id="span_clusterSelectorPreviewItem"]').should('exist');
29+
cy.get('[data-test-id="button_clusterSelectorConfirm"]').click();
30+
cy.get('[data-test-id="input_ticketRemark"]').type('前端自动化测试,请忽略此单据');
31+
cy.get('[data-test-id="button_submitTicket"]').click();
3232
cy.wait('@submitTicket');
33-
cy.get('.mysql-operation-success-page').should('contain', '全库备份任务提交成功');
33+
cy.get('.toolbox-result-success-page').should('contain', '全库备份任务提交成功');
3434
});
3535
});

dbm-ui/frontend/cypress/e2e/db-manage/mysql/MYSQL_IMPORT_SQLFILE.cy.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ describe('Mysql 变更 SQL 执行 Test', () => {
22
beforeEach(() => {
33
cy.login();
44
cy.intercept('get', '/apis/cmdb/list_bizs/', {
5-
fixture: 'mysql/common/listBizs.json',
5+
fixture: 'common/listBizs.json',
66
}).as('listBizs');
77
cy.intercept('get', '/apis/mysql/bizs/3/tendbha_resources/?bk_biz_id=3&limit=10&offset=0', {
88
fixture: 'mysql/common/getTendbhaClusters.json',
@@ -16,33 +16,35 @@ describe('Mysql 变更 SQL 执行 Test', () => {
1616
});
1717

1818
it('Mysql 变更 SQL 执行', () => {
19-
cy.on('uncaught:exception', (err, runnable) => {
20-
if (['ResizeObserver', 'false', 'valid user identity'].some((message) => err.message.includes(message))) {
19+
cy.on('uncaught:exception', (err) => {
20+
if (
21+
['ResizeObserver', 'false', 'valid user identity', 'Canceled'].some((message) => err.message.includes(message))
22+
) {
2123
return false;
2224
}
2325
});
2426
cy.viewport(1920, 1080);
2527
const url = `${Cypress.env('LOCAL_URL')}/3/db-manage/mysql/toolbox/MYSQL_IMPORT_SQLFILE`;
2628
cy.visit(url);
2729
cy.wait('@listBizs');
28-
cy.get('[data-test-id="addTargetClustersBtn"]').click();
30+
cy.get('[data-test-id="button_addTargetClusters"]').click();
2931
cy.wait('@getTendbhaClusters');
3032
cy.get('.vxe-body--row').not('is-offline').first().click();
31-
cy.get('[data-test-id="clusterSelectorPreviewItem"]').should('exist');
32-
cy.get('[data-test-id="clusterSelectorConfirmButton"]').click();
33-
cy.get('[data-test-id="addSqlContentBtn"]').click();
33+
cy.get('[data-test-id="span_clusterSelectorPreviewItem"]').should('exist');
34+
cy.get('[data-test-id="button_clusterSelectorConfirm"]').click();
35+
cy.get('[data-test-id="button_showExecuteObjects"]').click();
3436
cy.get('.bk-tag-input').eq(0).click();
3537
cy.get('.bk-tag-input').find('.tag-input').eq(0).type('test{enter}​').type('{backspace}');
3638
cy.get('.bk-tag-input').eq(1).click();
3739
cy.get('.bk-tag-input').find('.tag-input').eq(1).type('hello{enter}​').type('{backspace}');
38-
cy.get('[data-test-id="manualAddSqlBtn"]').click();
40+
cy.get('[data-test-id="div_createFile"]').click();
3941
cy.wait(500);
4042
cy.get('.view-line').eq(1).click().type('select * from test;');
41-
cy.get('[data-test-id="manualGrammarCheckBtn"]').click();
43+
cy.get('[data-test-id="button_grammarCheck"]').click();
4244
cy.wait('@grammerCheck');
4345
cy.get('.bk-sideslider-footer').find('button').eq(0).click({ force: true });
44-
cy.get('[data-test-id="ticketRemarkInput"]').type('前端自动化测试,请忽略此单据');
45-
cy.get('[data-test-id="simulationExecuteBtn"]').click();
46+
cy.get('[data-test-id="input_ticketRemark"]').type('前端自动化测试,请忽略此单据');
47+
cy.get('[data-test-id="button_semanticCheck"]').click();
4648
cy.wait('@semanticCheck');
4749
cy.url().should('include', 'log');
4850
});

dbm-ui/frontend/cypress/e2e/db-manage/mysql/MYSQL_MIGRATE_CLUSTER.cy.ts

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ describe('Mysql 迁移主从 Test', () => {
33
cy.login();
44
cy.viewport(1920, 1080);
55
cy.intercept('get', '/apis/cmdb/list_bizs/', {
6-
fixture: 'mysql/common/listBizs.json',
6+
fixture: 'common/listBizs.json',
77
}).as('listBizs');
88
cy.intercept('post', '/apis/tickets/', {
9-
fixture: 'mysql/common/ticket.json',
9+
fixture: 'common/ticket.json',
1010
}).as('submitTicket');
1111
});
1212

1313
it('集群迁移-资源池自动匹配', () => {
14-
cy.on('uncaught:exception', (err, runnable) => {
14+
cy.on('uncaught:exception', (err) => {
1515
if (['ResizeObserver', 'false', 'valid user identity'].some((message) => err.message.includes(message))) {
1616
return false;
1717
}
@@ -21,55 +21,55 @@ describe('Mysql 迁移主从 Test', () => {
2121
cy.wait('@listBizs');
2222
cy.get('.db-icon-batch-host-select').click();
2323
cy.get('.vxe-body--row').not('is-offline').first().click();
24-
cy.get('[data-test-id="clusterSelectorPreviewItem"]').should('exist');
25-
cy.get('[data-test-id="clusterSelectorConfirmButton"]').click();
26-
cy.get('[data-test-id="specColumnSelect"]').click();
27-
const specOptions = cy.get('[data-test-id="specColumnSelect"]').find('.bk-popover').find('.bk-select-option');
24+
cy.get('[data-test-id="span_clusterSelectorPreviewItem"]').should('exist');
25+
cy.get('[data-test-id="button_clusterSelectorConfirm"]').click();
26+
cy.get('[data-test-id="column_spec"]').click();
27+
const specOptions = cy.get('[data-test-id="column_spec"]').find('.bk-popover').find('.bk-select-option');
2828
specOptions.should('have.length.above', 0);
2929
specOptions.last().click({ force: true });
3030
const resourceTagOptions = cy
31-
.get('[data-test-id="resourceTagColumnSelect"]')
31+
.get('[data-test-id="column_resoureTag"]')
3232
.find('.bk-popover')
3333
.find('.bk-select-option');
3434
resourceTagOptions.should('have.length.above', 0);
3535
resourceTagOptions.last().click({ force: true });
36-
cy.get('[data-test-id="backupSourceRadioGroup"]').find('[type="radio"]').first().check();
37-
cy.get('[data-test-id="ticketRemarkInput"]').type('前端自动化测试,请忽略此单据');
38-
cy.get('[data-test-id="submitTicket"]').click();
36+
cy.get('[data-test-id="form_backupSource"]').find('[type="radio"]').first().check();
37+
cy.get('[data-test-id="input_ticketRemark"]').type('前端自动化测试,请忽略此单据');
38+
cy.get('[data-test-id="button_submitTicket"]').click();
3939
cy.wait('@submitTicket');
40-
cy.get('.mysql-operation-success-page').should('contain', '任务提交成功');
40+
cy.get('.toolbox-result-success-page').should('contain', '任务提交成功');
4141
});
4242

4343
it('集群迁移-资源池手动选择', () => {
44-
cy.on('uncaught:exception', (err, runnable) => {
44+
cy.on('uncaught:exception', (err) => {
4545
if (['ResizeObserver', 'false', 'valid user identity'].some((message) => err.message.includes(message))) {
4646
return false;
4747
}
4848
});
4949
const url = `${Cypress.env('LOCAL_URL')}/3/db-manage/mysql/toolbox/MYSQL_MIGRATE_CLUSTER`;
5050
cy.visit(url);
5151
cy.wait('@listBizs');
52-
cy.get('[data-test-id="sourceTypeRadioGroup"]').find('[type="radio"]').last().check({ force: true });
52+
cy.get('[data-test-id="radio_sourceType"]').find('[type="radio"]').last().check({ force: true });
5353
cy.get('.db-icon-batch-host-select').click();
5454
cy.get('.vxe-body--row').not('is-offline').first().click();
55-
cy.get('[data-test-id="clusterSelectorPreviewItem"]').should('exist');
56-
cy.get('[data-test-id="clusterSelectorConfirmButton"]').click();
57-
cy.get('[data-test-id="singleResourceHostColumn"]')
55+
cy.get('[data-test-id="span_clusterSelectorPreviewItem"]').should('exist');
56+
cy.get('[data-test-id="button_clusterSelectorConfirm"]').click();
57+
cy.get('[data-test-id="column_singleResoureHost"]')
5858
.first()
59-
.find('[data-test-id="singleResourceHostSelectIcon"]')
59+
.find('[data-test-id="icon_singleResoureHostSelectIcon"]')
6060
.click();
61-
cy.get('[data-test-id="resourceHostSelectorRowCheckbox"]').first().click();
62-
cy.get('[data-test-id="resourceHostSelectorSubmitButton"]').first().click();
63-
cy.get('[data-test-id="singleResourceHostColumn"]')
61+
cy.get('[data-test-id="checkbox_resourceHostSelectorRow"]').first().click();
62+
cy.get('[data-test-id="button_resourceHostSelectorConfirm"]').first().click();
63+
cy.get('[data-test-id="column_singleResoureHost"]')
6464
.last()
65-
.find('[data-test-id="singleResourceHostSelectIcon"]')
65+
.find('[data-test-id="icon_singleResoureHostSelectIcon"]')
6666
.click();
67-
cy.get('[data-test-id="resourceHostSelectorRowCheckbox"]').last().click();
68-
cy.get('[data-test-id="resourceHostSelectorSubmitButton"]').last().click();
69-
cy.get('[data-test-id="backupSourceRadioGroup"]').find('[type="radio"]').first().check();
70-
cy.get('[data-test-id="ticketRemarkInput"]').type('前端自动化测试,请忽略此单据');
71-
cy.get('[data-test-id="submitTicket"]').click();
67+
cy.get('[data-test-id="checkbox_resourceHostSelectorRow"]').last().click();
68+
cy.get('[data-test-id="button_resourceHostSelectorConfirm"]').last().click();
69+
cy.get('[data-test-id="form_backupSource"]').find('[type="radio"]').first().check();
70+
cy.get('[data-test-id="input_ticketRemark"]').type('前端自动化测试,请忽略此单据');
71+
cy.get('[data-test-id="button_submitTicket"]').click();
7272
cy.wait('@submitTicket');
73-
cy.get('.mysql-operation-success-page').should('contain', '任务提交成功');
73+
cy.get('.toolbox-result-success-page').should('contain', '任务提交成功');
7474
});
7575
});

dbm-ui/frontend/cypress/e2e/db-manage/mysql/MYSQL_RENAME_DATABASE.cy.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ describe('Mysql DB 重命名 Test', () => {
33
cy.login();
44
cy.viewport(1920, 1080);
55
cy.intercept('get', '/apis/cmdb/list_bizs/', {
6-
fixture: 'mysql/common/listBizs.json',
6+
fixture: 'common/listBizs.json',
77
}).as('listBizs');
88
cy.intercept('get', '/apis/mysql/bizs/3/tendbha_resources/?bk_biz_id=3&limit=10&offset=0', {
99
fixture: 'mysql/common/getTendbhaClusters.json',
@@ -20,12 +20,12 @@ describe('Mysql DB 重命名 Test', () => {
2020
}
2121
}).as('checkClusterDatabases');
2222
cy.intercept('post', '/apis/tickets/', {
23-
fixture: 'mysql/common/ticket.json',
23+
fixture: 'common/ticket.json',
2424
}).as('submitTicket');
2525
});
2626

2727
it('Mysql DB 重命名', () => {
28-
cy.on('uncaught:exception', (err, runnable) => {
28+
cy.on('uncaught:exception', (err) => {
2929
if (['ResizeObserver', 'false', 'valid user identity'].some((message) => err.message.includes(message))) {
3030
return false;
3131
}
@@ -36,17 +36,17 @@ describe('Mysql DB 重命名 Test', () => {
3636
cy.get('.db-icon-batch-host-select').click();
3737
cy.wait('@getTendbhaClusters');
3838
cy.get('.vxe-body--row').not('is-offline').first().click();
39-
cy.get('[data-test-id="clusterSelectorPreviewItem"]').should('exist');
40-
cy.get('[data-test-id="clusterSelectorConfirmButton"]').click();
39+
cy.get('[data-test-id="span_clusterSelectorPreviewItem"]').should('exist');
40+
cy.get('[data-test-id="button_clusterSelectorConfirm"]').click();
4141
cy.get('.bk-editable-tag-input').eq(0).click();
4242
cy.get('.bk-editable-tag-input').find('.tag-input').eq(0).type('test{enter}​');
4343
cy.wait('@checkClusterDatabases');
4444
cy.get('.bk-editable-tag-input').eq(1).click();
4545
cy.get('.bk-editable-tag-input').find('.tag-input').eq(1).type('hello{enter}​');
4646
cy.wait('@checkClusterDatabases');
47-
cy.get('textarea').type('前端自动化测试,请忽略此单据');
48-
cy.get('[data-test-id="submitTicket"]').click();
47+
cy.get('[data-test-id="input_ticketRemark"]').type('前端自动化测试,请忽略此单据');
48+
cy.get('[data-test-id="button_submitTicket"]').click();
4949
cy.wait('@submitTicket');
50-
cy.get('.mysql-operation-success-page').should('contain', 'DB 重命名任务提交成功');
50+
cy.get('.toolbox-result-success-page').should('contain', 'DB 重命名任务提交成功');
5151
});
5252
});
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
describe('REDIS 内存分析 Test', () => {
2+
beforeEach(() => {
3+
cy.login();
4+
cy.intercept('get', '/apis/cmdb/list_bizs/', {
5+
fixture: 'common/listBizs.json',
6+
}).as('listBizs');
7+
cy.intercept(
8+
'get',
9+
'/apis/redis/bizs/5/redis_resources/list_instances/?bk_biz_id=5&extra=1&limit=10&offset=0&role=redis_master&cluster_type=TwemproxyRedisInstance%2CRedisCluster%2CRedisInstance',
10+
{
11+
fixture: 'redis/REDIS_KEYSTAT/getRedisInstances.json',
12+
},
13+
).as('getRedisInstances');
14+
cy.intercept('post', '/apis/tickets/', {
15+
fixture: 'common/ticket.json',
16+
}).as('submitTicket');
17+
});
18+
19+
it('REDIS 内存分析', () => {
20+
cy.on('uncaught:exception', (err) => {
21+
if (['ResizeObserver', 'false', 'valid user identity'].some((message) => err.message.includes(message))) {
22+
return false;
23+
}
24+
});
25+
cy.viewport(1920, 1080);
26+
const url = `${Cypress.env('LOCAL_URL')}/5/db-manage/redis/toolbox/REDIS_KEYSTAT`;
27+
cy.visit(url);
28+
cy.wait('@listBizs');
29+
cy.get('.db-icon-batch-host-select').click();
30+
cy.wait('@getRedisInstances');
31+
cy.get('.vxe-body--row').not('is-offline').first().click();
32+
cy.get('[data-test-id="span_instanceSelectorPreviewItem"]').should('exist');
33+
cy.get('[data-test-id="button_instanceSelectorConfirm"]').click();
34+
cy.get('[data-test-id="input_ticketRemark"]').type('前端自动化测试,请忽略此单据');
35+
cy.get('[data-test-id="button_submitTicket"]').click();
36+
cy.wait('@submitTicket');
37+
cy.get('.toolbox-result-success-page').should('contain', '内存分析任务提交成功');
38+
});
39+
});
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"data": [
3+
{
4+
"bk_biz_id": 3,
5+
"name": "DBA",
6+
"english_name": "dba",
7+
"permission": {
8+
"db_manage": true
9+
}
10+
},
11+
{
12+
"bk_biz_id": 5,
13+
"name": "",
14+
"english_name": "",
15+
"permission": {
16+
"db_manage": true
17+
}
18+
},
19+
{
20+
"bk_biz_id": 27,
21+
"name": "验收专用业务",
22+
"english_name": "only-dba-test",
23+
"permission": {
24+
"db_manage": true
25+
}
26+
}
27+
],
28+
"code": 0,
29+
"result": true,
30+
"message": "OK",
31+
"request_id": "04342b94db8fc345c337b54b8f98aa39"
32+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"data": {
3+
"id": 2727,
4+
"creator": "*****",
5+
"create_at": "2025-10-08T11:18:50+08:00",
6+
"updater": "*****",
7+
"update_at": "2025-10-08T11:18:50+08:00",
8+
"ticket_type": "MYSQL_HA_FULL_BACKUP",
9+
"remark": "eee",
10+
"group": "mysql",
11+
"details": {},
12+
"todo_operators": ["*****"],
13+
"todo_helpers": ["***********", "********"],
14+
"status": "PENDING",
15+
"status_display": "等待中",
16+
"ticket_type_display": "MySQL 全库备份",
17+
"cost_time": 0,
18+
"bk_biz_name": "DBA",
19+
"db_app_abbr": "dba",
20+
"ignore_duplication": false,
21+
"config": {},
22+
"bk_biz_id": 3,
23+
"send_msg_config": {},
24+
"is_reviewed": false
25+
},
26+
"code": 0,
27+
"result": true,
28+
"message": "OK",
29+
"request_id": "fedaa7dd61ea7fd3e999e84cbed30a7a"
30+
}

0 commit comments

Comments
 (0)