package hudson.plugins.performance; import hudson.Launcher; import hudson.model.AbstractBuild; import hudson.model.BuildListener; import hudson.model.FreeStyleBuild; import hudson.model.FreeStyleProject; import org.jvnet.hudson.test.HudsonTestCase; import org.jvnet.hudson.test.TestBuilder; import java.io.IOException; import java.util.List; import static java.util.Arrays.asList; /** * @author Kohsuke Kawaguchi */ public class PerformancePublisherTest extends HudsonTestCase { public void testConfigRoundtrip() throws Exception { PerformancePublisher before = new PerformancePublisher(10, 20, asList(new JMeterParser("**/*.jtl"))); FreeStyleProject p = createFreeStyleProject(); p.getPublishersList().add(before); submit(createWebClient().getPage(p,"configure").getFormByName("config")); PerformancePublisher after = p.getPublishersList().get(PerformancePublisher.class); assertEqualBeans(before,after,"errorFailedThreshold,errorUnstableThreshold"); assertEquals(before.getParsers().size(), after.getParsers().size()); assertEqualBeans(before.getParsers().get(0), after.getParsers().get(0), "glob"); assertEquals(before.getParsers().get(0).getClass(), after.getParsers().get(0).getClass()); } public void testBuild() throws Exception { FreeStyleProject p = createFreeStyleProject(); p.getBuildersList().add(new TestBuilder() { @Override public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { build.getWorkspace().child("test.jtl").copyFrom(getClass().getResource("/JMeterResults.jtl")); return true; } }); p.getPublishersList().add(new PerformancePublisher(0,0, asList(new JMeterParser("**/*.jtl")))); FreeStyleBuild b = assertBuildStatusSuccess(p.scheduleBuild2(0).get()); PerformanceBuildAction a = b.getAction(PerformanceBuildAction.class); assertNotNull(a); // poke a few random pages to verify rendering WebClient wc = createWebClient(); wc.getPage(b,"performance"); wc.getPage(b,"performance/uriReport/test.jtl;Login.endperformanceparameter/"); } }