You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2019/05/30 13:43:13 UTC
[ignite-teamcity-bot] 01/01: IGNITE-11880: Configurable
notifications by build parameters/suite IDS & names
This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch ignite-11880
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
commit 54c86c5069b439408663bf0b5d64e4663f6f59c1
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Thu May 30 16:42:48 2019 +0300
IGNITE-11880: Configurable notifications by build parameters/suite IDS & names
---
.../main/java/org/apache/ignite/ci/ITeamcity.java | 6 ++++
.../ignite/ci/analysis/SingleBuildRunCtx.java | 40 +++++++++++++++++++---
.../ignite/ci/tcbot/conf/ITcServerConfig.java | 9 ++---
.../ignite/ci/tcbot/conf/NotificationChannel.java | 2 +-
.../ignite/ci/tcbot/conf/NotificationsConfig.java | 2 +-
.../ignite/ci/tcbot/conf/ParameterValueSpec.java | 39 +++++++++++++++------
.../ignite/ci/tcbot/conf/TcServerConfig.java | 9 -----
.../ci/teamcity/ignited/runhist/RunHistSync.java | 21 ++++++------
8 files changed, 84 insertions(+), 44 deletions(-)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java
index d935bb4..5757239 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java
@@ -49,6 +49,12 @@ public interface ITeamcity extends ITeamcityConn {
/** Default list of properties to be skipped in saving in FAT builds. */
public Set<String> AVOID_SAVE_PROPERTIES = Sets.newHashSet(TCBOT_TRIGGER_TIME, "build.query.loginTs");
+ /** Fake property for addressing 'Suite id'. */
+ public String SUITE_ID_PROPERTY = "_suiteId";
+
+ /** Fake property for addressing 'Suite Name'. */
+ public String SUITE_NAME_PROPERTY = "_suiteName";
+
CompletableFuture<File> unzipFirstFile(CompletableFuture<File> fut);
CompletableFuture<File> downloadBuildLogZip(int id);
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/SingleBuildRunCtx.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/SingleBuildRunCtx.java
index 80dbdbe..2d38530 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/SingleBuildRunCtx.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/SingleBuildRunCtx.java
@@ -31,9 +31,9 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Future;
import java.util.stream.Stream;
import javax.annotation.Nonnull;
+import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.tcbot.conf.BuildParameterSpec;
import org.apache.ignite.ci.tcbot.conf.ITcServerConfig;
-import org.apache.ignite.ci.tcbot.conf.ParameterValueSpec;
import org.apache.ignite.ci.tcmodel.result.tests.TestOccurrenceFull;
import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
import org.apache.ignite.ci.teamcity.ignited.buildtype.ParametersCompacted;
@@ -261,8 +261,11 @@ public class SingleBuildRunCtx implements ISuiteResults {
}).sum();
}
- public void addTag(String label) {
- this.tags.add(label);
+ public void addTag(@Nullable String lb) {
+ if(Strings.isNullOrEmpty(lb))
+ return;
+
+ this.tags.add(lb);
}
public Set<String> tags() {
@@ -275,16 +278,43 @@ public class SingleBuildRunCtx implements ISuiteResults {
if (!parm.isFilled())
continue;
- String propVal = parameters.getProperty(compactor, parm.name());
+ String propVal = getPropertyOrSpecialValue(parameters, compactor, parm.name());
if (Strings.isNullOrEmpty(propVal))
continue;
parm.selection().stream()
- .filter(v -> Objects.equals(v.value(), propVal))
+ .filter(pvs -> {
+ String valueRegExp = pvs.valueRegExp();
+
+ if(!Strings.isNullOrEmpty(valueRegExp)) {
+
+ }
+
+ String exactVal = pvs.value();
+
+ if(!Strings.isNullOrEmpty(exactVal))
+ return Objects.equals(exactVal, propVal);
+
+ return false;
+ })
.findAny()
.ifPresent(v -> addTag(v.label()));
}
}
+
+ public String getPropertyOrSpecialValue(ParametersCompacted parameters, IStringCompactor compactor,
+ String parmKey) {
+
+ String propVal;
+ if (ITeamcity.SUITE_ID_PROPERTY.equals(parmKey))
+ propVal = suiteId();
+ else if (ITeamcity.SUITE_NAME_PROPERTY.equals(parmKey))
+ propVal = suiteName();
+ else
+ propVal = parameters.getProperty(compactor, parmKey);
+
+ return propVal;
+ }
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
index e370501..e55d18a 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
@@ -45,12 +45,9 @@ public interface ITcServerConfig {
@NotNull public String defaultTrackedBranch();
/**
- * @return set of build parameters codes, which could be used for filtering builds in RunHist/Invocations.
- */
- @NotNull public Collection<String> filteringParametersKeys();
-
- /**
- * @return set of build parameters, which could be used for filtering builds in RunHist/Invocations.
+ * Provides build parameters, whichi could be used for filtering builds in RunHist/Invocations and tagging in UI.
+ *
+ * @return set of build parameters specifications.
*/
@NotNull public Collection<BuildParameterSpec> filteringParameters();
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/NotificationChannel.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/NotificationChannel.java
index f70a3e6..87f6e8a 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/NotificationChannel.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/NotificationChannel.java
@@ -24,7 +24,7 @@ import java.util.HashSet;
*
*/
public class NotificationChannel implements INotificationChannel {
- /** Email. */
+ /** (Destionation) Email. */
private String email;
/** Slack. */
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/NotificationsConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/NotificationsConfig.java
index 4f2ada4..32cd235 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/NotificationsConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/NotificationsConfig.java
@@ -34,7 +34,7 @@ import static com.google.common.base.Strings.isNullOrEmpty;
* Notifications Config
*/
public class NotificationsConfig {
- /** Email. */
+ /** (Source) Email. */
private EmailSettings email = new EmailSettings();
/** Slack auth token. Not encoded using Password encoder */
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ParameterValueSpec.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ParameterValueSpec.java
index f8032aa..e5b1ee0 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ParameterValueSpec.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ParameterValueSpec.java
@@ -17,7 +17,7 @@
package org.apache.ignite.ci.tcbot.conf;
-import com.google.common.base.Objects;
+import java.util.Objects;
/**
* Some parameter value, which label may be used in UI.
@@ -25,26 +25,43 @@ import com.google.common.base.Objects;
public class ParameterValueSpec {
private String value;
private String label;
+ private String valueRegExp;
+ /**
+ * Exact value, which can be present in a build.
+ */
public String value() {
return value;
}
+ /**
+ * @return label/tag to be associated with build or shown in selection.
+ */
public String label() {
return label;
}
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- ParameterValueSpec that = (ParameterValueSpec) o;
- return Objects.equal(value, that.value) &&
- Objects.equal(label, that.label);
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ ParameterValueSpec spec = (ParameterValueSpec)o;
+ return Objects.equals(value, spec.value) &&
+ Objects.equals(label, spec.label) &&
+ Objects.equals(valueRegExp, spec.valueRegExp);
}
- @Override
- public int hashCode() {
- return Objects.hashCode(value, label);
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return Objects.hash(value, label, valueRegExp);
+ }
+
+ /**
+ *
+ */
+ public String valueRegExp() {
+ return this.valueRegExp;
}
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
index 60b9821..118319d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
@@ -22,7 +22,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
-import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import org.apache.ignite.ci.HelperConfig;
import org.jetbrains.annotations.NotNull;
@@ -115,14 +114,6 @@ public class TcServerConfig implements ITcServerConfig {
}
/** {@inheritDoc} */
- @Override public Collection<String> filteringParametersKeys() {
- if (filteringParameters == null || filteringParameters.isEmpty())
- return Collections.emptySet();
-
- return filteringParameters.stream().map(BuildParameterSpec::name).collect(Collectors.toSet());
- }
-
- /** {@inheritDoc} */
@NotNull @Override public Collection<BuildParameterSpec> filteringParameters() {
if (filteringParameters == null || filteringParameters.isEmpty())
return Collections.emptySet();
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java
index 2c62389..199f8d3 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java
@@ -18,7 +18,6 @@
package org.apache.ignite.ci.teamcity.ignited.runhist;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -38,9 +37,9 @@ import org.apache.ignite.ci.di.AutoProfiling;
import org.apache.ignite.ci.di.MonitoredTask;
import org.apache.ignite.ci.di.scheduler.IScheduler;
import org.apache.ignite.ci.tcbot.TcBotSystemProperties;
+import org.apache.ignite.ci.tcbot.conf.BuildParameterSpec;
import org.apache.ignite.ci.tcbot.conf.ChainAtServerTracked;
import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
-import org.apache.ignite.ci.tcbot.conf.ITcServerConfig;
import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
import org.apache.ignite.ci.teamcity.ignited.buildref.BuildRefDao;
@@ -109,9 +108,9 @@ public class RunHistSync {
if (histDao.buildWasProcessed(srvId, build.id()))
return;
- Set<Integer> allTriggeringBuildParameters = getFilteringParameters(srvCode);
+ Set<Integer> allImportantBuildParameters = getFilteringParameters(srvCode);
- BiPredicate<Integer, Integer> parmFilter = (k, v) -> allTriggeringBuildParameters.contains(k);
+ BiPredicate<Integer, Integer> parmFilter = (k, v) -> allImportantBuildParameters.contains(k);
boolean saveNow = false;
int branchNameNormalized = compactor.getStringId(normalizeBranch(build.branchName(compactor)));
@@ -156,20 +155,20 @@ public class RunHistSync {
}
@NotNull public Set<Integer> getFilteringParameters(String srvCode) {
- Set<String> triggerParameters = cfg.getTrackedBranches().getBranches().stream().flatMap(
+ Set<String> importantParameters = cfg.getTrackedBranches().getBranches().stream().flatMap(
b -> b.getChainsStream()
.filter(ChainAtServerTracked::isTriggerBuild)
.filter(chain -> Objects.equals(chain.getServerId(), srvCode))
.flatMap(ChainAtServerTracked::buildParametersKeys)
).collect(Collectors.toSet());
- ITcServerConfig tcCfg = cfg.getTeamcityConfig(srvCode);
+ cfg.getTeamcityConfig(srvCode)
+ .filteringParameters()
+ .stream()
+ .map(BuildParameterSpec::name)
+ .forEach(importantParameters::add);
- Collection<String> filtering = tcCfg.filteringParametersKeys();
-
- triggerParameters.addAll(filtering);
-
- return triggerParameters.stream().map(k -> compactor.getStringId(k)).collect(Collectors.toSet());
+ return importantParameters.stream().map(k -> compactor.getStringId(k)).collect(Collectors.toSet());
}
@MonitoredTask(name = "Save Builds To History(srv, runner)", nameExtArgsIndexes = {0, 1})