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/10/24 10:04:26 UTC

[ignite-teamcity-bot] branch master updated (84bbae6 -> c343153)

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

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


    from 84bbae6  IGNITE-9869: Bug fix for Running builds not uploaded into prefetched builds collection: fixed JAXB 2 roots problem - Fixes #37.
     new c5b923b  IGNITE-9901 Persistent queue for visas added - Fixes #39.
     new c343153  IGNITE-9901: Bug fix after persisting builds

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../main/java/org/apache/ignite/ci/ITcHelper.java  | 12 +++++-
 .../main/java/org/apache/ignite/ci/TcHelper.java   | 18 +++++++++
 .../apache/ignite/ci/observer/BuildObserver.java   |  6 +--
 .../org/apache/ignite/ci/observer/BuildsInfo.java  |  9 +----
 .../apache/ignite/ci/observer/ObserverTask.java    | 45 ++++++++++++++++++----
 .../tcbot/visa/TcBotTriggerAndSignOffService.java  | 23 ++++++++---
 .../ignite/ci/web/auth/AuthenticationFilter.java   |  2 +
 .../ignite/ci/web/rest/login/UserService.java      |  9 +++--
 8 files changed, 96 insertions(+), 28 deletions(-)


[ignite-teamcity-bot] 02/02: IGNITE-9901: Bug fix after persisting builds

Posted by dp...@apache.org.
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

commit c34315308ea2099fc7ff380ba9f01c82d2fe05c1
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Wed Oct 24 13:04:24 2018 +0300

    IGNITE-9901: Bug fix after persisting builds
---
 .../src/main/java/org/apache/ignite/ci/observer/ObserverTask.java   | 6 +++++-
 .../java/org/apache/ignite/ci/web/auth/AuthenticationFilter.java    | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java
