Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
jenkins
提交
56fc3860
J
jenkins
项目概览
xxadev
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
56fc3860
编写于
5月 18, 2015
作者:
O
Oleg Nenashev
提交者:
Oliver Gondža
6月 08, 2015
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[JENKINS-28446] - Direct unit test for the issue
(cherry picked from commit
43b06626
)
上级
de5d83de
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
96 addition
and
0 deletion
+96
-0
test/src/test/java/jenkins/model/UnlabeledLoadStatisticsTest.java
.../test/java/jenkins/model/UnlabeledLoadStatisticsTest.java
+96
-0
未找到文件。
test/src/test/java/jenkins/model/UnlabeledLoadStatisticsTest.java
0 → 100644
浏览文件 @
56fc3860
/*
* The MIT License
*
* Copyright 2015 CloudBees Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package
jenkins.model
;
import
hudson.model.FreeStyleProject
;
import
hudson.model.LoadStatistics
;
import
hudson.model.Node
;
import
hudson.model.ParametersAction
;
import
hudson.model.Queue
;
import
hudson.model.StringParameterValue
;
import
hudson.model.labels.LabelAtom
;
import
hudson.slaves.DumbSlave
;
import
org.junit.After
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.jvnet.hudson.test.Issue
;
import
org.jvnet.hudson.test.JenkinsRule
;
import
static
org
.
junit
.
Assert
.*;
/**
* Tests for {@link UnlabeledLoadStatistics} class.
* @author Oleg Nenashev
*/
public
class
UnlabeledLoadStatisticsTest
{
@Rule
public
JenkinsRule
j
=
new
JenkinsRule
();
private
final
LoadStatistics
unlabeledLoad
=
new
UnlabeledLoadStatistics
();
@After
public
void
clearQueue
()
{
j
.
getInstance
().
getQueue
().
clear
();
}
@Test
@Issue
(
"JENKINS-28446"
)
public
void
computeQueueLength
()
throws
Exception
{
final
Queue
queue
=
j
.
jenkins
.
getQueue
();
assertEquals
(
"Queue must be empty when the test starts"
,
0
,
queue
.
getBuildableItems
().
size
());
assertEquals
(
"Statistics must return 0 when the test starts"
,
0
,
unlabeledLoad
.
computeQueueLength
());
// Disable builds by default, create a slave to prevent assigning of "master" labels
j
.
jenkins
.
setNumExecutors
(
0
);
DumbSlave
slave
=
j
.
createOnlineSlave
(
new
LabelAtom
(
"testLabel"
));
slave
.
setMode
(
Node
.
Mode
.
EXCLUSIVE
);
// Init project
FreeStyleProject
unlabeledProject
=
j
.
createFreeStyleProject
(
"UnlabeledProject"
);
unlabeledProject
.
setConcurrentBuild
(
true
);
FreeStyleProject
labeledProject
=
j
.
createFreeStyleProject
(
"LabeledProject"
);
labeledProject
.
setAssignedLabel
(
new
LabelAtom
(
"foo"
));
// Put unlabeled build into the queue
unlabeledProject
.
scheduleBuild2
(
0
,
new
ParametersAction
(
new
StringParameterValue
(
"FOO"
,
"BAR1"
)));
queue
.
maintain
();
assertEquals
(
"Unlabeled build must be taken into account"
,
1
,
unlabeledLoad
.
computeQueueLength
());
unlabeledProject
.
scheduleBuild2
(
0
,
new
ParametersAction
(
new
StringParameterValue
(
"FOO"
,
"BAR2"
)));
queue
.
maintain
();
assertEquals
(
"Second Unlabeled build must be taken into account"
,
2
,
unlabeledLoad
.
computeQueueLength
());
// Put labeled build into the queue
labeledProject
.
scheduleBuild2
(
0
);
queue
.
maintain
();
assertEquals
(
"Labeled builds must be ignored"
,
2
,
unlabeledLoad
.
computeQueueLength
());
// Allow executions of unlabeled builds on master, all unlabeled builds should pass
j
.
jenkins
.
setNumExecutors
(
1
);
j
.
buildAndAssertSuccess
(
unlabeledProject
);
queue
.
maintain
();
assertEquals
(
"Queue must contain the labeled project build"
,
1
,
queue
.
getBuildableItems
().
size
());
assertEquals
(
"Statistics must return 0 after all builds"
,
0
,
unlabeledLoad
.
computeQueueLength
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录