* Adjust job module unit test.

This commit is contained in:
zenggang
2023-12-12 05:35:24 +00:00
parent 93ac08abe7
commit ca2b1765b2
21 changed files with 327 additions and 66 deletions
+4 -4
View File
@@ -118,16 +118,16 @@ class compileModel extends model
/**
* Get build url.
*
* @param object $jenkins
* @param object $job
* @access public
* @return object
*/
public function getBuildUrl(object $jenkins): object
public function getBuildUrl(object $job): object
{
$url = new stdclass();
$url->userPWD = $this->loadModel('jenkins')->getApiUserPWD($jenkins);
$url->userPWD = $this->loadModel('jenkins')->getApiUserPWD($job);
$urlPrefix = $this->compileTao->getJenkinsUrlPrefix($jenkins->url, $jenkins->pipeline);
$urlPrefix = $this->compileTao->getJenkinsUrlPrefix($job->url, $job->pipeline);
$detailUrl = $urlPrefix . 'api/json';
$hasParameterizedBuild = $this->loadModel('job')->checkParameterizedBuild($detailUrl, $url->userPWD);
+5 -3
View File
@@ -303,9 +303,11 @@ class jobModel extends model
$repo = $this->loadModel('repo')->getByID($job->repo);
$now = helper::now();
if($job->triggerType == 'schedule') $compileID = $this->loadModel('compile')->createByJob($job->id, $job->atTime, 'atTime');
if($job->triggerType == 'tag')
if($job->triggerType == 'schedule')
{
$compileID = $this->loadModel('compile')->createByJob($job->id, $job->atTime, 'atTime');
}
elseif($job->triggerType == 'tag')
{
$job->lastTag = $this->getLastTagByRepo($repo, $job);
+20 -5
View File
@@ -32,9 +32,9 @@ class jobTest
* @access public
* @return object
*/
public function getListTest(int $repoID = 0, string $orderBy = 'id_desc', object $pager = null)
public function getListTest(int $repoID = 0, string $orderBy = 'id_desc', object $pager = null, string $engine = '')
{
$objects = $this->objectModel->getList($repoID, $orderBy, $pager);
$objects = $this->objectModel->getList($repoID, $orderBy, $pager, $engine);
if(dao::isError()) return dao::getError();
@@ -261,7 +261,7 @@ class jobTest
{
global $tester;
$job = $this->objectModel->getById($jobId);
$repo = $tester->loadModel('repo')->getRepoById($job->repo);
$repo = $tester->loadModel('repo')->getById($job->repo);
$object = $this->objectModel->getLastTagByRepo($repo, $job);
if(dao::isError()) return dao::getError();
@@ -314,13 +314,28 @@ class jobTest
* @access public
* @return bool
*/
public function checkParameterizedBuildTest(string $url, string $userPWD): bool
public function checkParameterizedBuildTest(int $jobID): bool
{
$checked = $this->objectModel->checkParameterizedBuild($url, $userPWD);
global $tester;
$job = $this->objectModel->getById($jobID);
$jenkins = $tester->loadModel('pipeline')->getByID($job->server);
$urlPrefix = $tester->loadModel('compile')->getJenkinsUrlPrefix($jenkins->url, $job->pipeline);
$detailUrl = $urlPrefix . 'api/json';
$checked = $this->objectModel->checkParameterizedBuild($detailUrl, $tester->loadModel('jenkins')->getApiUserPWD($jenkins));
if(dao::isError()) return dao::getError();
return $checked;
}
public function updateLastTagTest(int $jobID, string $lastTag)
{
$this->objectModel->updateLastTag($jobID, $lastTag);
if(dao::isError()) return dao::getError();
$job = $this->objectModel->getById($jobID);
return $job;
}
}
@@ -7,10 +7,18 @@ su('admin');
/**
title=测试 jobModel->checkParameterizedBuild();
timeout=0
cid=1
pid=1
- 检查job1是否启用了参数构建 @0
- 检查job3是否启用了参数构建 @0
- 检查job5是否启用了参数构建 @1
*/
zdTable('pipeline')->config('pipeline')->gen(5);
zdTable('job')->config('job')->gen(5);
$jenkins1 = new stdclass();
$jenkins1->url = 'pms.cc.cc';
$jenkins1->account = '123456';
@@ -33,6 +41,6 @@ $jenkins3->pipeline = '';
$compile = new jobTest();
r($compile->checkParameterizedBuildTest('pms.cc.cc/job/12/api/json', '123456:zxd')) && p('') && e('1');
r($compile->checkParameterizedBuildTest('pms.cc.cc/job/11/api/json', '123456:8bb44ffbc4b42fcbb3152cc05fd21c67')) && p('') && e('1');
r($compile->checkParameterizedBuildTest('', '')) && p('') && e('0');
r($compile->checkParameterizedBuildTest(1)) && p('') && e('0'); //检查job1是否启用了参数构建
r($compile->checkParameterizedBuildTest(3)) && p('') && e('0'); //检查job3是否启用了参数构建
r($compile->checkParameterizedBuildTest(5)) && p('') && e('1'); //检查job5是否启用了参数构建
+2 -1
View File
@@ -19,11 +19,12 @@ cid=1
*/
zdTable('pipeline')->gen(5);
zdTable('repo')->config('repo')->gen(1);
$job_name = array('name' => '这是一个job007');
$job_engine = array('engine' => 'gitlab');
$job_triggerType = array('triggerType' => 'tag');
$job_triggerType = array('triggerType' => 'tag');
$job_name_blank = array('name' => '');
$job_engine_blank = array('engine' => '');
$job_triggerType_blank = array('triggerType' => '');
+8 -4
View File
@@ -7,13 +7,17 @@ su('admin');
/**
title=jobModel->create();
timeout=0
cid=1
pid=1
测试执行job id为1的情况 >> 1
- 测试执行job id为1的情况属性status @created
*/
$jobID = 1;
zdTable('pipeline')->config('pipeline')->gen(5);
zdTable('job')->config('job')->gen(5);
zdTable('compile')->gen(0);
$job = new jobTest();
r($job->execTest($jobID)) && p('id')&& e('1'); // 测试执行job id为1的情况
r($job->execTest(1)) && p('status')&& e('created'); // 测试执行job id为1的情况
//r($job->execTest(3)) && p('id')&& e('2'); // 测试执行job id为3的情况
+10 -6
View File
@@ -7,19 +7,23 @@ su('admin');
/**
title=jobModel->getById();
timeout=0
cid=1
pid=1
查询id为1的job的engine >> jenkins
查询id为1的job的frame >> sonarqube
- 查询id为1的job的engine属性engine @jenkins
- 查询id为1的job的frame属性frame @sonarqube
- 查询id为1000001的job的name属性engine @~~
- 查询id为1000001的job的account属性frame @~~
*/
zdTable('job')->gen(1);
$jobIDList = array('1', '1000001');
$job = new jobTest();
r($job->getByIdTest($jobIDList[0])) && p('engine') && e('jenkins'); // 查询id为1的job的engine
r($job->getByIdTest($jobIDList[0])) && p('frame') && e('sonarqube'); // 查询id为1的job的frame
r($job->getByIdTest($jobIDList[1])) && p('engine') && e(NULL); // 查询id为1000001的job的name
r($job->getByIdTest($jobIDList[1])) && p('frame') && e(NULL); // 查询id为1000001的job的account
r($job->getByIdTest($jobIDList[0])) && p('frame') && e('sonarqube'); // 查询id为1的job的frame
r($job->getByIdTest($jobIDList[1])) && p('engine') && e('~~'); // 查询id为1000001的job的name
r($job->getByIdTest($jobIDList[1])) && p('frame') && e('~~'); // 查询id为1000001的job的account
@@ -7,10 +7,10 @@ su('admin');
/**
title=jobModel->getJobBySonarqubeProject();
timeout=0
cid=1
pid=1
根据sonarqube project查询job >> 1
- 根据sonarqube project查询job属性zentaopms @1
*/
@@ -18,4 +18,4 @@ $sonarqubeID = 2;
$projectKeys = array('zentaopms');
$job = new jobTest();
r($job->getJobBySonarqubeProjectTest($sonarqubeID, $projectKeys)) && p('zentaopms') && e('1'); // 根据sonarqube project查询job
r($job->getJobBySonarqubeProjectTest($sonarqubeID, $projectKeys)) && p('zentaopms') && e('1'); // 根据sonarqube project查询job
+6 -3
View File
@@ -7,13 +7,16 @@ su('admin');
/**
title=jobModel->getLastTagByRepo();
timeout=0
cid=1
pid=1
查询id为1的job的last tag >> tag_test1
- 查询id为1的job的版本库的last tag @v0.1.2-light
*/
zdTable('pipeline')->gen(5);
zdTable('repo')->config('repo')->gen(5);
$jobID = 1;
$job = new jobTest();
r($job->getLastTagByRepoTest($jobID)) && p() && e('tag_test1'); // 查询id为1的job的last tag
r($job->getLastTagByRepoTest($jobID)) && p() && e('v0.1.2-light'); // 查询id为1的job的版本库的last tag
+19 -7
View File
@@ -7,16 +7,28 @@ su('admin');
/**
title=jobModel->getList();
timeout=0
cid=1
pid=1
测试获取列表的个数,目前只有两个 >> 2
测试获取列表某个job的名称信息 >> 这是一个Job1
- 测试获取列表的个数 @5
- 测试获取列表某个job的名称信息第1条的name属性 @这是一个Job1
- 测试获取版本库为2列表的个数 @1
- 测试获取版本库为2的列表某个job的名称信息第2条的name属性 @这是一个Job2
- 测试获取jenkins类型列表的个数 @3
- 测试获取jenkins类型列表某个job的名称信息第5条的name属性 @这是一个Job5
*/
$job = new jobTest();
$list = $job->getListTest();
zdTable('job')->gen(5);
r(count($list)) && p() && e('2'); //测试获取列表的个数,目前只有两个
r($list) && p('1:name') && e('这是一个Job1'); //测试获取列表某个job的名称信息
$job = new jobTest();
$list = $job->getListTest();
$repoList = $job->getListTest(2);
$jenkinsList = $job->getListTest(0, 'id_desc', null, 'jenkins');
r(count($list)) && p() && e('5'); //测试获取列表的个数
r($list) && p('1:name') && e('这是一个Job1'); //测试获取列表某个job的名称信息
r(count($repoList)) && p() && e('1'); //测试获取版本库为2列表的个数
r($repoList) && p('2:name') && e('这是一个Job2'); //测试获取版本库为2的列表某个job的名称信息
r(count($jenkinsList)) && p() && e('3'); //测试获取jenkins类型列表的个数
r($jenkinsList) && p('5:name') && e('这是一个Job5'); //测试获取jenkins类型列表某个job的名称信息
+9 -5
View File
@@ -7,16 +7,20 @@ su('admin');
/**
title=jobModel::getListByRepoId();
timeout=0
cid=1
pid=1
获取repo为1的name >> 这是一个Job1
获取repo为100001的name >> 0
- 获取repo为1的name第1条的name属性 @这是一个Job1
- 获取repo为1的lastStatus第1条的lastStatus属性 @a
- 获取repo为100001的name第100001条的name属性 @0
*/
zdTable('job')->gen('1');
$job = new jobTest();
$repoIdList = array('1', '100001');
r($job->getListByRepoIDTest($repoIdList[0])) && p('1:name') && e('这是一个Job1'); // 获取repo为1的name
r($job->getListByRepoIDTest($repoIdList[1])) && p('100001:name') && e('0'); // 获取repo为100001的name
r($job->getListByRepoIDTest($repoIdList[0])) && p('1:name') && e('这是一个Job1'); // 获取repo为1的name
r($job->getListByRepoIDTest($repoIdList[0])) && p('1:lastStatus') && e('a'); // 获取repo为1的lastStatus
r($job->getListByRepoIDTest($repoIdList[1])) && p('100001:name') && e('0'); // 获取repo为100001的name
@@ -7,17 +7,19 @@ su('admin');
/**
title=jobModel::getListByTriggerType();
timeout=0
cid=1
pid=1
获取trigger type为tag的repo为1的name >> 这是一个Job1
获取trigger type为commit的repo为2的name >> 这是一个Job2
- 获取trigger type为tag的repo为1的name第1条的name属性 @这是一个Job1
- 获取trigger type为commit的repo为2的name第2条的name属性 @这是一个Job2
*/
zdTable('job')->gen(5);
$job = new jobTest();
$triggerType = array('tag', 'commit');
$repoIdList = array('1', '2', '100001');
r($job->getListByTriggerTypeTest($triggerType[0], $repoIdList)) && p('1:name') && e('这是一个Job1'); // 获取trigger type为tag的repo为1的name
r($job->getListByTriggerTypeTest($triggerType[1], $repoIdList)) && p('2:name') && e('这是一个Job2'); // 获取trigger type为commit的repo为2的name
r($job->getListByTriggerTypeTest($triggerType[1], $repoIdList)) && p('2:name') && e('这是一个Job2'); // 获取trigger type为commit的repo为2的name
+12 -3
View File
@@ -7,15 +7,24 @@ su('admin');
/**
title=jobModel::getParis();
timeout=0
cid=1
pid=1
获取repo为1且engine为jenkins的name >> 这是一个Job1
- 获取repo为1且engine为jenkins的name属性1 @这是一个Job1
- 获取repo为1且engine为gitlab的name属性1 @0
- 获取repo为2且engine为gitlab的name属性2 @这是一个Job2
- 获取repo为2且engine为jenkins的name属性2 @0
*/
zdTable('job')->gen(2);
$job = new jobTest();
$repoID = '1';
$engine = 'jenkins';
r($job->getPairsTest($repoID, $engine)) && p('1') && e('这是一个Job1'); // 获取repo为1且engine为jenkins的name
r($job->getPairsTest($repoID, $engine)) && p('1') && e('这是一个Job1'); // 获取repo为1且engine为jenkins的name
r($job->getPairsTest($repoID, 'gitlab')) && p('1') && e('0'); // 获取repo为1且engine为gitlab的name
r($job->getPairsTest(2, 'gitlab')) && p('2') && e('这是一个Job2'); // 获取repo为2且engine为gitlab的name
r($job->getPairsTest(2, 'jenkins')) && p('2') && e('0'); // 获取repo为2且engine为jenkins的name
+3 -3
View File
@@ -7,14 +7,14 @@ su('admin');
/**
title=jobModel->getSonarqubeByRepo();
timeout=0
cid=1
pid=1
根据repo查询sonarqube >> 这是一个Job1
- 根据repo查询sonarqube第1条的name属性 @这是一个Job1
*/
$repoIDList = array('1', '2');
$job = new jobTest();
r($job->getSonarqubeByRepoTest($repoIDList)) && p('1:name') && e('这是一个Job1'); // 根据repo查询sonarqube
r($job->getSonarqubeByRepoTest($repoIDList)) && p('1:name') && e('这是一个Job1'); // 根据repo查询sonarqube
+10 -6
View File
@@ -7,16 +7,20 @@ su('admin');
/**
title=jobModel::getTriggerConfig();
timeout=0
cid=1
pid=1
获取job为1的trigger config >> 目录改动(/module/caselib)
获取job为100001的trigger config >> 0
- 获取triggerType为tag的trigger config @目录改动(/module/caselib)
- 获取triggerType为commit的trigger config @提交注释包含关键字(b)
- 获取triggerType为schedule的trigger config @定时计划(星期二, 22)
*/
zdTable('job')->gen(5);
$job = new jobTest();
$jobIdList = array('1', '100001');
$jobIdList = array(1, 2, 3);
r($job->getTriggerConfigTest($jobIdList[0])) && p() && e('目录改动(/module/caselib)'); // 获取job为1的trigger config
r($job->getTriggerConfigTest($jobIdList[1])) && p() && e('0'); // 获取job为100001的trigger config
r($job->getTriggerConfigTest($jobIdList[0])) && p() && e('目录改动(/module/caselib)'); // 获取triggerType为tag的trigger config
r($job->getTriggerConfigTest($jobIdList[1])) && p() && e('提交注释包含关键字(b)'); // 获取triggerType为commit的trigger config
r($job->getTriggerConfigTest($jobIdList[2])) && p() && e('定时计划(星期二, 22)'); // 获取triggerType为schedule的trigger config
+4 -4
View File
@@ -7,11 +7,11 @@ su('admin');
/**
title=jobModel::getTriggerGroup();
timeout=0
cid=1
pid=1
获取trigger type为tag且repo id为1的name >> 这是一个Job1
获取trigger type为commit且repo id为2的name >> 这是一个Job2
- 获取trigger type为tag且repo id为1的name第1条的name属性 @这是一个Job1
- 获取trigger type为commit且repo id为2的name第2条的name属性 @这是一个Job2
*/
$job = new jobTest();
@@ -20,4 +20,4 @@ $triggerTypeList = array('tag', 'commit');
$repoIdList = array('1', '2');
r($job->getTriggerGroupTest($triggerTypeList['0'], $repoIdList)) && p('1:name') && e('这是一个Job1'); // 获取trigger type为tag且repo id为1的name
r($job->getTriggerGroupTest($triggerTypeList['1'], $repoIdList)) && p('2:name') && e('这是一个Job2'); // 获取trigger type为commit且repo id为2的name
r($job->getTriggerGroupTest($triggerTypeList['1'], $repoIdList)) && p('2:name') && e('这是一个Job2'); // 获取trigger type为commit且repo id为2的name
+1
View File
@@ -18,6 +18,7 @@ cid=1
*/
zdTable('pipeline')->gen(5);
zdTable('job')->gen(5);
zdTable('repo')->config('repo')->gen(5);
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/job.class.php';
su('admin');
/**
title=jobModel->updateLastTag();
timeout=0
cid=1
- 查询id为1的job的版本库的last tag属性lastTag @testTag
*/
zdTable('job')->gen(5);
$job = new jobTest();
r($job->updateLastTagTest(1, 'testTag')) && p('lastTag') && e('testTag'); // 查询id为1的job的版本库的last tag
+146
View File
@@ -0,0 +1,146 @@
title: zt_job
desc: "构建任务"
author: zenggang
version: "1.0"
fields:
- field: id
note: "ID"
range: 1-10000
prefix: ""
postfix: ""
loop: 0
format: ""
- field: name
note: "名称"
range: 1-10000
prefix: "这是一个Job"
postfix: ""
loop: 0
format: ""
- field: repo
note: "代码库"
range: 1-10000
prefix: ""
postfix: ""
loop: 0
format: ""
- field: product
note: "关联产品"
range: 1-10000
prefix: ""
postfix: ""
loop: 0
format: ""
- field: frame
note: "工具/框架"
range: sonarqube,junit,testng,phpunit,pytest,jtest,cppunit,gtest,qtest
prefix: ""
postfix: ""
loop: 0
format: ""
- field: engine
note: "引擎"
range: jenkins,gitlab
- field: server
note: "服务器ID"
range: 3{1},1{1}
- field: pipeline
note: "流水线"
range: '[/job/hello%20world/],[{"project":"1569"}],[/job/simple-job/],[],[/job/paramsJob/]'
- field: triggerType
note: "触发方式"
range: tag,commit,schedule
prefix: ""
postfix: ""
loop: 0
format: ""
- field: sonarqubeServer
note: "Sonarqube服务器"
range: 2,0{8}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: projectKey
note: "Sonarqube项目"
range: zentaopms
prefix: ""
postfix: ""
loop: 0
format: ""
- field: svnDir
note: "SVN监控路径"
range: caselib,effort,git,mail,output
prefix: "/module/"
postfix: ""
loop: 0
format: ""
- field: atDay
note: "自定义日期"
range: 0-6
prefix: ""
postfix: ""
loop: 0
format: ""
- field: atTime
note: "执行时间"
range: "22:05"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: customParam
note: "自定义构建参数"
range: ''
prefix: "["
postfix: "]"
loop: 0
format: ""
- field: comment
note: "匹配关键字"
range: a-z
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdBy
note: "创建者"
range: admin
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdDate
note: "创建日期"
range: "(M)-(w)"
type: timestamp
postfix: ""
format: "YY/MM/DD"
- field: editedBy
note: "编辑者"
range: ""
prefix: ""
postfix: ""
loop: 0
format: ""
- field: lastStatus
note: "最后执行状态"
range: "a-z"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: lastTag
note: "最后执行标签"
range: "a-z"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: deleted
note: "是否删除"
range: 0
prefix: ""
postfix: ""
loop: 0
format: ""
+26
View File
@@ -0,0 +1,26 @@
title: zt_pipeline
author: Zeng gang
version: "1.0"
fields:
- field: id
range: 1-5
- field: type
range: gitlab,sonarqube,jenkins,gitea,gogs
- field: name
range: GitLab服务器,SonarQube服务器,Jenkins服务器,Gitea服务器,Gogs服务器
- field: url
range: "[https://gitlabdev.qc.oop.cc],[http://10.0.7.242:9990],[https://jenkinsdev.qc.oop.cc],[https://giteadev.qc.oop.cc],[https://gogsdev.qc.oop.cc]"
- field: account
range: "[],[admin],[jenkins],[]{2}"
- field: password
range: "[],[U2h3N0NldHlsc1ozYkVTVjBreXM=],[MXJZN1JWREEyQlZrak81ME9qTUo=],[]{2}"
- field: token
range: "glpat-b8Sa1pM9k9ygxMZYPN6w,YWRtaW46U2h3N0NldHlsc1ozYkVTVjBreXM=,11ae7f2332f0d84501b55adfa94b59e3ac,6149a6013047301b116389d50db5cbf599772082,6aafc3d332b70312a680fedf26039c67e98cfabe"
- field: private
range: efe54b3725150d55d8d896622c34b18f,228b25587479f2fc7570428e8bcbabdc,598825e90a8ac1ce5c48306c53dc1609,22e2f01322e89a725ba98d77f0feec85,4fabcbd31314365506ebc56c0c83c1ec
- field: createdBy
range: admin
- field: createdDate
range: "[2022-12-11 15:37:37]"
- field: deleted
range: 0
+1 -1
View File
@@ -43,7 +43,7 @@ fields:
range: jenkins,gitlab
- field: server
note: "服务器ID"
range: 3,1
range: 3{1},1{1}
- field: pipeline
note: "流水线"
range: dave,[{"project":"1569","reference":"master"}]