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 21:07:48 UTC
[ignite-teamcity-bot] branch ignite-9542-new-run-stripe updated:
IGNITE-9542: New Run stripe implementation: first saving run stat version
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 c650279 IGNITE-9542: New Run stripe implementation: first saving run stat version
c650279 is described below
commit c650279414c8fc857930f7b8321c0a0ee7b2416f
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Mon Nov 26 00:07:46 2018 +0300
IGNITE-9542: New Run stripe implementation: first saving run stat version
---
.../ignite/ci/teamcity/ignited/IRunHistory.java | 4 +-
.../ci/teamcity/ignited/TeamcityIgnitedImpl.java | 12 +++--
.../ci/teamcity/ignited/TeamcityIgnitedModule.java | 2 +
.../ignited/runhist/RunHistCompactedDao.java | 17 ++++++
.../ci/tcbot/chain/PrChainsProcessorTest.java | 7 ++-
.../ignited/IgnitedTcInMemoryIntegrationTest.java | 60 +++++++++++++++++++---
.../ci/teamcity/ignited/TeamcityIgnitedMock.java | 2 +-
7 files changed, 89 insertions(+), 15 deletions(-)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/IRunHistory.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/IRunHistory.java
index 2d3eac8..eee3f90 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/IRunHistory.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/IRunHistory.java
@@ -40,7 +40,7 @@ public interface IRunHistory {
default public float getFailRateAllHist() {
if (getRunsAllHist() == 0)
- return 1.0f;
+ return 0.0f;
return 1.0f * getFailuresAllHist() / getRunsAllHist();
}
@@ -56,7 +56,7 @@ public interface IRunHistory {
int runs = getRunsCount();
if (runs == 0)
- return 1.0f;
+ return 0.0f;
return 1.0f * getFailuresCount() / runs;
}
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 ed7c93e..d129f60 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
@@ -37,6 +37,7 @@ import org.apache.ignite.ci.teamcity.ignited.change.ChangeSync;
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.pure.ITeamcityConn;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
@@ -87,10 +88,13 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
/** Changes DAO. */
@Inject private ChangeDao changesDao;
- /** Changes DAO. */
+ /** Changes sync class. */
@Inject private ChangeSync changeSync;
- /** Changes DAO. */
+ /** Run history DAO. */
+ @Inject private RunHistCompactedDao runHistCompactedDao;
+
+ /** Strings compactor. */
@Inject private IStringCompactor compactor;
/** Server ID mask for cache Entries. */
@@ -105,6 +109,7 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
buildConditionDao.init();
fatBuildDao.init();
changesDao.init();
+ runHistCompactedDao.init();
}
@@ -311,8 +316,7 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
@Override
public IRunHistory getTestRunHist(TestInBranch testInBranch) {
- //todo implement loading test data
- return null;
+ return runHistCompactedDao.getTestRunHist(srvIdMaskHigh, testInBranch.name, testInBranch.branch);
}
public List<String> branchForQuery(@Nullable String branchName) {
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedModule.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedModule.java
index ceb427f..af78cef 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedModule.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedModule.java
@@ -23,6 +23,7 @@ import org.apache.ignite.ci.teamcity.ignited.change.ChangeDao;
import org.apache.ignite.ci.teamcity.ignited.change.ChangeSync;
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.pure.ITeamcityHttpConnection;
import org.apache.ignite.ci.teamcity.restcached.TcRestCachedModule;
import org.jetbrains.annotations.Nullable;
@@ -43,6 +44,7 @@ public class TeamcityIgnitedModule extends AbstractModule {
bind(ProactiveFatBuildSync.class).in(new SingletonScope());
bind(ChangeSync.class).in(new SingletonScope());
bind(ChangeDao.class).in(new SingletonScope());
+ bind(RunHistCompactedDao.class).in(new SingletonScope());
bind(IStringCompactor.class).to(IgniteStringCompactor.class).in(new SingletonScope());
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 42eb4d2..8df708f 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
@@ -21,6 +21,7 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.cache.QueryEntity;
import org.apache.ignite.ci.db.TcHelperDb;
+import org.apache.ignite.ci.teamcity.ignited.IRunHistory;
import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
import org.apache.ignite.configuration.CacheConfiguration;
@@ -57,4 +58,20 @@ public class RunHistCompactedDao {
testHistCache = ignite.getOrCreateCache(cfg);
}
+
+ public void save(RunHistKey k, RunHistCompacted v) {
+ testHistCache.put(k, v);
+ }
+
+ public IRunHistory getTestRunHist(int srvIdMaskHigh, String name, String branch) {
+ final Integer testName = compactor.getStringIdIfPresent(name);
+ if (testName == null)
+ return null;
+
+ final Integer branchId = compactor.getStringIdIfPresent(branch);
+ if (branchId == null)
+ return null;
+
+ return testHistCache.get(new RunHistKey(srvIdMaskHigh, testName, branchId));
+ }
}
diff --git a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessorTest.java b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessorTest.java
index e125d81..09ff972 100644
--- a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessorTest.java
+++ b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessorTest.java
@@ -40,7 +40,6 @@ import org.apache.ignite.ci.tcmodel.result.tests.TestRef;
import org.apache.ignite.ci.teamcity.ignited.*;
import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
import org.apache.ignite.ci.teamcity.ignited.runhist.InvocationData;
-import org.apache.ignite.ci.teamcity.ignited.runhist.RunHistCompacted;
import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.web.model.current.SuiteCurrentStatus;
@@ -156,7 +155,7 @@ public class PrChainsProcessorTest {
});
}
- private void initBuildChain(IStringCompactor c, String btId, String branch) {
+ public void initBuildChain(IStringCompactor c, String btId, String branch) {
final FatBuildCompacted buildBuild = createFailedBuild(c, "Build", branch, 1002, 100020);
final ProblemOccurrence compile = new ProblemOccurrence();
compile.setType(ProblemOccurrence.TC_COMPILATION_ERROR);
@@ -268,4 +267,8 @@ public class PrChainsProcessorTest {
return build;
}
+
+ public Map<Integer, FatBuildCompacted> apacheBuilds() {
+ return apacheBuilds;
+ }
}
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 a0d236a..f83a8e3 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
@@ -25,19 +25,21 @@ import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
+import java.util.*;
import java.util.stream.Collectors;
import javax.xml.bind.JAXBException;
+
+import com.google.inject.internal.SingletonScope;
import org.apache.ignite.Ignite;
import org.apache.ignite.Ignition;
+import org.apache.ignite.ci.ITeamcity;
+import org.apache.ignite.ci.analysis.TestInBranch;
import org.apache.ignite.ci.db.TcHelperDb;
import org.apache.ignite.ci.di.scheduler.DirectExecNoWaitSheduler;
import org.apache.ignite.ci.di.scheduler.IScheduler;
import org.apache.ignite.ci.di.scheduler.NoOpSheduler;
+import org.apache.ignite.ci.tcbot.chain.PrChainsProcessor;
+import org.apache.ignite.ci.tcbot.chain.PrChainsProcessorTest;
import org.apache.ignite.ci.tcmodel.changes.ChangesList;
import org.apache.ignite.ci.tcmodel.conf.BuildType;
import org.apache.ignite.ci.tcmodel.hist.BuildRef;
@@ -48,16 +50,21 @@ import org.apache.ignite.ci.tcmodel.result.stat.Statistics;
import org.apache.ignite.ci.tcmodel.result.tests.TestOccurrencesFull;
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.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.pure.BuildHistoryEmulator;
import org.apache.ignite.ci.teamcity.pure.ITeamcityHttpConnection;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.util.XmlUtil;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.jetbrains.annotations.NotNull;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.mockito.Mock;
import org.mockito.Mockito;
import static junit.framework.TestCase.assertEquals;
@@ -263,7 +270,7 @@ public class IgnitedTcInMemoryIntegrationTest {
Injector injector = Guice.createInjector(new AbstractModule() {
@Override protected void configure() {
bind(Ignite.class).toInstance(ignite);
- bind(IStringCompactor.class).to(IgniteStringCompactor.class);
+ bind(IStringCompactor.class).to(IgniteStringCompactor.class).in(new SingletonScope());
}
});
@@ -340,4 +347,45 @@ public class IgnitedTcInMemoryIntegrationTest {
return refBuild;
}
+ @Test
+ public void testRunHistSaveLoad() {
+ final String srvId = "apache";
+
+ TeamcityIgnitedModule module = new TeamcityIgnitedModule();
+ Injector injector = Guice.createInjector(module, new AbstractModule() {
+ @Override
+ protected void configure() {
+ bind(Ignite.class).toInstance(ignite);
+ bind(IScheduler.class).to(DirectExecNoWaitSheduler.class).in(new SingletonScope());
+ }
+ });
+
+ final IStringCompactor c = injector.getInstance(IStringCompactor.class);
+
+ final RunHistCompactedDao dao = injector.getInstance(RunHistCompactedDao.class);
+ dao.init();
+
+ final String btId = "RunAll";
+ final String branch = ITeamcity.DEFAULT;
+
+ final PrChainsProcessorTest tst = new PrChainsProcessorTest();
+ tst.initBuildChain(c, btId, branch);
+
+ final Map<Integer, FatBuildCompacted> buildsMap = tst.apacheBuilds();
+
+ Map<RunHistKey, RunHistCompacted> resMap = new HashMap<>();
+
+ TeamcityIgnitedMock.initHistory(c, resMap, buildsMap, U.safeAbs(srvId.hashCode()));
+
+ System.out.println(resMap);
+
+ resMap.forEach(dao::save);
+
+ final ITeamcityIgnitedProvider inst = injector.getInstance(ITeamcityIgnitedProvider.class);
+ final ITeamcityIgnited server = inst.server(srvId, Mockito.mock(ICredentialsProv.class));
+ final IRunHistory testRunHist = server.getTestRunHist(new TestInBranch(PrChainsProcessorTest.TEST_FLAKY_IN_MASTER, branch));
+
+ assertNotNull(testRunHist);
+ assertEquals(0.5, testRunHist.getFailRate(), 0.1);
+ }
}
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 1cd9976..eaafd3e 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
@@ -118,7 +118,7 @@ public class TeamcityIgnitedMock {
return tcIgnited;
}
- private static void initHistory(IStringCompactor c, Map<RunHistKey, RunHistCompacted> resHistCache, Map<Integer, FatBuildCompacted> builds, int srvId) {
+ public static void initHistory(IStringCompactor c, Map<RunHistKey, RunHistCompacted> resHistCache, Map<Integer, FatBuildCompacted> builds, int srvId) {
Map<RunHistKey, RunHistCompacted> histCache = new ConcurrentHashMap<>();
for (FatBuildCompacted build : builds.values()) {