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/08/12 17:35:58 UTC

[ignite-teamcity-bot] branch master updated (2aaeaf2 -> d67d464)

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 2aaeaf2  Counters for tracking updates for particular branches implementation - Fixes #148.
     new 5f181f5  Board changes for displaying defects - Fixes #151.
     new d67d464  Version update

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:
 .../org/apache/ignite/ci/web/model/Version.java    |  2 +-
 .../src/main/webapp/board/index.html               | 18 +++++---
 .../ignite/tcbot/engine/board/BoardService.java    | 23 +++++++---
 .../tcbot/engine/ui/BoardDefectSummaryUi.java      | 50 +++++++++++++++++++++-
 4 files changed, 79 insertions(+), 14 deletions(-)


[ignite-teamcity-bot] 02/02: Version update

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 d67d46408643041e6c58907e39b4062cc05a7d2b
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Mon Aug 12 20:35:51 2019 +0300

    Version update
---
 .../src/main/java/org/apache/ignite/ci/web/model/Version.java           | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
index 46507c1..a407c50 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
@@ -28,7 +28,7 @@ package org.apache.ignite.ci.web.model;
     public static final String GITHUB_REF = "https://github.com/apache/ignite-teamcity-bot";
 
     /** TC Bot Version. */
-    public static final String VERSION = "20190809";
+    public static final String VERSION = "20190812";
 
     /** Java version, where Web App is running. */
     public String javaVer;


[ignite-teamcity-bot] 01/02: Board changes for displaying defects - Fixes #151.

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 5f181f54a612704dffaccb41c0cbf0c457775317
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Mon Aug 12 20:35:33 2019 +0300

    Board changes for displaying defects - Fixes #151.
    
    Signed-off-by: Dmitriy Pavlov <dp...@apache.org>
---
 .../src/main/webapp/board/index.html               | 18 +++++---
 .../ignite/tcbot/engine/board/BoardService.java    | 23 +++++++---
 .../tcbot/engine/ui/BoardDefectSummaryUi.java      | 50 +++++++++++++++++++++-
 3 files changed, 78 insertions(+), 13 deletions(-)

diff --git a/ignite-tc-helper-web/src/main/webapp/board/index.html b/ignite-tc-helper-web/src/main/webapp/board/index.html
index 02e4f3d..5f9c86a 100644
--- a/ignite-tc-helper-web/src/main/webapp/board/index.html
+++ b/ignite-tc-helper-web/src/main/webapp/board/index.html
@@ -50,10 +50,12 @@
                 headers: [
                     {text: "Branch", value: 'branch'},
                     {text: 'Tags', value: 'tags'},
-                    {text: 'Suites', value: 'suites'},
+                    {text: 'Suites', value: 'suitesSummary'},
+                    {text: "Commits", value: 'blameCandidateSummary'},
                     {text: "Issues", value: 'cntissues'},
                     {text: "Fixed", value: 'fixedissues'},
-                    {text: "Not Fixed", value: 'notfixedissues'}
+                    {text: "Not Fixed", value: 'notfixedissues'},
+                    {text: "Unclear", value: 'unclearissues'}
                 ]
             },
             methods: {
@@ -151,7 +153,7 @@
                 :items="defects"
                 itrackedBranchtem-key="id"
                 class="elevation-1"
-                group-by="branch"
+                sort-by="branch"
                 :expanded.sync="expanded"
                 show-expand
                 dense
@@ -187,10 +189,14 @@
                 {{ item.cntIssues }}
             </template>
             <template v-slot:item.fixedIssues="{ item }">
-                <span class='visaStage' style="background: #12AD5E">  {{ item.fixedIssues }} </span>
+                <span class='visaStage' style="background: #12AD5E" v-if="item.fixedIssues!=null" >  {{ item.fixedIssues }} </span>
             </template>
-            <template v-slot:item.notFixedIssues="{ item }">
-                <span class='visaStage' style="background: red">  {{ item.notFixedIssues }} </span>
+            <template v-slot:item.notFixedIssues="{ item }" >
+                <span class='visaStage' style="background: red"  v-if="item.notFixedIssues!=null" >  {{ item.notFixedIssues }} </span>
+            </template>
+
+            <template v-slot:item.unclearIssues="{ item }" >
+                <span class='visaStage' style="background: grey"  v-if="item.unclearIssues!=null" >  {{ item.unclearIssues }} </span>
             </template>
 
         </v-data-table>
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/board/BoardService.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/board/BoardService.java
index d7ff93e..0d4291d 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/board/BoardService.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/board/BoardService.java
@@ -18,13 +18,13 @@ package org.apache.ignite.tcbot.engine.board;
 
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import javax.inject.Inject;
@@ -117,12 +117,14 @@ public class BoardService {
                                 defectUi.addFixedIssue();
                             else
                                 defectUi.addNotFixedIssue();
-                        }
+                        } else
+                            defectUi.addUnclearIssue();
 
                         String testOrBuildName = compactor.getStringFromId(issue.testNameCid());
                         defectUi.addIssue(testOrBuildName, "");
                     }
-                }
+                } else
+                    defectUi.addUnclearIssue();
             }
 
             defectUi.branch =  next.tcBranch(compactor);
