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 50d8bf2 IGNITE-9542 Flaky detection ported and tested: provide
separated base/current branch history for PR page
50d8bf2 is described below
commit 50d8bf260945a630d7a932fa7871f043fa7acae4
Author: Dmitriy Pavlov <[email protected]>
AuthorDate: Fri Dec 7 20:17:45 2018 +0300
IGNITE-9542 Flaky detection ported and tested: provide separated
base/current branch history for PR page
---
.../ignite/ci/tcbot/chain/PrChainsProcessor.java | 2 +-
.../ignite/ci/teamcity/ignited/IRunHistory.java | 2 +-
.../ignited/fatbuild/FatBuildCompacted.java | 14 +-
.../teamcity/ignited/fatbuild/TestCompacted.java | 10 +-
.../ci/teamcity/ignited/runhist/Invocation.java | 53 ++++++-
.../teamcity/ignited/runhist/InvocationData.java | 14 +-
.../teamcity/ignited/runhist/RunHistCompacted.java | 24 +++-
.../ci/tcbot/chain/PrChainsProcessorTest.java | 160 +++++++++++++--------
.../ignited/IgnitedTcInMemoryIntegrationTest.java | 4 +-
9 files changed, 191 insertions(+), 92 deletions(-)
diff --git
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
index 4ab79b7..f981abd 100644
---
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
+++
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
@@ -195,7 +195,7 @@ public class PrChainsProcessor {
boolean noBuilds = summary.servers.stream().anyMatch(s ->
s.buildNotFound);
- if(noBuilds)
+ if (noBuilds)
return null;
for (ChainAtServerCurrentStatus server : summary.servers) {
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 091d8f7..6ecc42d 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
@@ -41,7 +41,7 @@ public interface IRunHistory extends IRunStat {
@Nullable
List<Integer> getLatestRunResults();
- String getFlakyComments();
+ @Nullable String getFlakyComments();
public default String getCriticalFailPercentPrintable() {
return IRunStat.getPercentPrintable(getCriticalFailRate() * 100.0f);
diff --git
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java
index 31cba27..0d48b26 100644
---
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java
+++
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java
@@ -178,8 +178,10 @@ public class FatBuildCompacted extends BuildRefCompacted
implements IVersionedEn
name = compactor.getStringId(btName);
}
- public void snapshotDependencies(int[] arr) {
+ public FatBuildCompacted snapshotDependencies(int[] arr) {
snapshotDeps = arr.length > 0 ? arr : null;
+
+ return this;
}
/**
@@ -481,8 +483,6 @@ public class FatBuildCompacted extends BuildRefCompacted
implements IVersionedEn
public Invocation toInvocation(IStringCompactor compactor) {
boolean success = isSuccess(compactor);
- final Invocation invocation = new Invocation(getId());
-
final int failCode ;
if (success)
@@ -500,10 +500,10 @@ public class FatBuildCompacted extends BuildRefCompacted
implements IVersionedEn
}
- invocation.status((byte)failCode);
- invocation.startDate(getStartDateTs());
- invocation.changesPresent(changes().length > 0 ? 1 : 0);
- return invocation;
+ return new Invocation(getId())
+ .withStatus((byte)failCode)
+ .withStartDate(getStartDateTs())
+ .withChanges(changes());
}
public void setVersion(short ver) {
diff --git
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java
index d03f9f1..b5a8e36 100644
---
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java
+++
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java
@@ -379,7 +379,6 @@ public class TestCompacted {
public Invocation toInvocation(IStringCompactor compactor,
FatBuildCompacted build) {
final boolean failedTest = isFailedTest(compactor);
- final Invocation invocation = new Invocation(build.getId());
final int failCode = failedTest
? (isIgnoredTest() || isMutedTest())
@@ -387,10 +386,9 @@ public class TestCompacted {
: InvocationData.FAILURE
: InvocationData.OK;
- invocation.status((byte) failCode);
- invocation.startDate(build.getStartDateTs());
- invocation.changesPresent(build.changes().length > 0 ? 1 : 0);
-
- return invocation;
+ return new Invocation(build.getId())
+ .withStatus(failCode)
+ .withStartDate(build.getStartDateTs())
+ .withChanges(build.changes());
}
}
diff --git
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/Invocation.java
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/Invocation.java
index f540c2f..171f100 100644
---
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/Invocation.java
+++
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/Invocation.java
@@ -20,15 +20,30 @@ package org.apache.ignite.ci.teamcity.ignited.runhist;
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
+import org.apache.ignite.ci.analysis.RunStat;
+/**
+ * Run history element: invocation of build or test.
+ */
public class Invocation {
+ /** Change not filled. */
+ public static final int CHANGE_NOT_FILLED = 2;
+ public static final int CHANGE_PRESENT = 1;
+ public static final int NO_CHANGES = 0;
+
+ /** Build id. */
private int buildId;
- byte status;
+ /** Status: An integer (actually byte) code from RunStat.RunStatus */
+ private byte status;
+
+ /** Change present: 0 - no changes, 1 - changes present, 2- unknown */
private byte changePresent;
- long startDate;
+ /** Build Start date as timestamp. */
+ private long startDate;
public Invocation(Integer buildId) {
this.buildId = buildId;
+ this.changePresent = CHANGE_NOT_FILLED;
}
/** {@inheritDoc} */
@@ -40,18 +55,42 @@ public class Invocation {
.toString();
}
- public void status(int failCode) {
+ public Invocation withStatus(int failCode) {
Preconditions.checkState(failCode < 128);
+ Preconditions.checkState(failCode >= 0);
+
this.status = (byte) failCode;
+
+ return this;
+ }
+
+ public byte status() {
+ return status;
}
- public void startDate(long startDateTs) {
+ public Invocation withStartDate(long startDateTs) {
this.startDate = startDateTs;
+
+ return this;
+ }
+
+ public Invocation withChanges(int[] changes) {
+ int i = changes.length > 0 ? CHANGE_PRESENT : NO_CHANGES;
+
+ Preconditions.checkState(i < 128);
+
+ this.changePresent = (byte)i;
+
+ return this;
}
- public void changesPresent(int changesPresent) {
- Preconditions.checkState(changesPresent < 128);
- this.changePresent = (byte) changesPresent;
+ public RunStat.ChangesState changesState() {
+ if (changePresent == NO_CHANGES)
+ return RunStat.ChangesState.NONE;
+ else if (changePresent == CHANGE_PRESENT)
+ return RunStat.ChangesState.EXIST;
+ else
+ return RunStat.ChangesState.UNKNOWN;
}
public boolean isFailure() {
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 7ccc0fa..ef5521f 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
@@ -75,7 +75,7 @@ public class InvocationData {
if (invocationMap.containsKey(build))
return false;
- if (isExpired(inv.startDate))
+ if (isExpired(inv.startDate()))
return false;
Invocation prevVal = invocationMap.putIfAbsent(build, inv);
@@ -92,7 +92,7 @@ public class InvocationData {
}
void removeEldiest() {
- invocationMap.entrySet().removeIf(entries ->
isExpired(entries.getValue().startDate));
+ invocationMap.entrySet().removeIf(entries ->
isExpired(entries.getValue().startDate()));
}
/**
@@ -115,7 +115,7 @@ public class InvocationData {
public int notMutedRunsCount() {
return (int)
invocations()
- .filter(invocation -> invocation.status != MUTED)
+ .filter(invocation -> invocation.status() != MUTED)
.count();
}
@@ -132,14 +132,14 @@ public class InvocationData {
* @param invocation Invocation.
*/
private boolean isActual(Invocation invocation) {
- return !isExpired(invocation.startDate);
+ return !isExpired(invocation.startDate());
}
/**
*
*/
public int failuresCount() {
- return (int)invocations().filter(inv -> inv.status == FAILURE ||
inv.status == CRITICAL_FAILURE).count();
+ return (int)invocations().filter(inv -> inv.status() == FAILURE ||
inv.status() == CRITICAL_FAILURE).count();
}
/** {@inheritDoc} */
@@ -173,7 +173,7 @@ public class InvocationData {
*/
public List<Integer> getLatestRuns() {
return invocations()
- .map(i->(int)i.status)
+ .map(i -> (int)i.status())
.collect(Collectors.toList());
}
@@ -181,6 +181,6 @@ public class InvocationData {
*
*/
public int criticalFailuresCount() {
- return (int)invocations().filter(inv -> inv.status ==
CRITICAL_FAILURE).count();
+ return (int)invocations().filter(inv -> inv.status() ==
CRITICAL_FAILURE).count();
}
}
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 23f0fa4..6b5cd92 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
@@ -20,8 +20,10 @@ package org.apache.ignite.ci.teamcity.ignited.runhist;
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import java.util.List;
+import java.util.stream.Collectors;
import javax.annotation.Nullable;
import org.apache.ignite.ci.analysis.IVersionedEntity;
+import org.apache.ignite.ci.analysis.RunStat;
import org.apache.ignite.ci.db.Persisted;
import org.apache.ignite.ci.teamcity.ignited.IRunHistory;
@@ -82,7 +84,27 @@ public class RunHistCompacted implements IVersionedEntity,
IRunHistory {
}
@Override public String getFlakyComments() {
- return null; //todo implement
+ int statusChange = 0;
+
+ Invocation prev = null;
+
+ List<Invocation> latestRuns =
data.invocations().collect(Collectors.toList());
+
+ for (Invocation cur : latestRuns) {
+ if (prev != null && cur != null) {
+ if (prev.status() != cur.status()
+ && cur.changesState() == RunStat.ChangesState.NONE
+ && prev.changesState() != RunStat.ChangesState.UNKNOWN)
+ statusChange++;
+ }
+ prev = cur;
+ }
+
+ if (statusChange < 1)
+ return null;
+
+ return "Test seems to be flaky: " +
+ "changed its status [" + statusChange + "/" + latestRuns.size() +
"] without code modifications";
}
@Override public int getCriticalFailuresCount() {
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 28130dc..e8b689a 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
@@ -98,9 +98,9 @@ public class PrChainsProcessorTest {
/** Build apache ignite: contains compilation error, should became a
blocker. */
public static final String BUILD_APACHE_IGNITE = "Build";
+ /** Builds emulated storage. */
private Map<Integer, FatBuildCompacted> apacheBuilds = new
ConcurrentHashMap<>();
-
/**
* Injector.
*/
@@ -159,7 +159,7 @@ public class PrChainsProcessorTest {
final String btId = "RunAll";
final String branch = "ignite-9542";
- initBuildChain(c, btId, branch);
+ initBuildChainAndMasterHistory(c, btId, branch);
PrChainsProcessor prcp = injector.getInstance(PrChainsProcessor.class);
final List<SuiteCurrentStatus> blockers =
prcp.getBlockersSuitesStatuses(btId,
@@ -169,16 +169,16 @@ public class PrChainsProcessorTest {
assertNotNull(blockers);
assertFalse(blockers.isEmpty());
-
assertTrue(blockers.stream().anyMatch(containsTestFail("testWithoutHistory")));
+ assertTrue(containsTestFailure(blockers, TEST_WITHOUT_HISTORY));
assertTrue(blockers.stream().anyMatch(s ->
BUILD_APACHE_IGNITE.equals(s.suiteId)));
assertTrue(blockers.stream().anyMatch(s ->
"CancelledBuild".equals(s.suiteId)));
-
assertTrue(blockers.stream().anyMatch(containsTestFail(TEST_WITH_HISTORY_PASSING_IN_MASTER)));
+ assertTrue(containsTestFailure(blockers,
TEST_WITH_HISTORY_PASSING_IN_MASTER));
if (SuiteCurrentStatus.NEW_RUN_STAT) {
-
assertFalse(blockers.stream().anyMatch(containsTestFail(TEST_WITH_HISTORY_FAILING_IN_MASTER)));
-
assertFalse(blockers.stream().anyMatch(containsTestFail(TEST_FLAKY_IN_MASTER)));
+ assertFalse(containsTestFailure(blockers,
TEST_WITH_HISTORY_FAILING_IN_MASTER));
+ assertFalse(containsTestFailure(blockers, TEST_FLAKY_IN_MASTER));
}
Optional<TestFailure> testOpt = findBlockerTestFailure(blockers,
TEST_WITH_HISTORY_PASSING_IN_MASTER);
@@ -192,12 +192,34 @@ public class PrChainsProcessorTest {
assertEquals(etalon, testOpt.get().histBaseBranch.latestRuns);
}
-
assertTrue(blockers.stream().anyMatch(containsTestFail(TEST_WAS_FIXED_IN_MASTER)));
+ assertTrue(containsTestFailure(blockers, TEST_WAS_FIXED_IN_MASTER));
if(SuiteCurrentStatus.NEW_RUN_STAT)
-
assertFalse(blockers.stream().anyMatch(containsTestFail(TEST_WITH_HISTORY_FAILING_IN_MASTER)));
+ assertFalse(containsTestFailure(blockers,
TEST_WITH_HISTORY_FAILING_IN_MASTER));
// otherwise this non-blocker will not be filtered out
-
assertTrue(blockers.stream().anyMatch(containsTestFail(TEST_WITH_HISTORY_PASSING_IN_MASTER)));
+ assertTrue(containsTestFailure(blockers,
TEST_WITH_HISTORY_PASSING_IN_MASTER));
+ }
+
+ public boolean containsTestFailure(List<SuiteCurrentStatus> blockers,
String name) {
+ return blockers.stream().anyMatch(containsTestFail(name));
+ }
+
+ @Test
+ public void testFlakyDetector() {
+ IStringCompactor c = injector.getInstance(IStringCompactor.class);
+
+ final String btId = "RunAll";
+ final String branch = "ignite-10056";
+
+ initChainForFlakyTest(c, btId, branch);
+
+ initHistory(c);
+
+ PrChainsProcessor prcp = injector.getInstance(PrChainsProcessor.class);
+ final List<SuiteCurrentStatus> blockers =
prcp.getBlockersSuitesStatuses(btId,
+ branch, SRV_ID, mock(ICredentialsProv.class));
+
+ System.out.println(blockers);
Optional<TestFailure> rareNotFlaky = findBlockerTestFailure(blockers,
TEST_RARE_FAILED_WITH_CHANGES);
assertTrue(rareNotFlaky.isPresent());
@@ -221,51 +243,13 @@ public class PrChainsProcessorTest {
});
}
- public void initBuildChain(IStringCompactor c, String btId, String branch)
{
- final FatBuildCompacted buildBuild = createFailedBuild(c,
BUILD_APACHE_IGNITE, branch, 1002, 100020);
- final ProblemOccurrence compile = new ProblemOccurrence();
- compile.setType(ProblemOccurrence.TC_COMPILATION_ERROR);
- buildBuild.addProblems(c, Collections.singletonList(compile));
-
- final FatBuildCompacted cache1 =
- createFailedBuild(c, CACHE_1, branch, 1001, 100020)
- .addTests(c,
- Lists.newArrayList(
- createFailedTest(1L, TEST_WITHOUT_HISTORY),
- createFailedTest(2L,
TEST_WITH_HISTORY_FAILING_IN_MASTER),
- createFailedTest(3L,
TEST_WITH_HISTORY_PASSING_IN_MASTER),
- createFailedTest(50L, TEST_FLAKY_IN_MASTER),
- createFailedTest(400L, TEST_WAS_FIXED_IN_MASTER)));
-
- cache1.snapshotDependencies(new int[] {buildBuild.id()});
-
-
- final FatBuildCompacted cache9 = createFailedBuild(c, CACHE_9, branch,
9001, 100090)
- .addTests(c,
- Lists.newArrayList(
- createFailedTest(1L, TEST_RARE_FAILED_WITH_CHANGES),
- createFailedTest(2L, TEST_RARE_FAILED_WITHOUT_CHANGES)));
-
- cache9.snapshotDependencies(new int[] {buildBuild.id()});
-
- final Build build = createJaxbBuild("CancelledBuild", branch, 1003,
100020, true);
-
- build.status = BuildRef.STATUS_UNKNOWN;
- build.state = BuildRef.STATE_FINISHED;
-
- final FatBuildCompacted cancelledBuild = new FatBuildCompacted(c,
build);
-
- cancelledBuild.snapshotDependencies(new int[]{buildBuild.id()});
-
- final int id = 1000;
-
- final FatBuildCompacted chain = createFailedBuild(c, btId, branch, id,
100000);
-
- chain.snapshotDependencies(new int[]{cache1.id(), cancelledBuild.id(),
cache9.id()});
+ public void initBuildChainAndMasterHistory(IStringCompactor c, String
btId, String branch) {
+ initBuildChain(c, btId, branch);
- addBuilds(chain);
- addBuilds(buildBuild, cancelledBuild, cache1, cache9);
+ initHistory(c);
+ }
+ public void initHistory(IStringCompactor c) {
for (int i = 0; i < NUM_OF_TESTS_IN_MASTER; i++) {
FatBuildCompacted cache1InMaster = createFailedBuild(c, CACHE_1,
ITeamcity.DEFAULT, 500 + i, 100000 + (i * 10000))
@@ -281,13 +265,13 @@ public class PrChainsProcessorTest {
cache1InMaster.addProblems(c,
Collections.singletonList(timeout));
}
- addBuilds(cache1InMaster);
+ addBuildsToEmulatedStor(cache1InMaster);
}
long ageMs = TimeUnit.DAYS.toMillis(InvocationData.MAX_DAYS);
for (int i = 0; i < 134; i++) {
- addBuilds(createFailedBuild(c, CACHE_1,
+ addBuildsToEmulatedStor(createFailedBuild(c, CACHE_1,
ITeamcity.DEFAULT, i, ageMs + (i * 10000))
.addTests(c, Lists.newArrayList(
createFailedTest(400L, TEST_WAS_FIXED_IN_MASTER))));
@@ -304,10 +288,9 @@ public class PrChainsProcessorTest {
createPassingTest(50L, TEST_FLAKY_IN_MASTER),
createPassingTest(400L,
TEST_WAS_FIXED_IN_MASTER)));
- addBuilds(successfull);
+ addBuildsToEmulatedStor(successfull);
}
-
for (int i = 0; i < 100; i++) {
boolean failNoChanges = i==77;
boolean failWithChanges = i==55;
@@ -320,15 +303,72 @@ public class PrChainsProcessorTest {
createTest(1L, TEST_RARE_FAILED_WITHOUT_CHANGES,
!failNoChanges),
createTest(2L, TEST_RARE_FAILED_WITH_CHANGES,
!failWithChanges)));
- if (failWithChanges)
- fatBuild.changes(new int[] {12323325, 42354326});
+ if (failWithChanges || i==56) // add change to test status change
after failure.
+ fatBuild.changes(new int[] {1000000+i, 1000020+i});
- addBuilds(fatBuild);
+ addBuildsToEmulatedStor(fatBuild);
}
+ }
+
+ public void initBuildChain(IStringCompactor c, String btId, String branch)
{
+ final FatBuildCompacted buildBuild = createFailedBuild(c,
BUILD_APACHE_IGNITE, branch, 1002, 100020);
+ final ProblemOccurrence compile = new ProblemOccurrence();
+ compile.setType(ProblemOccurrence.TC_COMPILATION_ERROR);
+ buildBuild.addProblems(c, Collections.singletonList(compile));
+
+ final FatBuildCompacted cache1 =
+ createFailedBuild(c, CACHE_1, branch, 1001, 100020)
+ .addTests(c,
+ Lists.newArrayList(
+ createFailedTest(1L, TEST_WITHOUT_HISTORY),
+ createFailedTest(2L,
TEST_WITH_HISTORY_FAILING_IN_MASTER),
+ createFailedTest(3L,
TEST_WITH_HISTORY_PASSING_IN_MASTER),
+ createFailedTest(50L, TEST_FLAKY_IN_MASTER),
+ createFailedTest(400L, TEST_WAS_FIXED_IN_MASTER)));
+
+ cache1.snapshotDependencies(new int[] {buildBuild.id()});
+
+ final Build build = createJaxbBuild("CancelledBuild", branch, 1003,
100020, true);
+ build.status = BuildRef.STATUS_UNKNOWN;
+ build.state = BuildRef.STATE_FINISHED;
+
+ final FatBuildCompacted cancelledBuild = new FatBuildCompacted(c,
build);
+
+ cancelledBuild.snapshotDependencies(new int[]{buildBuild.id()});
+
+ final int id = 1000;
+
+ FatBuildCompacted runAll = createFailedBuild(c, btId, branch, id,
100000)
+ .snapshotDependencies(new int[] {cache1.id(),
cancelledBuild.id()});
+
+ addBuildsToEmulatedStor(buildBuild, cancelledBuild, cache1, runAll);
+ }
+
+ public void initChainForFlakyTest(IStringCompactor c, String btId, String
branch) {
+ final FatBuildCompacted buildBuild = createFailedBuild(c,
BUILD_APACHE_IGNITE, branch, 1002, 100020);
+
+ final FatBuildCompacted cache9 = createFailedBuild(c, CACHE_9, branch,
9001, 100090)
+ .addTests(c,
+ Lists.newArrayList(
+ createFailedTest(1L, TEST_RARE_FAILED_WITH_CHANGES),
+ createFailedTest(2L, TEST_RARE_FAILED_WITHOUT_CHANGES)));
+
+ cache9.snapshotDependencies(new int[] {buildBuild.id()});
+
+ final FatBuildCompacted chain = createFailedBuild(c, btId, branch,
1000, 100000);
+
+ chain.snapshotDependencies(new int[]{cache9.id()});
+
+ addBuildsToEmulatedStor(buildBuild, cache9, chain);
}
- private void addBuilds(FatBuildCompacted... builds) {
+ /**
+ * Adds builds into emulated storage.
+ *
+ * @param builds Builds.
+ */
+ private void addBuildsToEmulatedStor(FatBuildCompacted... builds) {
for (FatBuildCompacted build : builds) {
final FatBuildCompacted oldB = apacheBuilds.put(build.id(), build);
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 1a7d64c..5ef838d 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
@@ -491,7 +491,7 @@ public class IgnitedTcInMemoryIntegrationTest {
final String branch = ITeamcity.DEFAULT;
final PrChainsProcessorTest tst = new PrChainsProcessorTest();
- tst.initBuildChain(c, btId, branch);
+ tst.initBuildChainAndMasterHistory(c, btId, branch);
final Map<Integer, FatBuildCompacted> buildsMap = tst.apacheBuilds();
@@ -545,7 +545,7 @@ public class IgnitedTcInMemoryIntegrationTest {
final PrChainsProcessorTest tst = new PrChainsProcessorTest();
- tst.initBuildChain(c, btId, branch);
+ tst.initBuildChainAndMasterHistory(c, btId, branch);
final Map<Integer, FatBuildCompacted> buildsMap = tst.apacheBuilds();