diff --git a/packages/sqle/src/page/SqlAnalyze/ManagementConf/__snapshots__/index.test.tsx.snap b/packages/sqle/src/page/SqlAnalyze/ManagementConf/__snapshots__/index.test.tsx.snap index c1a031f9f..ec4ec89b9 100644 --- a/packages/sqle/src/page/SqlAnalyze/ManagementConf/__snapshots__/index.test.tsx.snap +++ b/packages/sqle/src/page/SqlAnalyze/ManagementConf/__snapshots__/index.test.tsx.snap @@ -175,7 +175,7 @@ exports[`SqlAnalyze/ManagementConfAnalyze filter sql execution plan cost 1`] = ` style="margin-right: 8px;" >

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

@@ -336,6 +336,7 @@ exports[`SqlAnalyze/ManagementConfAnalyze filter sql execution plan cost 1`] = `
+
+ + 代价 + : + 3 + +

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

-
-
- - - - - - -
-
- - 2025-01-09 12:00:00 - -
+ style="margin-right: 8px;" + /> +
{ instance_audit_plan, 'getAuditPlanSqlAnalysisDataV1' ); - spy.mockImplementation(() => resolveThreeSecond(AuditPlanSqlAnalyzeData)); + spy.mockImplementation(() => + resolveThreeSecond({ + ...AuditPlanSqlAnalyzeData, + sql_explain: { + ...AuditPlanSqlAnalyzeData.sql_explain, + cost: 3 + } + }) + ); return spy; }; @@ -90,14 +98,15 @@ describe('SqlAnalyze/ManagementConfAnalyze', () => { await act(async () => jest.advanceTimersByTime(3000)); expect(container).toMatchSnapshot(); - expect(screen.getByText('SQL执行计划 Cost趋势')).toBeInTheDocument(); + expect(screen.getByText('SQL执行计划代价趋势')).toBeInTheDocument(); expect(getSqlManageSqlAnalysisChartSpy).toHaveBeenCalledTimes(1); expect(getSqlManageSqlAnalysisChartSpy).toHaveBeenNthCalledWith(1, { sql_manage_id: '2', project_name: projectName, metric_name: 'explain_cost', start_time: translateTimeForRequest(currentTime.subtract(24, 'hour')), - end_time: translateTimeForRequest(currentTime) + end_time: translateTimeForRequest(currentTime), + latest_point_enabled: true }); fireEvent.click(screen.getByText('7天')); @@ -108,7 +117,8 @@ describe('SqlAnalyze/ManagementConfAnalyze', () => { project_name: projectName, metric_name: 'explain_cost', start_time: translateTimeForRequest(currentTime.subtract(7, 'day')), - end_time: translateTimeForRequest(currentTime) + end_time: translateTimeForRequest(currentTime), + latest_point_enabled: false }); }); diff --git a/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/ExecPlanCostChart/__tests__/__snapshots__/index.test.tsx.snap b/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/ExecPlanCostChart/__tests__/__snapshots__/index.test.tsx.snap index 65b52f658..d33b5b1b5 100644 --- a/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/ExecPlanCostChart/__tests__/__snapshots__/index.test.tsx.snap +++ b/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/ExecPlanCostChart/__tests__/__snapshots__/index.test.tsx.snap @@ -14,7 +14,7 @@ exports[`ExecPlanCostChart filter sql execute plan cost 1`] = ` style="margin-right: 8px;" >

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

+
+
+
+
+ + + + + +`; + +exports[`ExecPlanCostChart lastPointEnabled should be true when filter by 24 hours 1`] = ` + +
+
+
+
+

+ SQL执行计划代价趋势 +

+
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+ +
+
+ + + +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + 2025-01-06T09:22:53.713Z +
+
+
+
+
+ 1.2 +
+
+
+
+
+
+ - - 对比执行计划 - - + 对比执行计划 +
@@ -234,7 +448,7 @@ exports[`ExecPlanCostChart refresh sql execute plan cost 1`] = ` style="margin-right: 8px;" >

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

