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 2018/11/25 22:08:56 UTC
[ignite-teamcity-bot] branch ignite-9542-new-run-stripe updated:
IGNITE-9542: Persisting test runs implementation using entry processors
This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch ignite-9542-new-run-stripe
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/ignite-9542-new-run-stripe by this push:
new ee9554a IGNITE-9542: Persisting test runs implementation using entry processors
ee9554a is described below
commit ee9554a67310d2070856e9ef8454466d18f908b7
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Mon Nov 26 01:08:53 2018 +0300
IGNITE-9542: Persisting test runs implementation using entry processors
---
.../ci/teamcity/ignited/TeamcityIgnitedImpl.java | 8 ++++-
.../ignited/fatbuild/ProactiveFatBuildSync.java | 10 +++---
.../teamcity/ignited/runhist/InvocationData.java | 4 +--
.../teamcity/ignited/runhist/RunHistCompacted.java | 9 ++----
.../ignited/runhist/RunHistCompactedDao.java | 36 +++++++++++++++++++++-
.../ci/teamcity/ignited/runhist/RunHistSync.java | 22 +++++++++++--
.../ignited/IgnitedTcInMemoryIntegrationTest.java | 8 ++++-
.../ci/teamcity/ignited/TeamcityIgnitedMock.java | 4 ++-
8 files changed, 83 insertions(+), 18 deletions(-)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
index d129f60..e29975d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
@@ -38,6 +38,7 @@ import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildDao;
import org.apache.ignite.ci.teamcity.ignited.fatbuild.ProactiveFatBuildSync;
import org.apache.ignite.ci.teamcity.ignited.runhist.RunHistCompactedDao;
+import org.apache.ignite.ci.teamcity.ignited.runhist.RunHistSync;
import org.apache.ignite.ci.teamcity.pure.ITeamcityConn;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
@@ -94,6 +95,8 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
/** Run history DAO. */
@Inject private RunHistCompactedDao runHistCompactedDao;
+ @Inject private RunHistSync runHistSync;
+
/** Strings compactor. */
@Inject private IStringCompactor compactor;
@@ -393,10 +396,13 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
FatBuildCompacted savedVer = buildSync.loadBuild(conn, buildId, existingBuild, mode);
- //build was modified, probably we need also to update reference accordindly
+ //build was modified, probably we need also to update reference accordingly
if (savedVer != null)
buildRefDao.save(srvIdMaskHigh, new BuildRefCompacted(savedVer));
+ if (savedVer != null)
+ runHistSync.syncLater(srvIdMaskHigh, buildId, savedVer);
+
return savedVer == null ? existingBuild : savedVer;
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java
index dc00780..0ddbdcf 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java
@@ -231,10 +231,11 @@ public class ProactiveFatBuildSync {
/**
*
- * @param conn
- * @param buildId
- * @param existingBuild
- * @return null if nothing was saved, use existing build
+ * @param conn TC connection to load data
+ * @param buildId build ID (TC identification).
+ * @param existingBuild build from DB.
+ * @return null if nothing was saved, use existing build. Non null value indicates that
+ * new build if it was updated.
*/
@Nullable
public FatBuildCompacted loadBuild(ITeamcityConn conn, int buildId,
@@ -317,6 +318,7 @@ public class ProactiveFatBuildSync {
}
else
build = Build.createFakeStub();
+ //todo here can be situation we have build ref, but don't have a build
} else {
logger.error("Loading build [" + buildId + "] for server [" + srvNme + "] failed:" + e.getMessage(), e);
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java
index b5f1b1a..7e582a3 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java
@@ -56,8 +56,8 @@ public class InvocationData {
return allHistRuns;
}
- public void add(IStringCompactor c, TestCompacted testCompacted, int build, long startDate) {
- final boolean failedTest = testCompacted.isFailedTest(c);
+ public void add(int testSuccess, TestCompacted testCompacted, int build, long startDate) {
+ final boolean failedTest = testCompacted.status()==testSuccess;
if (invocationMap.containsKey(build))
return;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java
index 795e00b..497534e 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java
@@ -18,15 +18,12 @@
package org.apache.ignite.ci.teamcity.ignited.runhist;
import com.google.common.base.MoreObjects;
-import com.google.common.collect.Lists;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
import org.apache.ignite.ci.analysis.IVersionedEntity;
import org.apache.ignite.ci.teamcity.ignited.IRunHistory;
-import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
import org.apache.ignite.ci.teamcity.ignited.fatbuild.TestCompacted;
import javax.annotation.Nullable;
-import java.util.Date;
import java.util.List;
public class RunHistCompacted implements IVersionedEntity, IRunHistory {
@@ -93,13 +90,13 @@ public class RunHistCompacted implements IVersionedEntity, IRunHistory {
}
/**
- * @param c Compactor.
+ * @param testSuccess Test success reference string code.
* @param testCompacted Test compacted.
* @param build Build.
* @param startDate Start date.
*/
- public void addTestRun(IStringCompactor c, TestCompacted testCompacted, int build, long startDate) {
- data.add(c, testCompacted, build, startDate);
+ public void addTestRun(int testSuccess, TestCompacted testCompacted, int build, long startDate) {
+ data.add(testSuccess, testCompacted, build, startDate);
}
/** {@inheritDoc} */
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompactedDao.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompactedDao.java
index 8df708f..3f25a1d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompactedDao.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompactedDao.java
@@ -19,19 +19,24 @@ package org.apache.ignite.ci.teamcity.ignited.runhist;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CacheEntryProcessor;
import org.apache.ignite.cache.QueryEntity;
import org.apache.ignite.ci.db.TcHelperDb;
+import org.apache.ignite.ci.tcmodel.result.tests.TestOccurrence;
import org.apache.ignite.ci.teamcity.ignited.IRunHistory;
import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
+import org.apache.ignite.ci.teamcity.ignited.fatbuild.TestCompacted;
import org.apache.ignite.configuration.CacheConfiguration;
+import javax.cache.processor.EntryProcessorException;
+import javax.cache.processor.MutableEntry;
import javax.inject.Inject;
import javax.inject.Provider;
import java.util.Collections;
public class RunHistCompactedDao {
/** Cache name*/
- public static final String TEST_HIST_CACHE_NAME = "testRunHist";
+ public static final String TEST_HIST_CACHE_NAME = "testRunHistV0";
/** Ignite provider. */
@Inject
@@ -74,4 +79,33 @@ public class RunHistCompactedDao {
return testHistCache.get(new RunHistKey(srvIdMaskHigh, testName, branchId));
}
+
+ public void addInvocation(final int srvId,
+ final TestCompacted t,
+ final int buildId,
+ final long buildStartDateTs,
+ final int branchName) {
+ RunHistKey histKey = new RunHistKey(srvId, t.testName(), branchName);
+
+ final int testSuccessCode = compactor.getStringId(TestOccurrence.STATUS_SUCCESS);
+
+ testHistCache.invoke(histKey,
+ new CacheEntryProcessor<RunHistKey, RunHistCompacted, Object>() {
+ @Override
+ public Object process(MutableEntry<RunHistKey, RunHistCompacted> entry, Object... parms) throws EntryProcessorException {
+ RunHistCompacted hist = entry.getValue();
+
+ if (hist == null)
+ hist = new RunHistCompacted(entry.getKey());
+
+ hist.addTestRun(testSuccessCode, t, buildId, buildStartDateTs);
+
+ entry.setValue(hist);
+
+ return null;
+ }
+ }
+ );
+
+ }
}
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 5b332fc..97d0a94 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
@@ -17,10 +17,14 @@
package org.apache.ignite.ci.teamcity.ignited.runhist;
+import org.apache.ignite.ci.di.scheduler.IScheduler;
+import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
+import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
import org.apache.ignite.ci.teamcity.pure.ITeamcityConn;
import org.apache.ignite.internal.util.GridConcurrentHashSet;
import javax.annotation.concurrent.GuardedBy;
+import javax.inject.Inject;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -30,6 +34,22 @@ import java.util.Set;
*
*/
public class RunHistSync {
+ @Inject
+ IStringCompactor compactor;
+
+ @Inject IScheduler scheduler;
+
+ @Inject RunHistCompactedDao dao;
+
+ public void syncLater(int srvId, int buildId, FatBuildCompacted build) {
+ if(!build.isFinished(compactor))
+ return;
+
+ build.getAllTests().forEach(t -> {
+ dao.addInvocation(srvId, t, build.id(), build.getStartDateTs(), build.branchName());
+ });
+ }
+
/**
* Scope of work: builds to be loaded from a connection.
*/
@@ -42,6 +62,4 @@ public class RunHistSync {
@GuardedBy("this")
private Map<String, SyncTask> buildToLoad = new HashMap<>();
-
-
}
diff --git a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/IgnitedTcInMemoryIntegrationTest.java b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/IgnitedTcInMemoryIntegrationTest.java
index f83a8e3..35b53ea 100644
--- a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/IgnitedTcInMemoryIntegrationTest.java
+++ b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/IgnitedTcInMemoryIntegrationTest.java
@@ -53,6 +53,7 @@ import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildDao;
import org.apache.ignite.ci.teamcity.ignited.runhist.RunHistCompacted;
import org.apache.ignite.ci.teamcity.ignited.runhist.RunHistCompactedDao;
import org.apache.ignite.ci.teamcity.ignited.runhist.RunHistKey;
+import org.apache.ignite.ci.teamcity.ignited.runhist.RunHistSync;
import org.apache.ignite.ci.teamcity.pure.BuildHistoryEmulator;
import org.apache.ignite.ci.teamcity.pure.ITeamcityHttpConnection;
import org.apache.ignite.ci.user.ICredentialsProv;
@@ -379,7 +380,12 @@ public class IgnitedTcInMemoryIntegrationTest {
System.out.println(resMap);
- resMap.forEach(dao::save);
+ // resMap.forEach(dao::save);
+
+ final RunHistSync histSync = injector.getInstance(RunHistSync.class);
+ buildsMap.forEach((id, build) -> {
+ histSync.syncLater(U.safeAbs(srvId.hashCode()), id, build);
+ });
final ITeamcityIgnitedProvider inst = injector.getInstance(ITeamcityIgnitedProvider.class);
final ITeamcityIgnited server = inst.server(srvId, Mockito.mock(ICredentialsProv.class));
diff --git a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedMock.java b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedMock.java
index eaafd3e..2ae303d 100644
--- a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedMock.java
+++ b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedMock.java
@@ -19,6 +19,7 @@ package org.apache.ignite.ci.teamcity.ignited;
import com.google.common.base.Preconditions;
import org.apache.ignite.ci.analysis.TestInBranch;
+import org.apache.ignite.ci.tcmodel.result.tests.TestOccurrence;
import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
import org.apache.ignite.ci.teamcity.ignited.runhist.RunHistCompacted;
import org.apache.ignite.ci.teamcity.ignited.runhist.RunHistKey;
@@ -130,7 +131,8 @@ public class TeamcityIgnitedMock {
final RunHistCompacted hist = histCache.computeIfAbsent(histKey, RunHistCompacted::new);
- hist.addTestRun(c, t, build.id(), build.getStartDateTs());
+ final int successCode = c.getStringId(TestOccurrence.STATUS_SUCCESS);
+ hist.addTestRun(successCode, t, build.id(), build.getStartDateTs());
});
}