@@ -138,15 +140,18 @@ public class BoardService {
     }
 
     @MonitoredTask(name = "Convert issues to defect")
-    protected void issuesToDefects() {
+    protected String issuesToDefects() {
         Stream<Issue> stream = issuesStorage.allIssues();
 
-        long minIssueTs = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(3);
+        //todo make property how old issues can be considered as configuration parameter
+        long minIssueTs = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(5);
 
         //todo not so good to to call init() twice
         fatBuildDao.init();
         changeDao.init();
 
+        AtomicInteger cntIssues = new AtomicInteger();
+        AtomicInteger cntDefects = new AtomicInteger();
         stream
             .filter(issue -> {
                 long detected = issue.detectedTs == null ? 0 : issue.detectedTs;
@@ -158,6 +163,8 @@ public class BoardService {
                 return !IssueType.newContributedTestFailure.code().equals(type);
             })
             .forEach(issue -> {
+                cntIssues.incrementAndGet();
+
                 IssueKey key = issue.issueKey;
                 String srvCode = key.getServer();
                 //just for init call
@@ -177,11 +184,16 @@ public class BoardService {
                 int tcSrvCodeCid = compactor.getStringId(srvCode);
                 defectStorage.merge(tcSrvCodeCid, srvId, fatBuild,
                     (k, defect) -> {
+                        cntDefects.incrementAndGet();
+
                         defect.trackedBranchCidSetIfEmpty(trackedBranchCid);
 
                         defect.computeIfAbsent(fatBuild).addIssue(issueTypeCid, testNameCid);
 
                         if(defect.blameCandidates().isEmpty()) {
+                            //save changes because it can be missed in older DB versions
+                            defect.changeMap(changeDao.getAll(srvId, fatBuild.changes()));
+
                             Map<Integer, ChangeCompacted> map = defect.changeMap();
 
                             Collection<ChangeCompacted> values = map.values();
@@ -197,5 +209,6 @@ public class BoardService {
 
             });
 
+        return cntDefects.get() + " defects processed for " + cntIssues.get() + " issues checked";
     }
 }
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/BoardDefectSummaryUi.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/BoardDefectSummaryUi.java
index 1d4e0af..5cd1a13 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/BoardDefectSummaryUi.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/BoardDefectSummaryUi.java
@@ -20,7 +20,9 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Function;
 import java.util.stream.Collectors;
+import org.apache.ignite.tcbot.engine.defect.BlameCandidate;
 import org.apache.ignite.tcbot.engine.defect.DefectCompacted;
 import org.apache.ignite.tcbot.persistence.IStringCompactor;
 
@@ -33,9 +35,10 @@ public class BoardDefectSummaryUi {
     public Integer cntIssues;
     public Integer fixedIssues;
     public Integer notFixedIssues;
+    public Integer unclearIssues;
 
     public List<String> testOrSuitesAffected = new ArrayList<>();
-    public Set<String> tags = new HashSet<>();
+    private Set<String> tags = new HashSet<>();
 
     public BoardDefectSummaryUi(DefectCompacted defect, IStringCompactor compactor) {
         this.defect = defect;
@@ -43,7 +46,8 @@ public class BoardDefectSummaryUi {
     }
 
     public Set<String> getTags() {
-        return tags;
+        //todo bad code, make tag filter configurable.
+        return tags.stream().filter(t -> t.length() <= 2).collect(Collectors.toSet());
     }
 
     public List<String> getSuites() {
@@ -52,10 +56,45 @@ public class BoardDefectSummaryUi {
         ).distinct().map(compactor::getStringFromId).collect(Collectors.toList());
     }
 
+    public String getSuitesSummary() {
+        List<String> suites = getSuites();
+
+        return limitedListPrint(suites, t -> t);
+    }
+
+    public <X> String limitedListPrint(List<X> suites, Function<X, String> elemToStr) {
+        StringBuilder res = new StringBuilder();
+        int i = 0;
+        for (X next : suites) {
+            if (i >= 3) {
+                int rest = suites.size() - i;
+
+                res.append(" ... and ").append(rest).append(" more");
+                break;
+            }
+            if (res.length() > 0)
+                res.append(", ");
+
+            res.append(elemToStr.apply(next));
+            i++;
+        }
+
+        return res.toString();
+    }
+
     public List<String> getBlameCandidates() {
         return defect.blameCandidates().stream().map(c -> c.vcsUsername(compactor)).collect(Collectors.toList());
     }
 
+    public String getBlameCandidateSummary() {
+        List<BlameCandidate> blameCandidates = defect.blameCandidates();
+
+        if (blameCandidates.isEmpty())
+            return "";
+
+        return limitedListPrint(blameCandidates, next -> next.vcsUsername(compactor));
+    }
+
     public String getTrackedBranch() {
        return compactor.getStringFromId(defect.trackedBranchCid());
     }
@@ -91,4 +130,11 @@ public class BoardDefectSummaryUi {
     public void addTags(Set<String> parameters) {
         this.tags.addAll(parameters);
     }
+
+    public void addUnclearIssue() {
+        if (unclearIssues == null)
+            unclearIssues = 0;
+
+        unclearIssues++;
+    }
 }