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()) {