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 2019/02/05 18:18:54 UTC

[ignite-teamcity-bot] branch master updated: Tests fix after aliases implementation; code style changes

This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git


The following commit(s) were added to refs/heads/master by this push:
     new af575d5  Tests fix after aliases implementation; code style changes
af575d5 is described below

commit af575d5a4e5fd8d3703c07f5650ed635ec70270e
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Tue Feb 5 21:18:51 2019 +0300

    Tests fix after aliases implementation; code style changes
---
 .../java/org/apache/ignite/ci/HelperConfig.java    |  3 +-
 .../apache/ignite/ci/IgniteTeamcityConnection.java | 23 +++++---
 .../apache/ignite/ci/jira/ignited/JiraIgnited.java | 10 ++--
 .../ignite/ci/jira/pure/IJiraIntegration.java      |  7 ---
 .../java/org/apache/ignite/ci/jira/pure/Jira.java  |  5 --
 .../ignite/ci/tcbot/chain/PrChainsProcessor.java   | 39 ++++++-------
 .../ignite/ci/tcbot/conf/IJiraServerConfig.java    | 12 ++--
 .../ignite/ci/tcbot/conf/ITcServerConfig.java      |  8 ++-
 .../ignite/ci/tcbot/conf/JiraServerConfig.java     |  3 +-
 .../ignite/ci/tcbot/conf/TcServerConfig.java       | 28 +++++++--
 .../model/current/ChainAtServerCurrentStatus.java  |  8 +--
 .../ignite/ci/web/model/current/UpdateInfo.java    |  5 +-
 .../ci/tcbot/chain/MockBasedTcBotModule.java       | 67 +++++++++++++++-------
 .../ignited/IgnitedTcInMemoryIntegrationTest.java  | 21 +++++--
 .../ci/teamcity/pure/BuildHistoryEmulator.java     | 16 +++---
 15 files changed, 154 insertions(+), 101 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 b1e4c85..f828c57 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
@@ -224,8 +224,7 @@ public class HelperConfig {
         }
     }
 
