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 ac57ba8  IGNITE-9542 Flaky detection ported and tested, new skeletons 
for tests: provide separated base/current branch history for PR page
ac57ba8 is described below

commit ac57ba826b3419e613c1f28da993f337600007f3
Author: Dmitriy Pavlov <[email protected]>
AuthorDate: Fri Dec 7 21:12:29 2018 +0300

    IGNITE-9542 Flaky detection ported and tested, new skeletons for tests: 
provide separated base/current branch history for PR page
---
 .../java/org/apache/ignite/ci/HelperConfig.java    |  2 +-
 .../main/java/org/apache/ignite/ci/ITcHelper.java  |  2 +-
 .../main/java/org/apache/ignite/ci/TcHelper.java   |  3 +-
 .../org/apache/ignite/ci/di/IgniteTcBotModule.java |  2 +-
 .../org/apache/ignite/ci/issue/IssuesStorage.java  |  2 +-
 .../tcbot/chain/TrackedBranchChainsProcessor.java  |  4 +
 .../ignite/ci/{ => tcbot}/issue/IssueDetector.java | 21 ++++--
 .../ignite/ci/{ => tcbot}/issue/Notification.java  |  3 +-
 .../ignite/ci/web/rest/login/UserService.java      |  2 +-
 .../ci/tcbot/chain/MockBasedTcBotModule.java       | 86 ++++++++++++++++++++++
 .../ci/tcbot/chain/PrChainsProcessorTest.java      | 60 +--------------
 .../ci/tcbot/chain/TrackedBranchProcessorTest.java | 70 ++++++++++++++++++
 .../ignite/ci/tcbot/issue/IssueDetectorTest.java   | 73 ++++++++++++++++++
 13 files changed, 258 insertions(+), 72 deletions(-)

diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java
index 741d958..50207d8 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java
@@ -37,7 +37,7 @@ import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.base.Strings.isNullOrEmpty;
 
 /**
- * TC Helper Config access stuff.
+ * TC Helper Config access, tracked branches, etc stuff.
  */
 public class HelperConfig {
     public static final String CONFIG_FILE_NAME = "auth.properties";
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcHelper.java 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcHelper.java
index 481ffa1..71f9c07 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcHelper.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcHelper.java
@@ -19,7 +19,7 @@ package org.apache.ignite.ci;
 
 import java.util.Collection;
 import java.util.List;
-import org.apache.ignite.ci.issue.IssueDetector;
+import org.apache.ignite.ci.tcbot.issue.IssueDetector;
 import org.apache.ignite.ci.issue.IssuesStorage;
 import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
 import org.apache.ignite.ci.user.ICredentialsProv;
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
index 3ec2840..059e2bd 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
@@ -24,7 +24,7 @@ import java.util.Objects;
 import java.util.concurrent.atomic.AtomicBoolean;
 import javax.inject.Inject;
 import org.apache.ignite.ci.conf.BranchesTracked;
-import org.apache.ignite.ci.issue.IssueDetector;
+import org.apache.ignite.ci.tcbot.issue.IssueDetector;
 import org.apache.ignite.ci.issue.IssuesStorage;
 import org.apache.ignite.ci.jira.IJiraIntegration;
 import org.apache.ignite.ci.tcbot.chain.PrChainsProcessor;
@@ -46,7 +46,6 @@ import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.ignite.ci.analysis.RunStat.MAX_LATEST_RUNS;
 import static org.apache.ignite.ci.util.XmlUtil.xmlEscapeText;
 
 /**
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
index d714b99..b9eb2b8 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
@@ -32,7 +32,7 @@ import org.apache.ignite.ci.db.Ignite1Init;
 import org.apache.ignite.ci.di.cache.GuavaCachedModule;
 import org.apache.ignite.ci.di.scheduler.SchedulerModule;
 import org.apache.ignite.ci.github.ignited.GitHubIgnitedModule;
-import org.apache.ignite.ci.issue.IssueDetector;
+import org.apache.ignite.ci.tcbot.issue.IssueDetector;
 import org.apache.ignite.ci.jira.JiraIntegrationModule;
 import org.apache.ignite.ci.observer.BuildObserver;
 import org.apache.ignite.ci.observer.ObserverTask;
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssuesStorage.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssuesStorage.java
index 4651bb3..d542709 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssuesStorage.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssuesStorage.java
@@ -37,7 +37,7 @@ public class IssuesStorage {
     public IssuesStorage() {
     }
 
-    IgniteCache<IssueKey, Issue> cache() {
+    public IgniteCache<IssueKey, Issue> cache() {
         return botDetectedIssuesCache(getIgnite());
     }
 
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
index da4188b..fc9cf12 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
@@ -41,7 +41,11 @@ import org.jetbrains.annotations.Nullable;
 
 import static com.google.common.base.Strings.isNullOrEmpty;
 
+/**
+ * Process failures for some setup tracked branch, which may be 
triggered/monitored by TC Bot.
+ */
 public class TrackedBranchChainsProcessor {
+    /** TC Server prov. */
     @Inject private ITcServerProvider srvProv;
     @Inject private ITeamcityIgnitedProvider tcIgnitedProv;
 
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssueDetector.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/IssueDetector.java
similarity index 96%
rename from 
ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssueDetector.java
rename to 
ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/IssueDetector.java
index fbe54eb..b8e47e3 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssueDetector.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/IssueDetector.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.ci.issue;
+package org.apache.ignite.ci.tcbot.issue;
 
 import com.google.common.base.Strings;
 
@@ -35,6 +35,11 @@ import javax.inject.Provider;
 import org.apache.ignite.ci.HelperConfig;
 import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
 import org.apache.ignite.ci.ITcHelper;
+import org.apache.ignite.ci.issue.EventTemplate;
+import org.apache.ignite.ci.issue.EventTemplates;
+import org.apache.ignite.ci.issue.Issue;
+import org.apache.ignite.ci.issue.IssueKey;
+import org.apache.ignite.ci.issue.IssuesStorage;
 import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
@@ -83,7 +88,7 @@ public class IssueDetector {
 
     @Inject private Provider<CheckQueueJob> checkQueueJobProv;
 
-    /** TrackedBranch Processor. */
+    /** Tracked Branch Processor. */
     @Inject private TrackedBranchChainsProcessor tbProc;
 
     /** Tc helper. */
@@ -101,16 +106,18 @@ public class IssueDetector {
     private final AtomicBoolean sndNotificationGuard = new AtomicBoolean();
 
 
-    private void registerIssuesAndNotifyLater(TestFailuresSummary res,
+    private String registerIssuesAndNotifyLater(TestFailuresSummary res,
         ICredentialsProv creds) {
 
         if (creds == null)
-            return;
+            return null;
 
-        registerNewIssues(res, creds);
+        String newIssues = registerNewIssues(res, creds);
 
         if (sndNotificationGuard.compareAndSet(false, true))
             executorService.schedule(this::sendNewNotifications, 90, 
TimeUnit.SECONDS);
+
+        return newIssues;
     }
 
 
@@ -446,9 +453,9 @@ public class IssueDetector {
                         backgroundOpsCreds
                 );
 
-        registerIssuesAndNotifyLater(failures, backgroundOpsCreds);
+        String issResult = registerIssuesAndNotifyLater(failures, 
backgroundOpsCreds);
 
-        return "Tests " + failures.failedTests + " Suites " + 
failures.failedToFinish + " were checked";
+        return "Tests " + failures.failedTests + " Suites " + 
failures.failedToFinish + " were checked. " + issResult;
     }
 
     public void stop() {
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/Notification.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/Notification.java
similarity index 98%
rename from 
ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/Notification.java
rename to 
ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/Notification.java
index fe5f7d1..e385e7e 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/Notification.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/Notification.java
@@ -15,10 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.ci.issue;
+package org.apache.ignite.ci.tcbot.issue;
 
 import java.util.*;
 
+import org.apache.ignite.ci.issue.Issue;
 import org.apache.ignite.ci.util.TimeUtil;
 import org.apache.ignite.ci.web.model.Version;
 
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java
index a44df25..0b6e12a 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java
@@ -32,7 +32,7 @@ import javax.ws.rs.core.Context;
 import javax.ws.rs.core.Form;
 import javax.ws.rs.core.MediaType;
 import org.apache.ignite.ci.ITcHelper;
-import org.apache.ignite.ci.issue.IssueDetector;
+import org.apache.ignite.ci.tcbot.issue.IssueDetector;
 import org.apache.ignite.ci.tcbot.visa.TcBotTriggerAndSignOffService;
 import org.apache.ignite.ci.tcmodel.user.User;
 import org.apache.ignite.ci.teamcity.pure.ITcLogin;
diff --git 
a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/MockBasedTcBotModule.java
 
b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/MockBasedTcBotModule.java
new file mode 100644
index 0000000..960674e
--- /dev/null
+++ 
b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/MockBasedTcBotModule.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.ci.tcbot.chain;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.internal.SingletonScope;
+import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
+import org.apache.ignite.ci.github.PullRequest;
+import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
+import org.apache.ignite.ci.github.ignited.IGitHubConnIgnitedProvider;
+import org.apache.ignite.ci.github.pure.IGitHubConnection;
+import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
+import org.apache.ignite.ci.jira.IJiraIntegration;
+import org.apache.ignite.ci.jira.IJiraIntegrationProvider;
+import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
+import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
+import org.apache.ignite.ci.teamcity.ignited.InMemoryStringCompactor;
+import org.apache.ignite.ci.teamcity.ignited.TeamcityIgnitedProviderMock;
+import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
+import org.apache.ignite.ci.user.ICredentialsProv;
+import org.mockito.Mockito;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+/**
+ * Setup TC bot context with Ignited services mocks:
+ * - TC: {@link TeamcityIgnitedProviderMock}
+ */
+public class MockBasedTcBotModule extends AbstractModule {
+    /** {@inheritDoc} */
+    @Override protected void configure() {
+        bind(IStringCompactor.class).to(InMemoryStringCompactor.class).in(new 
SingletonScope());
+
+        final IGitHubConnectionProvider ghProv = 
Mockito.mock(IGitHubConnectionProvider.class);
+        bind(IGitHubConnectionProvider.class).toInstance(ghProv);
+        
when(ghProv.server(anyString())).thenReturn(Mockito.mock(IGitHubConnection.class));
+
+        final IGitHubConnIgnitedProvider gitHubConnIgnitedProvider = 
Mockito.mock(IGitHubConnIgnitedProvider.class);
+
+        
bind(IGitHubConnIgnitedProvider.class).toInstance(gitHubConnIgnitedProvider);
+
+        IGitHubConnIgnited gitHubConnIgnited = 
Mockito.mock(IGitHubConnIgnited.class);
+
+        PullRequest pullReq = Mockito.mock(PullRequest.class);
+
+        when(pullReq.getTitle()).thenReturn("");
+
+        
when(gitHubConnIgnited.getPullRequest(anyString())).thenReturn(pullReq);
+
+        
when(gitHubConnIgnitedProvider.server(anyString())).thenReturn(gitHubConnIgnited);
+
+        final IJiraIntegrationProvider jiraProv = 
Mockito.mock(IJiraIntegrationProvider.class);
+
+        bind(IJiraIntegrationProvider.class).toInstance(jiraProv);
+
+        
when(jiraProv.server(anyString())).thenReturn(Mockito.mock(IJiraIntegration.class));
+
+        
bind(ITeamcityIgnitedProvider.class).to(TeamcityIgnitedProviderMock.class).in(new
 SingletonScope());
+
+        final ITcServerProvider tcSrvOldProv = 
Mockito.mock(ITcServerProvider.class);
+
+        final IAnalyticsEnabledTeamcity tcOld = 
BuildChainProcessorTest.tcOldMock();
+        when(tcSrvOldProv.server(anyString(), 
any(ICredentialsProv.class))).thenReturn(tcOld);
+
+        bind(ITcServerProvider.class).toInstance(tcSrvOldProv);
+
+        super.configure();
+    }
+}
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 e8b689a..53670b6 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
@@ -18,10 +18,8 @@ package org.apache.ignite.ci.tcbot.chain;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
-import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.internal.SingletonScope;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -30,16 +28,8 @@ import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Predicate;
-import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
-import org.apache.ignite.ci.github.PullRequest;
 import org.apache.ignite.ci.ITeamcity;
 import org.apache.ignite.ci.analysis.RunStat;
-import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
-import org.apache.ignite.ci.github.ignited.IGitHubConnIgnitedProvider;
-import org.apache.ignite.ci.github.pure.IGitHubConnection;
-import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
-import org.apache.ignite.ci.jira.IJiraIntegration;
-import org.apache.ignite.ci.jira.IJiraIntegrationProvider;
 import org.apache.ignite.ci.tcmodel.conf.BuildType;
 import org.apache.ignite.ci.tcmodel.hist.BuildRef;
 import org.apache.ignite.ci.tcmodel.result.Build;
@@ -49,28 +39,22 @@ import 
org.apache.ignite.ci.tcmodel.result.tests.TestOccurrenceFull;
 import org.apache.ignite.ci.tcmodel.result.tests.TestRef;
 import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
-import org.apache.ignite.ci.teamcity.ignited.InMemoryStringCompactor;
 import org.apache.ignite.ci.teamcity.ignited.TeamcityIgnitedProviderMock;
 import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
 import org.apache.ignite.ci.teamcity.ignited.runhist.InvocationData;
-import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
 import org.apache.ignite.ci.user.ICredentialsProv;
 import org.apache.ignite.ci.web.model.current.SuiteCurrentStatus;
 import org.apache.ignite.ci.web.model.current.TestFailure;
 import org.jetbrains.annotations.NotNull;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.Mockito;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * Unit test for {@link PrChainsProcessor} and blockers detection.
@@ -104,48 +88,9 @@ public class PrChainsProcessorTest {
     /**
      * Injector.
      */
-    private Injector injector = Guice.createInjector(new AbstractModule() {
-        @Override
-        protected void configure() {
-            
bind(IStringCompactor.class).to(InMemoryStringCompactor.class).in(new 
SingletonScope());
-
-            final IGitHubConnectionProvider ghProv = 
Mockito.mock(IGitHubConnectionProvider.class);
-            bind(IGitHubConnectionProvider.class).toInstance(ghProv);
-            
when(ghProv.server(anyString())).thenReturn(Mockito.mock(IGitHubConnection.class));
-
-            final IGitHubConnIgnitedProvider gitHubConnIgnitedProvider = 
Mockito.mock(IGitHubConnIgnitedProvider.class);
-
-            
bind(IGitHubConnIgnitedProvider.class).toInstance(gitHubConnIgnitedProvider);
-
-            IGitHubConnIgnited gitHubConnIgnited = 
Mockito.mock(IGitHubConnIgnited.class);
-
-            PullRequest pullReq = Mockito.mock(PullRequest.class);
-
-            when(pullReq.getTitle()).thenReturn("");
-
-            
when(gitHubConnIgnited.getPullRequest(anyString())).thenReturn(pullReq);
-
-            
when(gitHubConnIgnitedProvider.server(anyString())).thenReturn(gitHubConnIgnited);
-
-            final IJiraIntegrationProvider jiraProv = 
Mockito.mock(IJiraIntegrationProvider.class);
-
-            bind(IJiraIntegrationProvider.class).toInstance(jiraProv);
-
-            
when(jiraProv.server(anyString())).thenReturn(Mockito.mock(IJiraIntegration.class));
-
-            
bind(ITeamcityIgnitedProvider.class).to(TeamcityIgnitedProviderMock.class).in(new
 SingletonScope());
-
-            final ITcServerProvider tcSrvOldProv = 
Mockito.mock(ITcServerProvider.class);
-
-            final IAnalyticsEnabledTeamcity tcOld = 
BuildChainProcessorTest.tcOldMock();
-            when(tcSrvOldProv.server(anyString(), 
any(ICredentialsProv.class))).thenReturn(tcOld);
-
-            bind(ITcServerProvider.class).toInstance(tcSrvOldProv);
-
-            super.configure();
-        }
-    });
+    private Injector injector = Guice.createInjector(new 
MockBasedTcBotModule());
 
+    /** */
     @Before
     public void initBuilds() {
         final TeamcityIgnitedProviderMock instance = 
(TeamcityIgnitedProviderMock) 
injector.getInstance(ITeamcityIgnitedProvider.class);
@@ -429,4 +374,5 @@ public class PrChainsProcessorTest {
     public Map<Integer, FatBuildCompacted> apacheBuilds() {
         return apacheBuilds;
     }
+
 }
diff --git 
a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchProcessorTest.java
 
b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchProcessorTest.java
new file mode 100644
index 0000000..07ce028
--- /dev/null
+++ 
b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchProcessorTest.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.ci.tcbot.chain;
+
+import com.google.gson.Gson;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
+import org.apache.ignite.ci.teamcity.ignited.TeamcityIgnitedProviderMock;
+import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
+import org.apache.ignite.ci.user.ICredentialsProv;
+import org.apache.ignite.ci.web.model.current.TestFailuresSummary;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.mockito.Mockito.mock;
+
+/**
+ * Tests {@link TrackedBranchChainsProcessor}
+ */
+public class TrackedBranchProcessorTest {
+    public static final String SRV_ID = "apache";
+    /** Builds emulated storage. */
+    private Map<Integer, FatBuildCompacted> apacheBuilds = new 
ConcurrentHashMap<>();
+
+    /**
+     * Injector.
+     */
+    private Injector injector = Guice.createInjector(new 
MockBasedTcBotModule());
+
+    /** */
+    @Before
+    public void initBuilds() {
+        final TeamcityIgnitedProviderMock instance = 
(TeamcityIgnitedProviderMock) 
injector.getInstance(ITeamcityIgnitedProvider.class);
+        instance.addServer(SRV_ID, apacheBuilds);
+    }
+
+    @Test
+    public void testTrackedBranchChainsProcessor() {
+        TrackedBranchChainsProcessor tbProc = 
injector.getInstance(TrackedBranchChainsProcessor.class);
+
+        String brachName = "master"; //todo use separate branch e.g. 
masterForTests
+        TestFailuresSummary failures = 
tbProc.getTrackedBranchTestFailures(brachName,
+            false,
+            1,
+            mock(ICredentialsProv.class)
+        );
+
+        System.out.println(new Gson().toJson(failures));
+
+    }
+
+}
diff --git 
a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/issue/IssueDetectorTest.java
 
b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/issue/IssueDetectorTest.java
new file mode 100644
index 0000000..0ad7865
--- /dev/null
+++ 
b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/issue/IssueDetectorTest.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.ci.tcbot.issue;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import org.apache.ignite.ci.tcbot.chain.MockBasedTcBotModule;
+import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
+import org.apache.ignite.ci.teamcity.ignited.TeamcityIgnitedProviderMock;
+import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class IssueDetectorTest {
+    public static final String SRV_ID = "apache";
+    /** Builds emulated storage. */
+    private Map<Integer, FatBuildCompacted> apacheBuilds = new 
ConcurrentHashMap<>();
+
+    /**
+     * Injector.
+     */
+    private Injector injector = Guice.createInjector(new 
MockBasedTcBotModule());
+
+    /** */
+    @Before
+    public void initBuilds() {
+        final TeamcityIgnitedProviderMock instance = 
(TeamcityIgnitedProviderMock) 
injector.getInstance(ITeamcityIgnitedProvider.class);
+        instance.addServer(SRV_ID, apacheBuilds);
+    }
+
+    @Test
+    @Ignore
+    public void testDetector() {
+        IssueDetector issueDetector = 
injector.getInstance(IssueDetector.class);
+
+        String masterStatus = issueDetector.checkFailuresEx("master");
+
+        System.out.println(masterStatus);
+        /* todo: implement users/issue test only storeages
+        1) No implementation for org.apache.ignite.Ignite was bound.
+  while locating com.google.inject.Provider<org.apache.ignite.Ignite>
+    for field at 
org.apache.ignite.ci.issue.IssuesStorage.igniteProvider(IssuesStorage.java:37)
+
+2) No implementation for org.apache.ignite.ci.ITcHelper was bound.
+  while locating org.apache.ignite.ci.ITcHelper
+
+3) No implementation for org.apache.ignite.Ignite was bound.
+  while locating com.google.inject.Provider<org.apache.ignite.Ignite>
+         */
+    }
+
+}

Reply via email to