@Test
  public void testPerformReturnsSuccessIfNoExceptionsThrown() throws Exception {
    final BPInstanceConfig instanceConfig = createInstanceConfig(publishers, false, false, false);
    instanceConfig.setHostConfigurationAccess(mockHostConfigurationAccess);
    final BapPublisher mockPublisher = createAndAddMockPublisher(hostConfiguration.getName());
    mockPublisher.perform(hostConfiguration, buildInfo);

    assertResult(Result.SUCCESS, instanceConfig);
  }
  @Test
  public void testDoNotCreateNodeName() throws Exception {
    final BPInstanceConfig instanceConfig =
        createInstanceConfig(publishers, false, false, false, "master");
    instanceConfig.setHostConfigurationAccess(mockHostConfigurationAccess);
    final BapPublisher mockPublisher = createAndAddMockPublisher(hostConfiguration.getName());
    mockPublisher.perform(hostConfiguration, buildInfo);
    assertResult(Result.SUCCESS, instanceConfig);

    assertFalse(buildInfo.getCurrentBuildEnv().getEnvVars().containsKey(BPBuildInfo.ENV_NODE_NAME));
  }
  @Test
  public void testPerformReturnsFailureIfFailOnError() throws Exception {
    final BapPublisher mockPub1 = createAndAddMockPublisher(hostConfiguration.getName());
    mockPub1.perform(hostConfiguration, buildInfo);
    EasyMock.expectLastCall().andThrow(new RuntimeException("Bad stuff here!"));
    createAndAddMockPublisher(null);

    final BPInstanceConfig instanceConfig = createInstanceConfig(publishers, false, true, false);
    instanceConfig.setHostConfigurationAccess(mockHostConfigurationAccess);

    assertResult(Result.FAILURE, instanceConfig);
  }
  @Test
  public void testPerformReturnsUnstableAndDoesNotInvokeOtherPublishers() throws Exception {
    final BapPublisher mockPub1 = createAndAddMockPublisher(hostConfiguration.getName());
    mockPub1.perform(hostConfiguration, buildInfo);
    EasyMock.expectLastCall().andThrow(new RuntimeException("Bad stuff here!"));
    createAndAddMockPublisher(null);

    final BPInstanceConfig instanceConfig = createInstanceConfig(publishers, false, false, false);
    instanceConfig.setHostConfigurationAccess(mockHostConfigurationAccess);

    assertResult(Result.UNSTABLE, instanceConfig);
  }
  @Test
  public void testParameterizedPublishing() throws Exception {
    final String paramName = "PUB_PATTERN";
    final ParamPublish paramPublish = new ParamPublish(paramName);
    buildInfo.getCurrentBuildEnv().getEnvVars().put(paramName, "Bill|Ted");
    final BPInstanceConfig instanceConfig =
        createInstanceConfig(publishers, false, false, false, null, paramPublish);
    instanceConfig.setHostConfigurationAccess(mockHostConfigurationAccess);
    createLabeledPublisher("Bill", true);
    createLabeledPublisher("Neo", false);
    createLabeledPublisher("Ted", true);
    createLabeledPublisher("Trinity", false);

    assertResult(Result.SUCCESS, instanceConfig);
  }
  private void assertFixNodeName(
      final Map<String, String> envVars,
      final String nodeName,
      final String masterNodeName,
      final String expectedNodeName)
      throws Exception {
    envVars.put(BPBuildInfo.ENV_NODE_NAME, nodeName);
    final BPInstanceConfig instanceConfig =
        createInstanceConfig(publishers, false, false, false, masterNodeName);
    instanceConfig.setHostConfigurationAccess(mockHostConfigurationAccess);
    final BapPublisher mockPublisher = createAndAddMockPublisher(hostConfiguration.getName());
    mockPublisher.perform(hostConfiguration, buildInfo);
    assertResult(Result.SUCCESS, instanceConfig);

    assertEquals(expectedNodeName, envVars.get(BPBuildInfo.ENV_NODE_NAME));
  }
  @Test
  public void testPerformReturnsUnstableWhenNoHostConfigFound() throws Exception {
    final BapPublisher mockPublisher = createAndAddMockPublisher(null);
    mockPublisher.setEffectiveEnvironmentInBuildInfo(
        (AbstractBuild) EasyMock.anyObject(), (BPBuildInfo) EasyMock.anyObject());
    EasyMock.expect(mockPublisher.getConfigName()).andReturn(hostConfiguration.getName());

    Mockito.reset(mockHostConfigurationAccess);
    Mockito.when(mockHostConfigurationAccess.getConfiguration(hostConfiguration.getName()))
        .thenReturn(null);

    final BPInstanceConfig instanceConfig = createInstanceConfig(publishers, false, false, false);
    instanceConfig.setHostConfigurationAccess(mockHostConfigurationAccess);

    assertResult(Result.UNSTABLE, instanceConfig);
    Mockito.verify(mockHostConfigurationAccess).getConfiguration(hostConfiguration.getName());
  }
예제 #8
0
 public BPPlugin(
     final String consolePrefix,
     final ArrayList<PUBLISHER> publishers,
     final boolean continueOnError,
     final boolean failOnError,
     final boolean alwaysPublishFromMaster,
     final String masterNodeName,
     final ParamPublish paramPublish) {
   this.delegate =
       new BPInstanceConfig<PUBLISHER>(
           publishers,
           continueOnError,
           failOnError,
           alwaysPublishFromMaster,
           masterNodeName,
           paramPublish);
   delegate.setHostConfigurationAccess(this);
   this.consolePrefix = consolePrefix;
 }
예제 #9
0
  @Override
  public boolean perform(
      final AbstractBuild<?, ?> build, final Launcher launcher, final BuildListener listener)
      throws InterruptedException, IOException {
    final PrintStream console = listener.getLogger();
    if (!isBuildGoodEnoughToRun(build, console)) return true;
    final BPBuildEnv currentBuildEnv =
        new BPBuildEnv(
            getEnvironmentVariables(build, listener), build.getWorkspace(), build.getTimestamp());
    BPBuildEnv targetBuildEnv = null;
    if (PROMOTION_CLASS_NAME.equals(build.getClass().getCanonicalName())) {
      AbstractBuild<?, ?> promoted;
      try {
        final Method getTarget = build.getClass().getMethod("getTarget", (Class<?>[]) null);
        promoted = (AbstractBuild) getTarget.invoke(build, (Object[]) null);
      } catch (Exception e) {
        throw new RuntimeException(Messages.exception_failedToGetPromotedBuild(), e);
      }
      targetBuildEnv =
          new BPBuildEnv(
              getEnvironmentVariables(promoted, listener),
              new FilePath(promoted.getArtifactsDir()),
              promoted.getTimestamp());
    }

    final BPBuildInfo buildInfo =
        new BPBuildInfo(
            listener,
            consolePrefix,
            Hudson.getInstance().getRootPath(),
            currentBuildEnv,
            targetBuildEnv);
    fixup(build, buildInfo);
    final Result result = delegate.perform(buildInfo);

    if (build.getResult() == null) build.setResult(result);
    else build.setResult(result.combine(build.getResult()));
    return result.isBetterOrEqualTo(Result.UNSTABLE);
  }
 private void assertResult(final Result expectedResult, final BPInstanceConfig instanceConfig) {
   mockControl.replay();
   assertEquals(expectedResult, instanceConfig.perform(build, buildInfo));
   mockControl.verify();
 }
예제 #11
0
 public void setDelegate(final BPInstanceConfig delegate) {
   this.delegate = delegate;
   delegate.setHostConfigurationAccess(this);
 }