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/01/22 14:19:25 UTC

[ignite-teamcity-bot] branch master updated: IGNITE-10989: Removed issues storage and issues detector from TC Helper god object.

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 5076a4d  IGNITE-10989: Removed issues storage and issues detector from TC Helper god object.
5076a4d is described below

commit 5076a4d51dd521b2b5e67229a4835b5df473a336
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Tue Jan 22 17:19:21 2019 +0300

    IGNITE-10989: Removed issues storage and issues detector from TC Helper god object.
---
 .../main/java/org/apache/ignite/ci/ITcHelper.java  | 12 ++------
 .../main/java/org/apache/ignite/ci/TcHelper.java   | 26 ------------------
 .../java/org/apache/ignite/ci/db/DbMigrations.java |  6 ----
 .../org/apache/ignite/ci/issue/IssuesStorage.java  | 18 ++----------
 .../ci/tcbot/TcBotBusinessServicesModule.java      |  4 +--
 .../apache/ignite/ci/tcbot/user/IUserStorage.java  |  7 +++++
 .../ignite/ci/user/UserAndSessionsStorage.java     |  6 ++--
 .../java/org/apache/ignite/ci/web/CtxListener.java | 21 +++++---------
 .../ignite/ci/web/rest/GetChainResultsAsHtml.java  |  2 +-
 .../apache/ignite/ci/web/rest/issues/TcIssues.java | 25 ++++++++---------
 .../ignite/ci/web/rest/login/UserService.java      | 32 +++++++++++++---------
 11 files changed, 56 insertions(+), 103 deletions(-)

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 ab926af..3fcf965 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
@@ -17,13 +17,8 @@
 
 package org.apache.ignite.ci;
 
-import org.apache.ignite.ci.jira.Tickets;
-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;
 import org.apache.ignite.ci.user.UserAndSessionsStorage;
-import org.apache.ignite.ci.web.model.Visa;
 
 /**
  * Teamcity Bot main interface. This inteface became too huge.
@@ -38,17 +33,16 @@ public interface ITcHelper {
      */
     public String TEAMCITY_BOT_REGIONSIZE = "teamcity.bot.regionsize";
 
-    IssuesStorage issues();
-
-    IssueDetector issueDetector();
-
+    @Deprecated
     UserAndSessionsStorage users();
 
     String primaryServerId();
 
+    @Deprecated
     /** */
     void setServerAuthorizerCreds(ICredentialsProv creds);
 
+    @Deprecated
     /** */
     ICredentialsProv getServerAuthorizerCreds();
 
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 ca3fcb1..cd6e75d 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
@@ -20,28 +20,18 @@ package org.apache.ignite.ci;
 import java.util.Objects;
 import java.util.concurrent.atomic.AtomicBoolean;
 import javax.inject.Inject;
-import org.apache.ignite.ci.issue.IssuesStorage;
 import org.apache.ignite.ci.tcbot.issue.IssueDetector;
-import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
 import org.apache.ignite.ci.user.ICredentialsProv;
 import org.apache.ignite.ci.user.UserAndSessionsStorage;