index 1e9fc76..37d6e0f 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java
@@ -60,7 +60,11 @@ public class ObserverTask extends TimerTask {
 
     /** */
     private Queue<BuildsInfo> buildsQueue() {
-        return ignite.queue("buildsQueue", 0, new CollectionConfiguration());
+        CollectionConfiguration cfg = new CollectionConfiguration();
+
+        cfg.setBackups(1);
+
+        return ignite.queue("buildsQueue", 0, cfg);
     }
 
     /** */
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/auth/AuthenticationFilter.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/auth/AuthenticationFilter.java
index 6272ef6..b76cc37 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/auth/AuthenticationFilter.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/auth/AuthenticationFilter.java
@@ -123,6 +123,8 @@ public class AuthenticationFilter implements ContainerRequestFilter {
             ExceptionUtil.throwIfRest(e);
 
             reqCtx.abortWith(rspUnathorized());
+
+            return;
         }
 
         if (!authenticate(reqCtx, tokFull, users)) {


[ignite-teamcity-bot] 01/02: IGNITE-9901 Persistent queue for visas added - Fixes #39.

Posted by dp...@apache.org.
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

commit c5b923bf476e91082dfa31b0d5107a9eade97801
Author: ololo3000 <pm...@gmail.com>
AuthorDate: Wed Oct 24 12:49:23 2018 +0300

    IGNITE-9901 Persistent queue for visas added - Fixes #39.
    
    Signed-off-by: Dmitriy Pavlov <dp...@apache.org>
---
 .../main/java/org/apache/ignite/ci/ITcHelper.java  | 12 +++++--
 .../main/java/org/apache/ignite/ci/TcHelper.java   | 18 ++++++++++
 .../apache/ignite/ci/observer/BuildObserver.java   |  6 ++--
 .../org/apache/ignite/ci/observer/BuildsInfo.java  |  9 ++---
 .../apache/ignite/ci/observer/ObserverTask.java    | 41 +++++++++++++++++-----
 .../tcbot/visa/TcBotTriggerAndSignOffService.java  | 23 +++++++++---
 .../ignite/ci/web/rest/login/UserService.java      |  9 +++--
 7 files changed, 90 insertions(+), 28 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 00623f7..356b633 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,6 +17,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.issue.IssuesStorage;
@@ -24,8 +25,6 @@ import org.apache.ignite.ci.teamcity.pure.ITcServerProvider;
 import org.apache.ignite.ci.user.ICredentialsProv;
 import org.apache.ignite.ci.user.UserAndSessionsStorage;
 
-import java.util.Collection;
-
 /**
  * Teamcity Bot main interface
  */
@@ -52,6 +51,15 @@ public interface ITcHelper extends ITcServerProvider {
 
     List<String> getTrackedBranchesIds();
 
+    /** */
+    void setServerAuthorizerCreds(ICredentialsProv creds);
+
+    /** */
+    ICredentialsProv getServerAuthorizerCreds();
+
+    /** */
+    boolean isServerAuthorized();
+
     /**
      * @param srvId Server id.
      * @param prov Credentials.
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 5e0422d..1bd64e9 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
@@ -54,6 +54,9 @@ public class TcHelper implements ITcHelper, IJiraIntegration {
     /** Stop guard. */
     private AtomicBoolean stop = new AtomicBoolean();
 
+    /** Server authorizer credentials. */
+    private ICredentialsProv serverAuthorizerCreds;
+
     @Inject private IssuesStorage issuesStorage;
 
     @Inject private ITcServerProvider serverProvider;
@@ -68,6 +71,21 @@ public class TcHelper implements ITcHelper, IJiraIntegration {
     }
 
     /** {@inheritDoc} */
+    @Override public void setServerAuthorizerCreds(ICredentialsProv creds) {
+        this.serverAuthorizerCreds = creds;
+    }
+
+    /** {@inheritDoc} */
+    @Override public ICredentialsProv getServerAuthorizerCreds() {
+        return serverAuthorizerCreds;
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean isServerAuthorized() {
+        return !Objects.isNull(serverAuthorizerCreds);
+    }
+
+    /** {@inheritDoc} */
     @Override public IssuesStorage issues() {
         return issuesStorage;
     }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildObserver.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildObserver.java
index f8a7ac3..1e08eb8 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildObserver.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildObserver.java
@@ -17,8 +17,8 @@
 
 package org.apache.ignite.ci.observer;
 
+import java.util.Collection;
 import java.util.Objects;
-import java.util.Queue;
 import java.util.Timer;
 import javax.inject.Inject;
 import org.apache.ignite.ci.tcmodel.result.Build;
@@ -61,7 +61,7 @@ public class BuildObserver {
      * @param ticket JIRA ticket name.
      */
     public void observe(String srvId, ICredentialsProv prov, String ticket, Build... builds) {
-        observerTask.builds.add(new BuildsInfo(srvId, prov, ticket, builds));
+        observerTask.addBuild(new BuildsInfo(srvId, prov, ticket, builds));
     }
 
     /**
@@ -70,7 +70,7 @@ public class BuildObserver {
      */
     public String getObservationStatus(String srvId, String branch) {
         StringBuilder sb = new StringBuilder();
-        Queue<BuildsInfo> builds = observerTask.builds;
+        Collection<BuildsInfo> builds = observerTask.getBuilds();
 
         for (BuildsInfo bi : builds) {
             if (Objects.equals(bi.branchName, branch)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildsInfo.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildsInfo.java
index e318f19..ba8b48a 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildsInfo.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildsInfo.java
@@ -37,9 +37,6 @@ public class BuildsInfo {
     /** Branch name. */
     public final String branchName;
 
-    /** Credentials. */
-    public final ICredentialsProv prov;
-
     /** JIRA ticket full name. */
     public final String ticket;
 
@@ -54,7 +51,6 @@ public class BuildsInfo {
      */
     public BuildsInfo(String srvId, ICredentialsProv prov, String ticket, Build[] builds) {
         this.srvId = srvId;
-        this.prov = prov;
         this.ticket = ticket;
         this.buildTypeId = builds.length > 1 ? "IgniteTests24Java8_RunAll" : builds[0].buildTypeId;
         this.branchName = builds[0].branchName;
@@ -104,13 +100,12 @@ public class BuildsInfo {
         return Objects.equals(srvId, info.srvId) &&
             Objects.equals(buildTypeId, info.buildTypeId) &&
             Objects.equals(branchName, info.branchName) &&
-            Objects.equals(prov, info.prov) &&
             Objects.equals(ticket, info.ticket) &&
-            Objects.equals(finishedBuilds, info.finishedBuilds);
+            Objects.equals(finishedBuilds.keySet(), info.finishedBuilds.keySet());
     }
 
     /** {@inheritDoc} */
     @Override public int hashCode() {
-        return Objects.hash(srvId, buildTypeId, branchName, prov, ticket, finishedBuilds);
+        return Objects.hash(srvId, buildTypeId, branchName, ticket, finishedBuilds.keySet());
     }
 }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java
index 5cbda2e..1e9fc76 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java
@@ -17,17 +17,21 @@
 
 package org.apache.ignite.ci.observer;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Queue;
 import java.util.Set;
 import java.util.TimerTask;
-import java.util.concurrent.ConcurrentLinkedQueue;
 import javax.inject.Inject;
+import org.apache.ignite.Ignite;
 import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
-import org.apache.ignite.ci.teamcity.pure.ITcServerProvider;
+import org.apache.ignite.ci.ITcHelper;
 import org.apache.ignite.ci.di.AutoProfiling;
 import org.apache.ignite.ci.di.MonitoredTask;
 import org.apache.ignite.ci.jira.IJiraIntegration;
+import org.apache.ignite.ci.user.ICredentialsProv;
+import org.apache.ignite.configuration.CollectionConfiguration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,18 +45,32 @@ public class ObserverTask extends TimerTask {
     private static final Logger logger = LoggerFactory.getLogger(ObserverTask.class);
 
     /** Helper. */
-    @Inject private ITcServerProvider srvProvider;
+    @Inject private ITcHelper tcHelper;
 
     /** Helper. */
     @Inject private IJiraIntegration jiraIntegration;
 
-    /** Builds. */
-    final Queue<BuildsInfo> builds;
+    /** Ignite. */
+    @Inject private Ignite ignite;
 
     /**
      */
     ObserverTask() {
-        builds = new ConcurrentLinkedQueue<>();
+    }
+
+    /** */
+    private Queue<BuildsInfo> buildsQueue() {
+        return ignite.queue("buildsQueue", 0, new CollectionConfiguration());
+    }
+
+    /** */
+    public Collection<BuildsInfo> getBuilds() {
+        return Collections.unmodifiableCollection(buildsQueue());
+    }
+
+    /** */
+    public void addBuild(BuildsInfo build) {
+        buildsQueue().add(build);
     }
 
     /** {@inheritDoc} */
@@ -71,14 +89,19 @@ public class ObserverTask extends TimerTask {
     @AutoProfiling
     @MonitoredTask(name = "Build Observer")
     protected String runObserverTask() {
+        if (!tcHelper.isServerAuthorized())
+            return "Server authorization required.";
+
         int checkedBuilds = 0;
         int notFinishedBuilds = 0;
         Set<String> ticketsNotified = new HashSet<>();
 
+        Queue<BuildsInfo> builds = buildsQueue();
+
         for (BuildsInfo info : builds) {
             checkedBuilds += info.buildsCount();
 
-            IAnalyticsEnabledTeamcity teamcity = srvProvider.server(info.srvId, info.prov);
+            IAnalyticsEnabledTeamcity teamcity = tcHelper.server(info.srvId, tcHelper.getServerAuthorizerCreds());
 
             if (!info.isFinished(teamcity)) {
                 notFinishedBuilds += info.buildsCount() - info.finishedBuildsCount();
@@ -86,7 +109,9 @@ public class ObserverTask extends TimerTask {
                 continue;
             }
 
-            String jiraRes = jiraIntegration.notifyJira(info.srvId, info.prov, info.buildTypeId,
+            ICredentialsProv creds = tcHelper.getServerAuthorizerCreds();
+
+            String jiraRes = jiraIntegration.notifyJira(info.srvId, creds, info.buildTypeId,
                 info.branchName, info.ticket);
 
             if (JIRA_COMMENTED.equals(jiraRes)) {
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
index e4c957e..26680ce 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
@@ -27,17 +27,18 @@ import java.util.stream.Stream;
 import javax.annotation.Nonnull;
 import javax.inject.Inject;
 import javax.ws.rs.QueryParam;
-import org.apache.ignite.ci.tcmodel.hist.BuildRef;
-import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
-import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
+import org.apache.ignite.ci.ITcHelper;
 import org.apache.ignite.ci.github.GitHubUser;
+import org.apache.ignite.ci.github.PullRequest;
 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.github.PullRequest;
 import org.apache.ignite.ci.jira.IJiraIntegration;
 import org.apache.ignite.ci.observer.BuildObserver;
+import org.apache.ignite.ci.tcmodel.hist.BuildRef;
 import org.apache.ignite.ci.tcmodel.result.Build;
+import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
+import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
 import org.apache.ignite.ci.user.ICredentialsProv;
 import org.apache.ignite.ci.web.model.SimpleResult;
 import org.apache.ignite.internal.util.typedef.F;
@@ -65,6 +66,14 @@ public class TcBotTriggerAndSignOffService {
 
     @Inject Provider<BuildObserver> observer;
 
+    /** Helper. */
+    @Inject ITcHelper tcHelper;
+
+    /** */
+    public void startObserver() {
+        buildObserverProvider.get();
+    }
+
     /**
      * @param pr Pull Request.
      * @return JIRA ticket full name or empty string.
@@ -154,7 +163,11 @@ public class TcBotTriggerAndSignOffService {
 
         buildObserverProvider.get().observe(srvId, prov, ticketFullName, builds);
 
-        return "JIRA ticket IGNITE-" + ticketFullName + " will be notified after the tests are completed.";
+        if (!tcHelper.isServerAuthorized())
+            return "Ask server administrator to authorize the Bot to enable JIRA notifications.";
+
+        return "JIRA ticket IGNITE-" + ticketFullName +
+            " will be notified after the tests are completed.";
     }
 
     /**
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 43feeae..c257a7e 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
@@ -17,9 +17,9 @@
 
 package org.apache.ignite.ci.web.rest.login;
 
-
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
+import com.google.inject.Injector;
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.FormParam;
@@ -31,10 +31,9 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.Form;
 import javax.ws.rs.core.MediaType;
-
-import com.google.inject.Injector;
 import org.apache.ignite.ci.ITcHelper;
 import org.apache.ignite.ci.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;
 import org.apache.ignite.ci.user.ICredentialsProv;
@@ -91,10 +90,14 @@ public class UserService {
 
         final ITcHelper helper = CtxListener.getTcHelper(ctx);
 
+        helper.setServerAuthorizerCreds(prov);
+
         IssueDetector detector = helper.issueDetector();
 
         detector.startBackgroundCheck(helper, prov);
 
+        CtxListener.getInjector(ctx).getInstance(TcBotTriggerAndSignOffService.class).startObserver();
+
         return userMenu(prov, helper);
     }