@@ -678,7 +889,7 @@ exports[`ExecPlanCostChart render error message 1`] = ` style="margin-right: 8px;" >

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

{ fireEvent.click(screen.getByText('刷新')); await act(async () => jest.advanceTimersByTime(0)); expect(getSqlExecPlanCostDataSourceSpy).toHaveBeenCalledTimes(1); + expect(getSqlExecPlanCostDataSourceSpy).toHaveBeenCalledWith({ + endTime: dayjs('2024-01-09 12:00:00'), + lastPointEnabled: true, + startTime: dayjs('2024-01-08 12:00:00') + }); + }); + + it('lastPointEnabled should be true when filter by 24 hours', async () => { + const getSqlExecPlanCostDataSourceSpy = jest.fn(); + const { baseElement } = superRender( + + ); + expect(baseElement).toMatchSnapshot(); + fireEvent.click(screen.getByText('7天')); + await act(async () => jest.advanceTimersByTime(0)); + expect(getSqlExecPlanCostDataSourceSpy).toHaveBeenNthCalledWith(1, { + endTime: dayjs('2024-01-09 12:00:00'), + lastPointEnabled: false, + startTime: dayjs('2024-01-02 12:00:00') + }); + fireEvent.click(screen.getByText('24小时')); + expect(getSqlExecPlanCostDataSourceSpy).toHaveBeenNthCalledWith(2, { + endTime: dayjs('2024-01-09 12:00:00'), + lastPointEnabled: true, + startTime: dayjs('2024-01-08 12:00:00') + }); }); }); diff --git a/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/test/SqlAnalyze.test.tsx b/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/test/SqlAnalyze.test.tsx index d381273e0..cf268e0ff 100644 --- a/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/test/SqlAnalyze.test.tsx +++ b/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/test/SqlAnalyze.test.tsx @@ -107,6 +107,26 @@ describe('SqlAnalyze/Global-SqlAnalyze', () => { /> ); expect(baseElement).toMatchSnapshot(); - expect(screen.getByText('SQL执行计划 Cost趋势')).toBeInTheDocument(); + expect(screen.getByText('SQL执行计划代价趋势')).toBeInTheDocument(); + }); + + it('render snap when init time and cost is not undefined', async () => { + const { baseElement } = superRender( + + ); + expect(baseElement).toMatchSnapshot(); + expect(screen.getByText('当前执行计划')).toBeInTheDocument(); + expect(screen.getByText('2024-01-09 12:00:00')).toBeInTheDocument(); + expect(screen.getByText('代价:4.6')).toBeInTheDocument(); }); }); diff --git a/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/test/__snapshots__/SqlAnalyze.test.tsx.snap b/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/test/__snapshots__/SqlAnalyze.test.tsx.snap index 40f3aabb8..4e1bb7e51 100644 --- a/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/test/__snapshots__/SqlAnalyze.test.tsx.snap +++ b/packages/sqle/src/page/SqlAnalyze/SqlAnalyze/test/__snapshots__/SqlAnalyze.test.tsx.snap @@ -110,13 +110,11 @@ exports[`SqlAnalyze/Global-SqlAnalyze render snap when data is empty 1`] = `
- - 2024-01-09 12:00:00 - -
+ style="margin-right: 8px;" + /> +
- - 2024-01-09 12:00:00 - -
+ style="margin-right: 8px;" + /> +
- - 2024-01-09 12:00:00 - -
+ style="margin-right: 8px;" + /> +
`; -exports[`SqlAnalyze/Global-SqlAnalyze render snap when showExecPlanCostChart is true 1`] = ` +exports[`SqlAnalyze/Global-SqlAnalyze render snap when init time and cost is not undefined 1`] = `
-
-
-
-

- SQL执行计划 Cost趋势 -

-
-
-
-
-
-
- - - -
-
-
-
-
-
-
- -
-
- - - -
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ />
+
+ + 代价 + : + 4.6 + +
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ id + + select_type + + table + + partitions + + type + + possible_keys + + key + + key_len + + ref + + rows + + filtered + + Extra +
+ + 1 + + + + SIMPLE + + + + users + + + + - + + + + ALL + + + + - + + + + - + + + + - + + + + - + + + + 1 + + + + 100.00 + + + + - + +
+
+
+
+
+
+
+
+
+

+ 性能统计 +

+
+
+
+
+
+ + + + + + + +
+

+ 影响行数 +

+

+ 区别于执行计划的rows列,显示SQL的实际影响行数 +

+
+
+
+ 10 +
+
+
+
+
+ + +
+ + +
+ + + + +`; + +exports[`SqlAnalyze/Global-SqlAnalyze render snap when showExecPlanCostChart is true 1`] = ` + +
+
+
+
+ SQL分析 +
+
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+

+ SQL语句 +

+
+
+
+
+
+ + + SELECT + + + + * + + + + from + + tasks; + +
+
+ + + +
+
+
+
+
+
+
+
+

+ SQL执行计划代价趋势 +

+
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+ +
+
+ + + +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当前执行计划 +
+
+

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

@@ -397,13 +397,11 @@ exports[`SqlAnalyze/useSQLExecPlan render generateSQLExecPlanContent when filter
- - 2024-01-09 12:00:00 - -
+ style="margin-right: 8px;" + /> +
当前执行计划 - + + + + + - 2024-01-09 12:00:00 - + + 代价 + : + + 当前执行计划 - + + + + + - 2024-01-09 12:00:00 - + + 代价 + : + + 当前执行计划 - - 2024-01-09 12:00:00 - + + + + + + + 代价 + : + + 当前执行计划 - + + + + + - 2024-01-09 12:00:00 - + + 代价 + : + +
-
- 10 -
+
+ 10 +
+
+ +
+ + +`; + +exports[`SqlAnalyze/useSQLExecPlan render generateSQLExecPlanContent when have err_message 1`] = ` + + +