-import org.jetbrains.annotations.Nullable;
 
 /**
  * TC Bot implementation. To be migrated to smaller injected classes
  */
 @Deprecated
 public class TcHelper implements ITcHelper {
-    /** Stop guard. */
-    private AtomicBoolean stop = new AtomicBoolean();
-
     /** Server authorizer credentials. */
     private ICredentialsProv serverAuthorizerCreds;
 
-    @Inject private IssuesStorage issuesStorage;
-
-    @Inject private IssueDetector detector;
-
     @Inject private UserAndSessionsStorage userAndSessionsStorage;
 
 
@@ -61,16 +51,6 @@ public class TcHelper implements ITcHelper {
     }
 
     /** {@inheritDoc} */
-    @Override public IssuesStorage issues() {
-        return issuesStorage;
-    }
-
-    /** {@inheritDoc} */
-    @Override public IssueDetector issueDetector() {
-        return detector;
-    }
-
-    /** {@inheritDoc} */
     @Override public UserAndSessionsStorage users() {
         return userAndSessionsStorage;
     }
@@ -78,10 +58,4 @@ public class TcHelper implements ITcHelper {
     @Override public String primaryServerId() {
         return "apache"; //todo remove
     }
-
-    public void close() {
-        if (stop.compareAndSet(false, true))
-            detector.stop();
-    }
-
 }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/DbMigrations.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/DbMigrations.java
index 42d91fb..d0cd305 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/DbMigrations.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/DbMigrations.java
@@ -23,7 +23,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.function.Consumer;
 import javax.cache.Cache;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
@@ -31,17 +30,12 @@ import org.apache.ignite.IgniteDataStreamer;
 import org.apache.ignite.binary.BinaryObject;
 import org.apache.ignite.cache.CacheAtomicityMode;
 import org.apache.ignite.cache.CacheMode;
-import org.apache.ignite.ci.ITeamcity;
 import org.apache.ignite.ci.IgnitePersistentTeamcity;
-import org.apache.ignite.ci.analysis.RunStat;
-import org.apache.ignite.ci.analysis.SuiteInBranch;
-import org.apache.ignite.ci.analysis.TestInBranch;
 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.observer.CompactBuildsInfo;
 import org.apache.ignite.ci.tcmodel.result.Build;
-import org.apache.ignite.ci.tcmodel.result.stat.Statistics;
 import org.apache.ignite.ci.web.model.CompactContributionKey;
 import org.apache.ignite.ci.web.model.CompactVisa;
 import org.apache.ignite.ci.web.model.CompactVisaRequest;
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 ef0a243..d13d9d4 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
@@ -17,8 +17,6 @@
 
 package org.apache.ignite.ci.issue;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 import javax.cache.Cache;
@@ -29,6 +27,9 @@ import org.apache.ignite.IgniteCache;
 import org.apache.ignite.ci.db.TcHelperDb;
 import org.apache.ignite.ci.tcbot.issue.IIssuesStorage;
 
+/**
+ *
+ */
 public class IssuesStorage implements IIssuesStorage {
     public static final String BOT_DETECTED_ISSUES = "botDetectedIssues";
 
@@ -50,19 +51,6 @@ public class IssuesStorage implements IIssuesStorage {
         return ignite.getOrCreateCache(TcHelperDb.getCacheV2TxConfig(BOT_DETECTED_ISSUES));
     }
 
-    public List<Issue> all() {
-        List<Issue> res = new ArrayList<>();
-
-        for (Cache.Entry<IssueKey, Issue> next : cache()) {
-            if (next.getValue().issueKey() == null)
-                continue;
-
-            res.add(next.getValue());
-        }
-
-        return res;
-    }
-
     /** {@inheritDoc} */
     @Override public boolean setNotified(IssueKey issueKey, String to) {
         Issue issue = cache().get(issueKey);
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/TcBotBusinessServicesModule.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/TcBotBusinessServicesModule.java
index cca872c..b3a2368 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/TcBotBusinessServicesModule.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/TcBotBusinessServicesModule.java
@@ -30,8 +30,8 @@ import org.apache.ignite.ci.user.UserAndSessionsStorage;
  * TC Bot self services mapping (without 3rd party integrations configuration.
  */
 public class TcBotBusinessServicesModule extends AbstractModule {
-    @Override
-    protected void configure() {
+    /** {@inheritDoc} */
+    @Override protected void configure() {
         bind(ITcBotConfig.class).to(LocalFilesBasedConfig.class).in(new SingletonScope());
         bind(IUserStorage.class).to(UserAndSessionsStorage.class).in(new SingletonScope());
         bind(IIssuesStorage.class).to(IssuesStorage.class).in(new SingletonScope());
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/user/IUserStorage.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/user/IUserStorage.java
index 9b87d8c..56f3fd1 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/user/IUserStorage.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/user/IUserStorage.java
@@ -19,12 +19,19 @@ package org.apache.ignite.ci.tcbot.user;
 import org.apache.ignite.ci.user.TcHelperUser;
 
 import java.util.stream.Stream;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * Teamcity Bot User and Sessions storage interface.
  */
 public interface IUserStorage {
     /**
+     * Get user by username.
+     * @param username Username.
+     */
+    @Nullable public TcHelperUser getUser(String username);
+
+    /**
      * @return All users in storage stream.
      */
     public Stream<TcHelperUser> allUsers();
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java
index 3312c2b..2bcf6fb 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java
@@ -60,11 +60,11 @@ public class UserAndSessionsStorage implements IUserStorage {
         return getIgnite().getOrCreateCache(TcHelperDb.getCacheV2TxConfig(USER_SESSIONS));
     }
 
-    public void putSession(String sessId, UserSession userSession) {
-        sessions().put(sessId, userSession);
+    public void putSession(String sessId, UserSession userSes) {
+        sessions().put(sessId, userSes);
     }
 
-    public TcHelperUser getUser(String username) {
+    @Override @Nullable public TcHelperUser getUser(String username) {
         return users().get(username);
     }
 
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
index 026a0e7..e04def3 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
@@ -17,28 +17,22 @@
 
 package org.apache.ignite.ci.web;
 
+import com.google.common.base.Preconditions;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
 import java.io.IOException;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.QueryParam;
-
-import com.google.common.base.Preconditions;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
 import org.apache.ignite.Ignite;
-import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
-import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
 import org.apache.ignite.ci.ITcHelper;
-import org.apache.ignite.ci.TcHelper;
 import org.apache.ignite.ci.db.TcHelperDb;
 import org.apache.ignite.ci.di.IgniteTcBotModule;
 import org.apache.ignite.ci.di.scheduler.IScheduler;
 import org.apache.ignite.ci.observer.BuildObserver;
+import org.apache.ignite.ci.tcbot.issue.IssueDetector;
 import org.apache.ignite.ci.teamcity.pure.TeamcityRecorder;
-import org.apache.ignite.ci.user.ICredentialsProv;
-import org.jetbrains.annotations.Nullable;
+import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
 
 /**
  */
@@ -96,10 +90,9 @@ public class CtxListener implements ServletContextListener {
 
         getBackgroundUpdater(ctx).stop();
 
-        TcHelper helper = (TcHelper)getTcHelper(ctx);
-        helper.close();
-
         try {
+
+            injector.getInstance(IssueDetector.class).stop();
             injector.getInstance(TcUpdatePool.class).stop();
             injector.getInstance(BuildObserver.class).stop();
 
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
index 215b98f..dc385f5 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
@@ -86,7 +86,7 @@ public class GetChainResultsAsHtml {
             failRateBranch,
             SyncMode.RELOAD_QUEUED);
 
-        ChainAtServerCurrentStatus status = new ChainAtServerCurrentStatus(teamcity.serverId(), ctx.branchName());
+        ChainAtServerCurrentStatus status = new ChainAtServerCurrentStatus(tcIgn.serverId(), ctx.branchName());
 
         ctx.getRunningUpdates().forEach(FutureUtil::getResultSilent);
 
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/issues/TcIssues.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/issues/TcIssues.java
index 1676069..7753881 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/issues/TcIssues.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/issues/TcIssues.java
@@ -17,15 +17,8 @@
 
 package org.apache.ignite.ci.web.rest.issues;
 
-import org.apache.ignite.ci.ITcHelper;
-import org.apache.ignite.ci.issue.IssueList;
-import org.apache.ignite.ci.issue.IssuesStorage;
-import org.apache.ignite.ci.user.ICredentialsProv;
-import org.apache.ignite.ci.web.CtxListener;
-import org.apache.ignite.ci.web.model.SimpleResult;
-import org.apache.ignite.ci.web.model.current.UpdateInfo;
-import org.jetbrains.annotations.Nullable;
-
+import com.google.inject.Injector;
+import java.util.stream.Collectors;
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.GET;
@@ -34,6 +27,12 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
+import org.apache.ignite.ci.issue.IssueList;
+import org.apache.ignite.ci.tcbot.issue.IIssuesStorage;
+import org.apache.ignite.ci.web.CtxListener;
+import org.apache.ignite.ci.web.model.SimpleResult;
+import org.apache.ignite.ci.web.model.current.UpdateInfo;
+import org.jetbrains.annotations.Nullable;
 
 import static com.google.common.base.Strings.isNullOrEmpty;
 
@@ -62,15 +61,13 @@ public class TcIssues {
     public IssueList listIssues(@Nullable @QueryParam("branch") String branchOpt,
                                 @Nullable @QueryParam("count") Integer count,
                                 @Nullable @QueryParam("checkAllLogs") Boolean checkAllLogs) {
-        final ITcHelper helper = CtxListener.getTcHelper(ctx);
+        Injector injector = CtxListener.getInjector(ctx);
 
         final String branch = isNullOrEmpty(branchOpt) ? "master" : branchOpt;
 
-        final ICredentialsProv prov = ICredentialsProv.get(req);
-
-        IssuesStorage issues = helper.issues();
+        IIssuesStorage issues = injector.getInstance(IIssuesStorage.class);
 
-        IssueList issueList = new IssueList(issues.all());
+        IssueList issueList = new IssueList(issues.allIssues().collect(Collectors.toList()));
 
         issueList.branch = branch;
 
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 596710a..f2c479f 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
@@ -34,6 +34,7 @@ import javax.ws.rs.core.MediaType;
 import org.apache.ignite.ci.ITcHelper;
 import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
 import org.apache.ignite.ci.tcbot.issue.IssueDetector;
+import org.apache.ignite.ci.tcbot.user.IUserStorage;
 import org.apache.ignite.ci.tcbot.visa.TcBotTriggerAndSignOffService;
 import org.apache.ignite.ci.tcmodel.user.User;
 import org.apache.ignite.ci.teamcity.pure.ITcLogin;
@@ -67,19 +68,22 @@ public class UserService {
         if (prov == null)
             return new SimpleResult("");
 
+        Injector injector = CtxListener.getInjector(ctx);
 
-        final ITcHelper helper = CtxListener.getTcHelper(ctx);
-
-        return userMenu(prov, helper);
+        return userMenu(prov,
+            injector.getInstance(IUserStorage.class),
+            injector.getInstance(IssueDetector.class));
     }
 
-    @NotNull public SimpleResult userMenu(ICredentialsProv prov, ITcHelper helper) {
-        final UserAndSessionsStorage users = helper.users();
+    @NotNull public SimpleResult userMenu(ICredentialsProv prov, IUserStorage users, IssueDetector issueDetector) {
         final TcHelperUser user = users.getUser(prov.getPrincipalId());
 
+        if (user == null)
+            return new UserMenuResult("?");
+
         UserMenuResult res = new UserMenuResult(user.getDisplayName());
 
-        res.authorizedState = helper.issueDetector().isAuthorized();
+        res.authorizedState = issueDetector.isAuthorized();
 
         return res;
     }
@@ -89,17 +93,19 @@ public class UserService {
     public SimpleResult setAuthorizedState() {
         final ICredentialsProv prov = ICredentialsProv.get(req);
 
-        final ITcHelper helper = CtxListener.getTcHelper(ctx);
+        Injector injector = CtxListener.getInjector(ctx);
 
+        IssueDetector issueDetector = injector.getInstance(IssueDetector.class);
+        final ITcHelper helper = injector.getInstance(ITcHelper.class);
         helper.setServerAuthorizerCreds(prov);
 
-        IssueDetector detector = helper.issueDetector();
-
-        detector.startBackgroundCheck(prov);
+        issueDetector.startBackgroundCheck(prov);
 
         CtxListener.getInjector(ctx).getInstance(TcBotTriggerAndSignOffService.class).startObserver();
 
-        return userMenu(prov, helper);
+        return userMenu(prov,
+            injector.getInstance(IUserStorage.class),
+            issueDetector);
     }
 
     @GET
@@ -110,8 +116,8 @@ public class UserService {
         Injector injector = CtxListener.getInjector(ctx);
         ITcBotConfig cfg = injector.getInstance(ITcBotConfig.class);
 
-        ITcHelper helper = injector.getInstance(ITcHelper.class);
-        final TcHelperUser user = helper.users().getUser(login);
+        IUserStorage users = injector.getInstance(IUserStorage.class);
+        final TcHelperUser user = users.getUser(login);
 
         final TcHelperUserUi tcHelperUserUi = new TcHelperUserUi(user, cfg.getTrackedBranchesIds());