提交 30f00b11 编写于 作者: J Jesse Glick

For RunMapTest to be Groovy was pointless and aggravating.

上级 cce358bf
package hudson.model
package hudson.model;
import org.jvnet.hudson.test.Bug
import org.jvnet.hudson.test.HudsonTestCase
import org.jvnet.hudson.test.SleepBuilder
import org.jvnet.hudson.test.TestEnvironment
import org.jvnet.hudson.test.Bug;
import org.jvnet.hudson.test.HudsonTestCase;
import org.jvnet.hudson.test.SleepBuilder;
import org.jvnet.hudson.test.TestEnvironment;
import javax.xml.transform.stream.StreamSource
import javax.xml.transform.stream.StreamSource;
/**
*
*
* @author Kohsuke Kawaguchi
*/
class RunMapTest extends HudsonTestCase {
public class RunMapTest extends HudsonTestCase {
/**
* Makes sure that reloading the project while a build is in progress won't clobber that in-progress build.
*/
@Bug(12318)
public void testReloadWhileBuildIsInProgress() {
def p = createFreeStyleProject()
public void testReloadWhileBuildIsInProgress() throws Exception {
FreeStyleProject p = createFreeStyleProject();
// want some completed build records
def b1 = assertBuildStatusSuccess(p.scheduleBuild2(0))
FreeStyleBuild b1 = assertBuildStatusSuccess(p.scheduleBuild2(0));
// now create a build that hangs until we signal the OneShotEvent
p.buildersList.add(new SleepBuilder(9999999));
def b2 = p.scheduleBuild2(0).waitForStart()
assertEquals 2,b2.number
p.getBuildersList().add(new SleepBuilder(9999999));
FreeStyleBuild b2 = p.scheduleBuild2(0).waitForStart();
assertEquals(2, b2.number);
// now reload
p.updateByXml(new StreamSource(p.configFile.file))
p.updateByXml(new StreamSource(p.getConfigFile().getFile()));
// we should still see the same object for #2 because that's in progress
assertSame p.getBuildByNumber(b2.number),b2
assertSame(p.getBuildByNumber(b2.number), b2);
// build #1 should be reloaded
assertNotSame b1,p.getBuildByNumber(1)
assertNotSame(b1, p.getBuildByNumber(1));
// and reference gets fixed up
b1 = p.getBuildByNumber(1)
assertSame b1.nextBuild,b2
assertSame b2.previousBuild,b1
b1 = p.getBuildByNumber(1);
assertSame(b1.getNextBuild(), b2);
assertSame(b2.getPreviousBuild(), b1);
}
/**
* Testing if the lazy loading can gracefully tolerate a RuntimeException during unmarshalling.
*/
@Bug(15533)
public void testRuntimeExceptionInUnmarshalling() {
def p = createFreeStyleProject()
def b = assertBuildStatusSuccess(p.scheduleBuild2(0))
public void testRuntimeExceptionInUnmarshalling() throws Exception {
FreeStyleProject p = createFreeStyleProject();
FreeStyleBuild b = assertBuildStatusSuccess(p.scheduleBuild2(0));
b.addAction(new BombAction());
b.save()
b.save();
p._getRuns().purgeCache()
b = p.getBuildByNumber(b.number)
p._getRuns().purgeCache();
b = p.getBuildByNumber(b.number);
// Original test assumed that b == null, but after JENKINS-21024 this is no longer true,
// so this may not really be testing anything interesting:
assert b != null
assert b.getAction(BombAction.class) == null
assert bombed
assertNotNull(b);
assertNull(b.getAction(BombAction.class));
assertTrue(bombed);
}
public static class BombAction extends InvisibleAction {
public Object readResolve() {
TestEnvironment.get().testCase.bombed = true
((RunMapTest) TestEnvironment.get().testCase).bombed = true;
throw new NullPointerException();
}
}
boolean bombed;
private boolean bombed;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册