+ SQL语句 +

+
+ +
+
+ + + + + + 当前执行计划 + + + + + + + + 代价 + : + + + + + } + if={true} + > + + + + +

+ 性能统计 +

+
+ + } + if={true} + > +
+
+ + + +
+

+ 影响行数 +

+

+ 区别于执行计划的rows列,显示SQL的实际影响行数 +

+
+
+
+ -- +
+
+
+
+
+
+`; + +exports[`SqlAnalyze/useSQLExecPlan render generateSQLExecPlanContent when have err_message 2`] = ` + + +

+ SQL语句 +

+
+ +
+
+ + + + + + 当前执行计划 + + + + + + + + 代价 + : + + + + + } + if={false} + > + + + +
+`; + +exports[`SqlAnalyze/useSQLExecPlan render generateSQLExecPlanContent when init time and cost is not undefined 1`] = ` + +
+
+
+
+

+ SQL语句 +

+
+
+
+
+
+ + + CREATE + + + + TABLE + + IF + + NOT + + + + EXISTS + + task ( id + + BIGINT + + UNSIGNED AUTO_INCREMENT + + PRIMARY + + KEY, title + + VARCHAR + + ( + + 255 + + ) + + NOT + + + + NULL + + + + DEFAULT + + + + '' + + , description TEXT, status ENUM( + + 'pending' + + , + + 'completed' + + ) + + NOT + + + + NULL + + + + DEFAULT + + + + 'pending' + + , created_at + + TIMESTAMP + + + + DEFAULT + + + + CURRENT_TIMESTAMP + + , updated_at + + TIMESTAMP + + + + DEFAULT + + + + CURRENT_TIMESTAMP + + + + ON + + + + UPDATE + + + + CURRENT_TIMESTAMP + + ); + +
+
+ + + +
+
+
+
+
+
+
+
+

+ SQL执行计划代价趋势 +

+
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+ +
+
+ + + +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当前执行计划 +
+
+ + 2024-01-09 12:00:00 + +
+
+ + 代价 + : + 4.6 + +
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ id + + select_type + + table + + partitions + + type + + possible_keys + + key + + key_len + + ref + + rows + + filtered + + Extra +
+ + 1 + + + + SIMPLE + + + + users + + + + - + + + + ALL + + + + - + + + + - + + + + - + + + + - + + + + 1 + + + + 100.00 + + + + - + +
+
+
+
+
+
- - - - -`; - -exports[`SqlAnalyze/useSQLExecPlan render generateSQLExecPlanContent when have err_message 1`] = ` - - -

