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/30 15:10:21 UTC
[ignite-teamcity-bot] 02/02: IGNITE-10071 Test reproducing issue
was added.
This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch ignite-10071
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
commit 275a14d64db4f296002a5277604866784e9fc6b4
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Fri Nov 30 18:10:16 2018 +0300
IGNITE-10071 Test reproducing issue was added.
---
.../ignite/ci/teamcity/ignited/BuildRefDao.java | 12 ++++--
.../ignited/fatbuild/ProactiveFatBuildSync.java | 2 +
.../ignited/IgnitedTcInMemoryIntegrationTest.java | 45 ++++++++++++++++++++++
3 files changed, 55 insertions(+), 4 deletions(-)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/BuildRefDao.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/BuildRefDao.java
index 5e4a1cb..cbb4645 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/BuildRefDao.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/BuildRefDao.java
@@ -86,7 +86,7 @@ public class BuildRefDao {
* @param ghData Gh data.
*/
@AutoProfiling
- public Set<Long> saveChunk(long srvId, List<BuildRef> ghData) {
+ public Set<Long> saveChunk(int srvId, List<BuildRef> ghData) {
Set<Long> ids = ghData.stream().map(BuildRef::getId)
.filter(Objects::nonNull)
.map(buildId -> buildIdToCacheKey(srvId, buildId))
@@ -228,12 +228,16 @@ public class BuildRefDao {
public int[] getAllIds(int srvId) {
GridIntList res = new GridIntList(buildRefsCache.size());
- StreamSupport.stream(buildRefsCache.spliterator(), false)
- .map(Cache.Entry::getKey)
- .filter(entry -> isKeyForServer(entry, srvId))
+ getAllBuilds(srvId)
.map(BuildRefDao::cacheKeyToBuildId)
.forEach(res::add);
return res.array();
}
+
+ @NotNull public Stream<Long> getAllBuilds(int srvId) {
+ return StreamSupport.stream(buildRefsCache.spliterator(), false)
+ .map(Cache.Entry::getKey)
+ .filter(entry -> isKeyForServer(entry, srvId));
+ }
}
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 6a63289..3cd1a5d 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
@@ -130,6 +130,8 @@ public class ProactiveFatBuildSync {
int totalAskedToLoad = 0;
for (int buildRefKey : buildRefKeys) {
+ //todo
+ // !existingBuild.isRunning(compactor) && !existingBuild.isQueued(compactor);
if (!fatBuildDao.containsKey(srvIdMaskHigh, buildRefKey))
buildsIdsToLoad.add(buildRefKey);
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 c472447..a9140e5 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
@@ -33,6 +33,7 @@ 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.IAnalyticsEnabledTeamcity;
import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.analysis.SuiteInBranch;
import org.apache.ignite.ci.analysis.TestInBranch;
@@ -54,10 +55,12 @@ import org.apache.ignite.ci.tcmodel.result.tests.TestOccurrencesFull;
import org.apache.ignite.ci.teamcity.ignited.buildtype.BuildTypeRefCompacted;
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.BuildHistoryEmulator;
import org.apache.ignite.ci.teamcity.pure.ITeamcityHttpConnection;
+import org.apache.ignite.ci.teamcity.restcached.ITcServerFactory;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.util.XmlUtil;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -69,6 +72,7 @@ import org.junit.Test;
import org.mockito.Mockito;
import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertTrue;
import static org.apache.ignite.ci.HelperConfig.ensureDirExist;
@@ -535,6 +539,47 @@ public class IgnitedTcInMemoryIntegrationTest {
assertEquals(0.5, testRunHist.getFailRate(), 0.1);
}
+ @Test
+ public void testQueuedBuildsRemoved() {
+ TeamcityIgnitedModule module = new TeamcityIgnitedModule();
+ module.overrideHttp(new ITeamcityHttpConnection() {
+ @Override public InputStream sendGet(String basicAuthTok, String url) throws IOException {
+ throw new FileNotFoundException(url);
+ }
+ });
+ Injector injector = Guice.createInjector(module, new IgniteAndShedulerTestModule());
+ IStringCompactor c = injector.getInstance(IStringCompactor.class);
+ BuildRefDao buildRefDao = injector.getInstance(BuildRefDao.class);
+ buildRefDao.init();
+ injector.getInstance(FatBuildDao.class).init();
+
+ int buildId = 1000042;
+ BuildRef ref = new BuildRef();
+ ref.buildTypeId = "Testbuild";
+ ref.branchName = ITeamcity.REFS_HEADS_MASTER;
+ ref.state = BuildRef.STATE_QUEUED;
+ ref.setId(buildId);
+ String srvId = APACHE;
+ int srvIdInt = ITeamcityIgnited.serverIdToInt(srvId);
+ buildRefDao.saveChunk(srvIdInt, Collections.singletonList(ref));
+
+ ITcServerFactory srvFactory = injector.getInstance(ITcServerFactory.class);
+ IAnalyticsEnabledTeamcity srv = srvFactory.createServer(srvId);
+
+ List<BuildRefCompacted> running = buildRefDao.getQueuedAndRunning(srvIdInt);
+ assertNotNull(running);
+ assertFalse(running.isEmpty());
+
+ System.out.println("Running builds: " + running);
+
+ ProactiveFatBuildSync buildSync = injector.getInstance(ProactiveFatBuildSync.class);
+ buildSync.invokeLaterFindMissingByBuildRef(srvId, srv);
+
+ List<BuildRefCompacted> running2 = buildRefDao.getQueuedAndRunning(srvIdInt);
+ assertNotNull(running2);
+ assertTrue(running2.isEmpty());
+ }
+
/**
*
*/