-    @NotNull static File resolveLogs(File workDir, Properties props) {
-        final String logsProp = props.getProperty(LOGS, "logs");
+    @NotNull static File resolveLogs(File workDir, String logsProp) {
         final File logsDirFileConfigured = new File(logsProp);
         return logsDirFileConfigured.isAbsolute() ? logsDirFileConfigured : new File(workDir, logsProp);
     }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityConnection.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityConnection.java
index 241d5d0..7e1cba0 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityConnection.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityConnection.java
@@ -121,20 +121,25 @@ public class IgniteTeamcityConnection implements ITeamcity {
 
         this.host = tcCfg.host();
 
-        try {
-            if (!Strings.isNullOrEmpty(props.getProperty(HelperConfig.USERNAME))
+        if (props != null) {
+            try {
+                if (!Strings.isNullOrEmpty(props.getProperty(HelperConfig.USERNAME))
                     && props.getProperty(HelperConfig.ENCODED_PASSWORD) != null)
-                setAuthToken(HelperConfig.prepareBasicHttpAuthToken(props, "TC Config"));
-        } catch (Exception e) {
-            e.printStackTrace();
-            logger.error("Failed to set credentials", e);
+                    setAuthToken(HelperConfig.prepareBasicHttpAuthToken(props, "TC Config"));
+            }
+            catch (Exception e) {
+                e.printStackTrace();
+                logger.error("Failed to set credentials", e);
+            }
         }
-        final File workDir = HelperConfig.resolveWorkDir();
-        final File logsDirFile = HelperConfig.resolveLogs(workDir, props);
+
+        final File logsDirFile = HelperConfig.resolveLogs(
+            HelperConfig.resolveWorkDir(),
+            tcCfg.logsDirectory());
 
         logsDir = ensureDirExist(logsDirFile);
 
-        this.executor =  MoreExecutors.directExecutor();
+        this.executor = MoreExecutors.directExecutor();
     }
 
     /** {@inheritDoc} */
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java
index fd3d7b9..d02c385 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java
@@ -37,8 +37,8 @@ class JiraIgnited implements IJiraIgnited {
     /** Jira ticket Sync. */
     @Inject private JiraTicketSync jiraTicketSync;
 
-    /** Server id. */
-    private String srvId;
+    /** Server internal ID to bind services. */
+    private String srvCode;
 
     /** Server id mask high. */
     private int srvIdMaskHigh;
@@ -49,9 +49,9 @@ class JiraIgnited implements IJiraIgnited {
     public void init(IJiraIntegration jira) {
         this.jira = jira;
 
-        srvId = jira.getServiceId();
+        srvCode = jira.config().getCode();
 
-        srvIdMaskHigh = ITeamcityIgnited.serverIdToInt(srvId);
+        srvIdMaskHigh = ITeamcityIgnited.serverIdToInt(srvCode);
 
         jiraTicketDao.init();
     }
@@ -59,7 +59,7 @@ class JiraIgnited implements IJiraIgnited {
 
     /** {@inheritDoc} */
     @Override public Set<Ticket> getTickets() {
-        jiraTicketSync.ensureActualizeJiraTickets(srvId);
+        jiraTicketSync.ensureActualizeJiraTickets(srvCode);
 
         return jiraTicketDao.getTickets(srvIdMaskHigh, jira.config().projectCodeForVisa());
     }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
index 210478f..1af7fdc 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
@@ -20,24 +20,17 @@ package org.apache.ignite.ci.jira.pure;
 import java.io.IOException;
 import org.apache.ignite.ci.jira.Tickets;
 import org.apache.ignite.ci.tcbot.conf.IJiraServerConfig;
-import org.jetbrains.annotations.NotNull;
 
 /**
  * Reperesents methods to provide interaction with Jira servers.
  */
 public interface IJiraIntegration {
-
     /**
      * @return Internal identified service ID.
      */
     public void init(String srvId);
 
     /**
-     * @return Internal identified service ID.
-     */
-    public String getServiceId();
-
-    /**
      * @param ticket JIRA ticket full name. E.g 'IGNITE-5555'.
      * @param comment Comment to be placed in the ticket conversation.
      * @return {@code True} if ticket was succesfully commented. Otherwise - {@code false}.
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java
index f43ea72..33f9d8d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java
@@ -124,9 +124,4 @@ class Jira implements IJiraIntegration {
     public String sendGetToJira(String url) throws IOException {
         return HttpUtil.sendGetToJira(config().decodedHttpAuthToken(), restApiUrl() + url);
     }
-
-    /** {@inheritDoc} */
-    @Override public String getServiceId() {
-        return srvId;
-    }
 }
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 adf2508..a471107 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
@@ -19,26 +19,29 @@ package org.apache.ignite.ci.tcbot.chain;
 import com.google.common.base.Strings;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import javax.inject.Inject;
 import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
+import org.apache.ignite.ci.ITeamcity;
+import org.apache.ignite.ci.analysis.FullChainRunCtx;
 import org.apache.ignite.ci.analysis.MultBuildRunCtx;
+import org.apache.ignite.ci.analysis.mode.LatestRebuildMode;
+import org.apache.ignite.ci.analysis.mode.ProcessLogsMode;
+import org.apache.ignite.ci.di.AutoProfiling;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnitedProvider;
-import org.apache.ignite.ci.jira.pure.IJiraIntegration;
-import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
+import org.apache.ignite.ci.github.pure.IGitHubConnection;
+import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
+import org.apache.ignite.ci.jira.ignited.IJiraIgnited;
+import org.apache.ignite.ci.jira.ignited.IJiraIgnitedProvider;
 import org.apache.ignite.ci.tcbot.visa.BranchTicketMatcher;
 import org.apache.ignite.ci.tcmodel.result.problems.ProblemOccurrence;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
 import org.apache.ignite.ci.teamcity.ignited.SyncMode;
 import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
-import org.apache.ignite.ci.ITeamcity;
-import org.apache.ignite.ci.analysis.FullChainRunCtx;
-import org.apache.ignite.ci.analysis.mode.LatestRebuildMode;
-import org.apache.ignite.ci.analysis.mode.ProcessLogsMode;
-import org.apache.ignite.ci.di.AutoProfiling;
-import org.apache.ignite.ci.github.pure.IGitHubConnection;
-import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
 import org.apache.ignite.ci.user.ICredentialsProv;
 import org.apache.ignite.ci.web.model.current.ChainAtServerCurrentStatus;
 import org.apache.ignite.ci.web.model.current.SuiteCurrentStatus;
@@ -47,31 +50,27 @@ import org.apache.ignite.ci.web.model.current.TestFailuresSummary;
 import org.apache.ignite.ci.web.rest.parms.FullQueryParams;
 import org.jetbrains.annotations.Nullable;
 
-import javax.inject.Inject;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
-
 /**
  * Process pull request/untracked branch chain at particular server.
  */
 public class PrChainsProcessor {
     /** Build chain processor. */
-    @Inject BuildChainProcessor buildChainProcessor;
+    @Inject private BuildChainProcessor buildChainProcessor;
 
     /** Tc server provider. */
-    @Inject ITcServerProvider tcSrvProvider;
+    @Inject private ITcServerProvider tcSrvProvider;
 
     /** Tc server provider. */
-    @Inject ITeamcityIgnitedProvider tcIgnitedProvider;
+    @Inject private ITeamcityIgnitedProvider tcIgnitedProvider;
 
     /** Git hub connection provider. */
-    @Inject IGitHubConnectionProvider gitHubConnProvider;
+    @Inject private IGitHubConnectionProvider gitHubConnProvider;
 
     /** */
-    @Inject IGitHubConnIgnitedProvider gitHubConnIgnitedProvider;
+    @Inject private IGitHubConnIgnitedProvider gitHubConnIgnitedProvider;
 
     /** */
-    @Inject IJiraIntegrationProvider jiraIntegrationProvider;
+    @Inject private IJiraIgnitedProvider jiraIgnProv;
 
     @Inject private BranchTicketMatcher ticketMatcher;
 
@@ -109,7 +108,7 @@ public class PrChainsProcessor {
 
         IGitHubConnIgnited gitHubConnIgnited = gitHubConnIgnitedProvider.server(srvId);
 
-        IJiraIntegration jiraIntegration = jiraIntegrationProvider.server(srvId);
+        IJiraIgnited jiraIntegration = jiraIgnProv.server(srvId);
 
         res.setJavaFlags(teamcity, gitHubConn, jiraIntegration);
 
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java
index 7e87a88..a48b0f8 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java
@@ -24,6 +24,11 @@ import org.jetbrains.annotations.Nullable;
  */
 public interface IJiraServerConfig {
     /**
+     * @return Service ID or server code, internally identified, any string configured.
+     */
+    public String getCode();
+
+    /**
      * Return JIRA URL, e.g. https://issues.apache.org/jira/
      */
     public String getUrl();
@@ -36,11 +41,9 @@ public interface IJiraServerConfig {
     /**
      * @return PR name and branch name matching number prefix
      */
-    @Nullable
-    public String branchNumPrefix();
+    @Nullable public String branchNumPrefix();
 
-    @Nullable
-    public String decodedHttpAuthToken();
+    @Nullable public String decodedHttpAuthToken();
 
     /**
      * @return {@code True} if JIRA authorization token is available.
@@ -48,4 +51,5 @@ public interface IJiraServerConfig {
     public default boolean isJiraTokenAvailable() {
         return !Strings.isNullOrEmpty(decodedHttpAuthToken());
     }
+
 }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
index 36243fb..8f65ee8 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
@@ -17,6 +17,8 @@
 package org.apache.ignite.ci.tcbot.conf;
 
 import java.util.Properties;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * Teamcity Server configuration.
@@ -28,7 +30,9 @@ public interface ITcServerConfig {
     /**
      * @return Another TC Server (service) config name to use settings from. Filled only for server aliases.
      */
-    public String reference();
+    @Nullable public String reference();
 
-    public String host();
+    @NotNull public String host();
+
+    @NotNull public String logsDirectory();
 }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/JiraServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/JiraServerConfig.java
index 66a457a..d67cdc0 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/JiraServerConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/JiraServerConfig.java
@@ -76,7 +76,8 @@ public class JiraServerConfig implements IJiraServerConfig {
         this.props = props;
     }
 
-    public String getCode() {
+    /** {@inheritDoc} */
+    @Override public String getCode() {
         return code;
     }
 
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
index 1386395..81ceea2 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
@@ -41,6 +41,9 @@ public class TcServerConfig implements ITcServerConfig {
     /** Host. */
     @Nullable private String host;
 
+    /** Downloaded build logs relative path. */
+    @Nullable private String logsDir;
+
     public TcServerConfig() {
 
     }
@@ -74,18 +77,31 @@ public class TcServerConfig implements ITcServerConfig {
         return hostConf + (hostConf.endsWith("/") ? "" : "/");
     }
 
+    /** {@inheritDoc} */
+    @Override public String logsDirectory() {
+        String dfltLogs = (Strings.isNullOrEmpty(getCode()) ? "" : code + "_") + "logs";
+
+        if (!Strings.isNullOrEmpty(logsDir))
+            return logsDir;
+
+        return props != null
+            ? props.getProperty(HelperConfig.LOGS, dfltLogs)
+            : dfltLogs;
+
+    }
+
     /**
      * Configured value for host.
      */
     @NotNull
     private String hostConfigured() {
-        if (Strings.isNullOrEmpty(host)) {
-            return props != null
-                ? props.getProperty(HelperConfig.HOST, DEFAULT_HOST)
-                : DEFAULT_HOST;
-        }
+        if (!Strings.isNullOrEmpty(host))
+            return host;
+
+        return props != null
+            ? props.getProperty(HelperConfig.HOST, DEFAULT_HOST)
+            : DEFAULT_HOST;
 
-        return host;
     }
 
     /**
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java
index 9ffcf73..39567a8 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java
@@ -32,6 +32,7 @@ import org.apache.ignite.ci.analysis.MultBuildRunCtx;
 import org.apache.ignite.ci.github.PullRequest;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
 import org.apache.ignite.ci.github.pure.IGitHubConnection;
+import org.apache.ignite.ci.jira.ignited.IJiraIgnited;
 import org.apache.ignite.ci.jira.pure.IJiraIntegration;
 import org.apache.ignite.ci.tcbot.visa.BranchTicketMatcher;
 import org.apache.ignite.ci.tcmodel.conf.BuildType;
@@ -122,13 +123,13 @@ public class ChainAtServerCurrentStatus {
 
     /** */
     public void initJiraAndGitInfo(BranchTicketMatcher ticketMatcher,
-                                   IJiraIntegration jiraIntegration,
+                                   IJiraIgnited jiraIntegration,
                                    IGitHubConnIgnited gitHubConnIgnited) {
 
         String ticketFullName = null;
         try {
             ticketFullName = ticketMatcher
-                    .resolveTicketFromBranch(jiraIntegration.getServiceId(),
+                    .resolveTicketFromBranch(jiraIntegration.config().getCode(),
                             null,
                             branchName);
         } catch (BranchTicketMatcher.TicketNotFoundException ignore) {
@@ -142,9 +143,8 @@ public class ChainAtServerCurrentStatus {
         if (prNum != null) {
             PullRequest pullReq = gitHubConnIgnited.getPullRequest(prNum);
 
-            if (pullReq != null && pullReq.getTitle() != null) {
+            if (pullReq != null && pullReq.getTitle() != null)
                 prUrl = pullReq.htmlUrl();
-            }
         }
 
         if (!Strings.isNullOrEmpty(ticketFullName))
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/UpdateInfo.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/UpdateInfo.java
index 5de0f23..16ff4e5 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/UpdateInfo.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/UpdateInfo.java
@@ -19,6 +19,7 @@ package org.apache.ignite.ci.web.model.current;
 
 import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
 import org.apache.ignite.ci.github.pure.IGitHubConnection;
+import org.apache.ignite.ci.jira.ignited.IJiraIgnited;
 import org.apache.ignite.ci.jira.pure.IJiraIntegration;
 
 /**
@@ -54,10 +55,10 @@ import org.apache.ignite.ci.jira.pure.IJiraIntegration;
     /**
      * @param teamcity TeamCity to get info about tokens.
      * @param gitHubConn GitHub integration associated with this server.
-     * @param jiraIntegration
+     * @param jiraIntegration JIRA Integration
      */
     public void setJavaFlags(IAnalyticsEnabledTeamcity teamcity,
-        IGitHubConnection gitHubConn, IJiraIntegration jiraIntegration) {
+        IGitHubConnection gitHubConn, IJiraIgnited jiraIntegration) {
         if (teamcity.isTeamCityTokenAvailable())
             javaFlags |= TEAMCITY_FLAG;
 
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
index e4bfdec..9bd2813 100644
--- 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
@@ -24,6 +24,8 @@ import java.util.Properties;
 
 import org.apache.ignite.ci.HelperConfig;
 import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
+import org.apache.ignite.ci.jira.ignited.IJiraIgnited;
+import org.apache.ignite.ci.jira.ignited.IJiraIgnitedProvider;
 import org.apache.ignite.ci.tcbot.conf.BranchesTracked;
 import org.apache.ignite.ci.github.PullRequest;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
@@ -46,6 +48,7 @@ import org.mockito.Mockito;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 /**
@@ -71,25 +74,10 @@ public class MockBasedTcBotModule extends AbstractModule {
         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("");
+        mockGitHub();
 
-        when(gitHubConnIgnited.getPullRequest(anyInt())).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));
+        IJiraServerConfig jiraCfg = mock(IJiraServerConfig.class);
+        mockJira(jiraCfg);
 
         bind(ITeamcityIgnitedProvider.class).to(TeamcityIgnitedProviderMock.class).in(new SingletonScope());
 
@@ -115,11 +103,10 @@ public class MockBasedTcBotModule extends AbstractModule {
             }
 
             @Override public IJiraServerConfig getJiraConfig(String srvCode) {
-                return new JiraServerConfig(srvCode, loadOldProps(srvCode));
+                return jiraCfg;
             }
 
-            @Override
-            public IGitHubConfig getGitConfig(String srvCode) {
+            @Override public IGitHubConfig getGitConfig(String srvCode) {
                 return new GitHubConfig(srvCode, loadOldProps(srvCode));
             }
 
@@ -137,4 +124,42 @@ public class MockBasedTcBotModule extends AbstractModule {
 
         super.configure();
     }
+
+    private void mockGitHub() {
+        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(anyInt())).thenReturn(pullReq);
+
+        when(gitHubConnIgnitedProvider.server(anyString())).thenReturn(gitHubConnIgnited);
+    }
+
+    /**
+     *
+     * @param jiraCfg JIRA config.
+     */
+    private void mockJira(IJiraServerConfig jiraCfg) {
+        final IJiraIntegrationProvider jiraProv = Mockito.mock(IJiraIntegrationProvider.class);
+
+        bind(IJiraIntegrationProvider.class).toInstance(jiraProv);
+
+        when(jiraProv.server(anyString())).thenReturn(Mockito.mock(IJiraIntegration.class));
+
+        final IJiraIgnitedProvider jiraIgnProv = Mockito.mock(IJiraIgnitedProvider.class);
+
+        bind(IJiraIgnitedProvider.class).toInstance(jiraIgnProv);
+
+        IJiraIgnited jiraIgn = Mockito.mock(IJiraIgnited.class);
+
+        when(jiraIgn.config()).thenReturn(jiraCfg);
+
+        when(jiraIgnProv.server(anyString())).thenReturn(jiraIgn);
+    }
 }
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 6ca6a82..a379e0c 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
@@ -44,10 +44,13 @@ import org.apache.ignite.ci.ITeamcity;
 import org.apache.ignite.ci.analysis.SuiteInBranch;
 import org.apache.ignite.ci.analysis.TestInBranch;
 import org.apache.ignite.ci.db.TcHelperDb;
+import org.apache.ignite.ci.di.MonitoredTask;
 import org.apache.ignite.ci.di.scheduler.DirectExecNoWaitScheduler;
 import org.apache.ignite.ci.di.scheduler.IScheduler;
 import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
 import org.apache.ignite.ci.tcbot.chain.PrChainsProcessorTest;
+import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
+import org.apache.ignite.ci.tcbot.conf.ITcServerConfig;
 import org.apache.ignite.ci.tcmodel.changes.ChangesList;
 import org.apache.ignite.ci.tcmodel.conf.BuildType;
 import org.apache.ignite.ci.tcmodel.conf.Project;
@@ -92,6 +95,7 @@ import static junit.framework.TestCase.assertTrue;
 import static org.apache.ignite.ci.HelperConfig.ensureDirExist;
 import static org.apache.ignite.ci.teamcity.ignited.IgniteStringCompactor.STRINGS_CACHE;
 import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 /**
@@ -161,10 +165,10 @@ public class IgnitedTcInMemoryIntegrationTest {
             (invocationOnMock) -> {
                 String url = invocationOnMock.getArgument(1);
 
-                if (url.contains("/app/rest/latest/builds?locator=defaultFilter:false,count:1000,start:1000"))
+                if (url.contains("app/rest/latest/builds?locator=defaultFilter:false,count:1000,start:1000"))
                     return getClass().getResourceAsStream("/buildHistoryMasterPage2.xml");
 
-                if (url.contains("/app/rest/latest/builds?locator=defaultFilter:false"))
+                if (url.contains("app/rest/latest/builds?locator=defaultFilter:false"))
                     return getClass().getResourceAsStream("/buildHistoryMaster.xml");
 
                 throw new FileNotFoundException(url);
@@ -216,10 +220,10 @@ public class IgnitedTcInMemoryIntegrationTest {
         when(http.sendGet(anyString(), anyString())).thenAnswer(
             (invocationOnMock) -> {
                 String url = invocationOnMock.getArgument(1);
-                if (url.contains("/app/rest/latest/builds?locator=defaultFilter:false,count:1000,start:1000"))
+                if (url.contains("app/rest/latest/builds?locator=defaultFilter:false,count:1000,start:1000"))
                     return getClass().getResourceAsStream("/buildHistoryMasterPage2.xml");
 
-                if (url.contains("/app/rest/latest/builds?locator=defaultFilter:false"))
+                if (url.contains("app/rest/latest/builds?locator=defaultFilter:false"))
                     return getClass().getResourceAsStream("/buildHistoryMaster.xml");
 
                 if (url.contains("app/rest/latest/projects/" + projectId))
@@ -709,6 +713,15 @@ public class IgnitedTcInMemoryIntegrationTest {
 
             final IJiraIntegrationProvider jiraProv = Mockito.mock(IJiraIntegrationProvider.class);
             bind(IJiraIntegrationProvider.class).toInstance(jiraProv);
+
+            ITcBotConfig cfg = Mockito.mock(ITcBotConfig.class);
+
+            ITcServerConfig tcCfg = mock(ITcServerConfig.class);
+            when(tcCfg.logsDirectory()).thenReturn("logs");
+            when(tcCfg.host()).thenReturn("http://ci.ignite.apache.org/");
+            when(cfg.getTeamcityConfig(anyString())).thenReturn(tcCfg);
+
+            bind(ITcBotConfig.class).toInstance(cfg);
         }
     }
 }
diff --git a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/pure/BuildHistoryEmulator.java b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/pure/BuildHistoryEmulator.java
index d9d40be..babb18f 100644
--- a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/pure/BuildHistoryEmulator.java
+++ b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/pure/BuildHistoryEmulator.java
@@ -33,6 +33,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 public class BuildHistoryEmulator {
     private ArrayList<BuildRef> sharedState;
 
+    @SuppressWarnings("AssignmentOrReturnOfFieldWithMutableType")
     public BuildHistoryEmulator(ArrayList<BuildRef> sharedState) {
         this.sharedState = sharedState;
     }
@@ -41,7 +42,7 @@ public class BuildHistoryEmulator {
      * @param url Url.
      */
     @Nullable public InputStream handleUrl(String url) throws JAXBException {
-        if (!url.contains("/app/rest/latest/builds?locator=defaultFilter:false"))
+        if (!url.contains("app/rest/latest/builds?locator=defaultFilter:false"))
             return null;
 
         int cnt = getIntFromLocator(url, "count:", 100);
@@ -73,13 +74,11 @@ public class BuildHistoryEmulator {
         Builds builds = new Builds();
         builds.count(returnNow);
         if (nextStart > 0) {
-            StringBuffer buf = new StringBuffer();
-            buf.append("/app/rest/latest/builds?locator=defaultFilter:false,count:");
-            buf.append(cnt);
-            buf.append(",start:");
-            buf.append(nextStart);
-
-            builds.nextHref(buf.toString());
+            String buf = "app/rest/latest/builds?locator=defaultFilter:false,count:" +
+                cnt +
+                ",start:" +
+                nextStart;
+            builds.nextHref(buf);
         }
 
         return builds;
@@ -103,6 +102,5 @@ public class BuildHistoryEmulator {
             return def;
 
         return Integer.parseInt(cntStr.substring(prefix.length()));
-
     }
 }