- SQL语句 -

-
- -
-
- - - - - - 当前执行计划 - +
- 2024-01-09 12:00:00 - - - - } - if={true} - > - - - - -

- 性能统计 -

-
- - } - if={true} +

+ 性能统计 +

+
+
-
- - -
-

- 影响行数 -

-

- 区别于执行计划的rows列,显示SQL的实际影响行数 -

+ + + + + + +
+

+ 影响行数 +

+

+ 区别于执行计划的rows列,显示SQL的实际影响行数 +

+
+
+
+ --
-
- -- -
-
- - - - -`; - -exports[`SqlAnalyze/useSQLExecPlan render generateSQLExecPlanContent when have err_message 2`] = ` - - -

- SQL语句 -

-
- -
-
- - - - - - 当前执行计划 - - 2024-01-09 12:00:00 - - - - } - if={false} - > - - - -
+ +
+
+
+ `; exports[`SqlAnalyze/useSQLExecPlan render generateSQLExecPlanContent when show history execute plan 1`] = ` @@ -1744,7 +2665,7 @@ exports[`SqlAnalyze/useSQLExecPlan render generateSQLExecPlanContent when show h style="margin-right: 8px;" >

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

@@ -1903,6 +2824,7 @@ exports[`SqlAnalyze/useSQLExecPlan render generateSQLExecPlanContent when show h
+
+ + 代价 + : + 1.2 + +
- - 2024-01-09 12:00:00 - -
+ style="margin-right: 8px;" + /> +

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

@@ -3046,13 +3977,11 @@ exports[`SqlAnalyze/useSQLExecPlan render generateSQLExecPlanContent when showEx
- - 2024-01-09 12:00:00 - -
+ style="margin-right: 8px;" + /> +
{ ); expect(baseElement).toMatchSnapshot(); - expect(screen.getByText('SQL执行计划 Cost趋势')).toBeInTheDocument(); + expect(screen.getByText('SQL执行计划代价趋势')).toBeInTheDocument(); expect(screen.queryByText('历史执行计划')).not.toBeInTheDocument(); }); + it('render generateSQLExecPlanContent when init time and cost is not undefined', async () => { + const { result } = renderHooksWithTheme(() => + useSQLExecPlan({ + showExecPlanCostChart: true, + sqlExecPlanCostDataSource: mockSqlManageSqlAnalysisChartData.points, + getSqlExecPlanCostDataSourceLoading: false, + initTime: '2024-01-09 12:00:00' + }) + ); + + const { baseElement } = superRender( + <> + {result.current.generateSQLExecPlanContent({ + sql: "CREATE TABLE IF NOT EXISTS task ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL DEFAULT '', description TEXT, status ENUM('pending', 'completed') NOT NULL DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);", + classic_result: sqlExecPlans[1].classic_result, + cost: 4.6 + })} + + ); + expect(baseElement).toMatchSnapshot(); + expect(screen.getByText('当前执行计划')).toBeInTheDocument(); + expect(screen.getByText('2024-01-09 12:00:00')).toBeInTheDocument(); + expect(screen.getByText('代价:4.6')).toBeInTheDocument(); + }); + it('render generateSQLExecPlanContent when show history execute plan', async () => { const { result } = renderHooksWithTheme(() => useSQLExecPlan({ @@ -120,7 +145,7 @@ describe('SqlAnalyze/useSQLExecPlan', () => { ); expect(baseElement).toMatchSnapshot(); - expect(screen.getByText('SQL执行计划 Cost趋势')).toBeInTheDocument(); + expect(screen.getByText('SQL执行计划代价趋势')).toBeInTheDocument(); expect(screen.getByText('历史执行计划')).toBeInTheDocument(); }); diff --git a/packages/sqle/src/page/SqlAnalyze/SqlManage/__snapshots__/index.test.tsx.snap b/packages/sqle/src/page/SqlAnalyze/SqlManage/__snapshots__/index.test.tsx.snap index ff4fa0e48..b4379eccc 100644 --- a/packages/sqle/src/page/SqlAnalyze/SqlManage/__snapshots__/index.test.tsx.snap +++ b/packages/sqle/src/page/SqlAnalyze/SqlManage/__snapshots__/index.test.tsx.snap @@ -175,7 +175,7 @@ exports[`SqlAnalyze/SQLManage filter sql execution plan cost 1`] = ` style="margin-right: 8px;" >

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

@@ -336,6 +336,7 @@ exports[`SqlAnalyze/SQLManage filter sql execution plan cost 1`] = `
+
+ + 代价 + : + 3 + +

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

- - 2025-01-09 12:00:00 - -
+ style="margin-right: 8px;" + /> +

- SQL执行计划 Cost趋势 + SQL执行计划代价趋势

@@ -7250,11 +7260,23 @@ exports[`SqlAnalyze/SQLManage should get analyze data from origin 2`] = `
- 2025-01-09 12:00:00 + 2025-01-07 17:52:53 + +
+
+ + 代价 + : + 3
diff --git a/packages/sqle/src/page/SqlAnalyze/SqlManage/index.test.tsx b/packages/sqle/src/page/SqlAnalyze/SqlManage/index.test.tsx index f07ee6a55..fb6ef6f15 100644 --- a/packages/sqle/src/page/SqlAnalyze/SqlManage/index.test.tsx +++ b/packages/sqle/src/page/SqlAnalyze/SqlManage/index.test.tsx @@ -58,7 +58,15 @@ describe('SqlAnalyze/SQLManage', () => { const mockGetAnalyzeData = () => { const spy = jest.spyOn(SqlManage, 'GetSqlManageSqlAnalysisV1'); - spy.mockImplementation(() => resolveThreeSecond(SQLManageSqlAnalyzeData)); + spy.mockImplementation(() => + resolveThreeSecond({ + ...SQLManageSqlAnalyzeData, + sql_explain: { + ...SQLManageSqlAnalyzeData.sql_explain, + cost: 3 + } + }) + ); return spy; }; @@ -93,14 +101,15 @@ describe('SqlAnalyze/SQLManage', () => { await act(async () => jest.advanceTimersByTime(3000)); expect(container).toMatchSnapshot(); - expect(screen.getByText('SQL执行计划 Cost趋势')).toBeInTheDocument(); + expect(screen.getByText('SQL执行计划代价趋势')).toBeInTheDocument(); expect(getSqlManageSqlAnalysisChartSpy).toHaveBeenCalledTimes(1); expect(getSqlManageSqlAnalysisChartSpy).toHaveBeenNthCalledWith(1, { sql_manage_id: 'sqlManageId1', project_name: projectName, metric_name: 'explain_cost', start_time: translateTimeForRequest(currentTime.subtract(24, 'hour')), - end_time: translateTimeForRequest(currentTime) + end_time: translateTimeForRequest(currentTime), + latest_point_enabled: true }); fireEvent.click(screen.getByText('7天')); @@ -111,7 +120,8 @@ describe('SqlAnalyze/SQLManage', () => { project_name: projectName, metric_name: 'explain_cost', start_time: translateTimeForRequest(currentTime.subtract(7, 'day')), - end_time: translateTimeForRequest(currentTime) + end_time: translateTimeForRequest(currentTime), + latest_point_enabled: false }); }); diff --git a/packages/sqle/src/page/SqlAnalyze/Workflow/__snapshots__/index.test.tsx.snap b/packages/sqle/src/page/SqlAnalyze/Workflow/__snapshots__/index.test.tsx.snap index 309155d35..0518104a8 100644 --- a/packages/sqle/src/page/SqlAnalyze/Workflow/__snapshots__/index.test.tsx.snap +++ b/packages/sqle/src/page/SqlAnalyze/Workflow/__snapshots__/index.test.tsx.snap @@ -133,13 +133,11 @@ exports[`SqlAnalyze/Workflow should get analyze data from origin 1`] = `
- - 2025-01-09 12:00:00 - -
+ style="margin-right: 8px;" + /> +
- - 2025-01-09 12:00:00 - -
+ style="margin-right: 8px;" + /> +