diff --git a/module/cne/test/lib/cne.unittest.class.php b/module/cne/test/lib/cne.unittest.class.php index 8724a0009a..fee466bc27 100755 --- a/module/cne/test/lib/cne.unittest.class.php +++ b/module/cne/test/lib/cne.unittest.class.php @@ -139,15 +139,26 @@ class cneTest /** * Test instancesMetrics method. * + * @param array $instances + * @param bool $volumesMetrics * @access public * @return array */ - public function instancesMetricsTest(): array + public function instancesMetricsTest(array $instances = array(), bool $volumesMetrics = true): array { $this->objectModel->error = new stdclass(); - $instances = $this->objectModel->loadModel('instance')->getList(); + + // 如果没有传入实例数组,尝试从数据库获取 + if(empty($instances)) + { + $instances = $this->objectModel->loadModel('instance')->getList(); + if(empty($instances)) $instances = array(); + } - return $this->objectModel->instancesMetrics($instances); + $result = $this->objectModel->instancesMetrics($instances, $volumesMetrics); + if(dao::isError()) return dao::getError(); + + return $result; } /** diff --git a/module/cne/test/model/instancesmetrics.php b/module/cne/test/model/instancesmetrics.php new file mode 100755 index 0000000000..cc6e4854c4 --- /dev/null +++ b/module/cne/test/model/instancesmetrics.php @@ -0,0 +1,66 @@ +#!/usr/bin/env php +loadYaml('instance', false, 2)->gen(3); +zendata('space')->loadYaml('space', false, 1)->gen(1); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$cneTest = new cneTest(); + +// 准备测试数据 +$emptyInstances = array(); + +// 创建有效实例数据 +$validInstance1 = new stdclass(); +$validInstance1->id = 1; +$validInstance1->k8name = 'test-instance-1'; +$validInstance1->source = 'internal'; +$validInstance1->spaceData = new stdclass(); +$validInstance1->spaceData->k8space = 'test-namespace'; + +$validInstance2 = new stdclass(); +$validInstance2->id = 2; +$validInstance2->k8name = 'test-instance-2'; +$validInstance2->source = 'internal'; +$validInstance2->spaceData = new stdclass(); +$validInstance2->spaceData->k8space = 'test-namespace'; + +// 创建external实例数据 +$externalInstance = new stdclass(); +$externalInstance->id = 3; +$externalInstance->k8name = 'external-instance'; +$externalInstance->source = 'external'; +$externalInstance->spaceData = new stdclass(); +$externalInstance->spaceData->k8space = 'test-namespace'; + +$validInstances = array($validInstance1, $validInstance2); +$mixedInstances = array($validInstance1, $externalInstance, $validInstance2); + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +r($cneTest->instancesMetricsTest($emptyInstances, true)) && p() && e('0'); // 步骤1:空实例数组测试 +r($cneTest->instancesMetricsTest($validInstances, true)) && p() && e('2'); // 步骤2:正常实例数组测试,包含磁盘指标 +r($cneTest->instancesMetricsTest($validInstances, false)) && p() && e('2'); // 步骤3:正常实例数组测试,不包含磁盘指标 +r($cneTest->instancesMetricsTest($mixedInstances, true)) && p() && e('2'); // 步骤4:包含external类型实例的数组测试 +r($cneTest->instancesMetricsTest(array($validInstance1), true)) && p() && e('1'); // 步骤5:单个有效实例测试 \ No newline at end of file