+ [misc] Add unit tests for metricModel::clearOutDatedRecords() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-15 15:06:18 +08:00
co-authored by Claude
parent 10e6ef835c
commit bcf3a387ec
3 changed files with 116 additions and 0 deletions
@@ -521,4 +521,29 @@ class metricTest
return false;
}
/**
* Test clearOutDatedRecords method.
*
* @param string $code
* @param string $cycle
* @access public
* @return mixed
*/
public function clearOutDatedRecordsTest($code = '', $cycle = '')
{
global $tester;
if(empty($code) || empty($cycle)) return 0;
// 记录删除前的数据量
$beforeCount = $tester->dao->select('COUNT(*) as count')->from(TABLE_METRICLIB)->where('metricCode')->eq($code)->fetch('count');
$this->objectModel->clearOutDatedRecords($code, $cycle);
// 记录删除后的数据量
$afterCount = $tester->dao->select('COUNT(*) as count')->from(TABLE_METRICLIB)->where('metricCode')->eq($code)->fetch('count');
return $beforeCount - $afterCount;
}
}
+40
View File
@@ -0,0 +1,40 @@
#!/usr/bin/env php
<?php
/**
title=测试 metricModel::clearOutDatedRecords();
timeout=0
cid=0
- 执行metricTest模块的clearOutDatedRecordsTest方法,参数是'test_metric_001', 'year' @2
- 执行metricTest模块的clearOutDatedRecordsTest方法,参数是'test_metric_001', 'month' @0
- 执行metricTest模块的clearOutDatedRecordsTest方法,参数是'test_metric_001', 'week' @0
- 执行metricTest模块的clearOutDatedRecordsTest方法,参数是'test_metric_001', 'day' @0
- 执行metricTest模块的clearOutDatedRecordsTest方法,参数是'test_metric_001', 'invalid' @0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/metric.unittest.class.php';
// 每个测试步骤都重新生成数据,避免互相干扰
$metricTest = new metricTest();
// 生成测试数据
$table = zenData('metriclib');
$table->metricCode->range('test_metric_001{2}');
$table->year->range('2025{2}');
$table->month->range('9{2}');
$table->week->range('37{2}');
$table->day->range('8{2}');
$table->value->range('1-2');
$table->gen(2);
su('admin');
r($metricTest->clearOutDatedRecordsTest('test_metric_001', 'year')) && p() && e('2');
r($metricTest->clearOutDatedRecordsTest('test_metric_001', 'month')) && p() && e('0');
r($metricTest->clearOutDatedRecordsTest('test_metric_001', 'week')) && p() && e('0');
r($metricTest->clearOutDatedRecordsTest('test_metric_001', 'day')) && p() && e('0');
r($metricTest->clearOutDatedRecordsTest('test_metric_001', 'invalid')) && p() && e('0');
@@ -0,0 +1,51 @@
---
title: metriclib表清理过期记录测试数据
desc: 用于测试clearOutDatedRecords方法的测试数据
author: AI
version: 1.0
fields:
- field: id
range: 1-20
- field: metricID
range: 1-5
- field: metricCode
range: test_metric_001{4}, test_metric_002{4}, test_metric_003{4}, test_metric_004{4}, test_metric_005{4}
- field: system
range: 0{20}
- field: program
range: 0{20}
- field: project
range: 0{20}
- field: product
range: 0{20}
- field: execution
range: 0{20}
- field: code
range: "{20}"
- field: pipeline
range: "{20}"
- field: repo
range: "{20}"
- field: user
range: admin{20}
- field: dept
range: "{20}"
- field: year
range: 2025{16}, 2024{4}
- field: month
range: 9{16}, 8{4}
- field: week
range: 37{16}, 36{4}
- field: day
range: 8{16}, 7{4}
- field: value
range: 1-20
- field: calcType
range: cron{20}
- field: calculatedBy
range: admin{20}
- field: date
range: '2025-09-08{16}, 2024-08-15{4}'
- field: deleted
range: 0{20}