com.atlassian.bamboo.resultsummary.tests
Class TestsManagerImpl

java.lang.Object
  extended by com.atlassian.bamboo.resultsummary.tests.TestsManagerImpl
All Implemented Interfaces:
TestsManager

public class TestsManagerImpl
extends java.lang.Object
implements TestsManager


Constructor Summary
TestsManagerImpl(TestCaseDao testCaseDao, TestCaseResultDao testCaseResultDao, TestResultsDao testResultsDao, TestsDao testsDao, PlanManager planManager, ResultsSummaryManager resultsSummaryManager)
           
 
Method Summary
 void copyTestResultsToBuildResultsSummary(BuildResultsSummary summary, BuildResults buildResults, BuildContext buildContext)
          Converts the test results sent back from the agent to a list of TestClassResults and attaches them to the BRS.
 void copyTestResultsToBuildResultsSummary(Plan plan, BuildResultsSummary summary, java.util.List<TestResults> oldTests)
          Converts a set of test results to a list of TestClassResults and attaches them to the BRS.
 java.util.List<Pair<TestCaseResult,java.lang.Integer>> getLastNFailingResults(TestCase testCase, int number)
          Retrieve the last n failing testResults for this given test case, latest first.
 java.util.List<Pair<TestCaseResult,java.lang.Integer>> getLastNFailingResults(TestCase testCase, java.util.List<BuildResultsSummary> buildResults, int number)
          Retrieve the last n failing testResults for this given test case, but only those that occurred within the provided build results.
 java.util.List<TestCase> getLongestRunningTestCases(ImmutablePlan plan)
          Provide a list of the top ten longest running tests for a plan, based on the duration of the TestCase's TestCaseResults Finds top 10 results in order (longest first)
 java.util.List<Pair<TestCase,java.lang.Float>> getLongestToFixTestCases(ImmutablePlan plan)
          Retrieve a list of the test cases that have taken the longest amount of time to fix.
 java.util.List<Pair<TestCase,java.lang.Float>> getLongestToFixTestCases(java.util.List<BuildResultsSummary> buildResults)
          Retrieve a list of the test cases that have taken the longest amount of time to fix.
 java.util.List<Pair<TestCase,java.lang.Integer>> getMostFailingTestCases(ImmutablePlan plan)
          Provide a list of the top 10 most failing test cases for a plan.
 java.util.List<Pair<TestCase,java.lang.Integer>> getMostFailingTestCases(java.util.List<BuildResultsSummary> buildResults)
          Provide a list of the top 10 most failing test cases for a plan.
protected  java.util.Map<TestCase,TestCaseResult> getPreviousFailures(BuildResultsSummary buildResultsSummary)
           
 java.util.List<TestCaseResultStatisticsProvider> getResultStatistics(TestCase testCase)
          Returns a list of wrapped TestCaseResult and BuildResultSummary for a particular test case, for use by e.g.
 java.util.List<TestCaseResultStatisticsProvider> getResultStatistics(TestCase testCase, java.util.List<BuildResultsSummary> buildResults)
          Returns a list of wrapped TestCaseResult and BuildResultSummary for a particular test case and contained within a specific span of build result summaries.
 BuildResultsSummary getSucceedingSinceBuildResultSummary(TestCase testCase)
          Find the build in which the given test has been successful since.
 TestCase getTestCaseById(long testCaseId)
          Find a specific testCase by id
 TestCaseResult getTestCaseResult(TestCase testCase, long buildNumber)
          Find a specific run of a testCase
 TestCaseResult getTestCaseResultById(long testCaseId)
          Find a specific testCaseResult by id
 java.util.List<TestCaseResult> getTestCaseResults(TestCase testCase, long buildNumber)
          Find a specific run of a testCase
 TestClass getTestClassById(long testClassId)
          Find a specific testClass by id
 TestClassResult getTestClassResultById(long testClassResultId)
          Find a specific testClassResult by id
 java.util.List<TestClassResult> getTestClassResults(PlanResultKey planResultKey)
          Retrieves a list of all testClassResults for a BuildResultSummary
 com.google.common.collect.TreeMultimap<TestClassResult,TestCaseResult> getTestOrderedMap(java.util.List<TestCaseResult> tests)
          Generate a ListOrderedMap of TestClassResult to List based on a given list of TestCaseResults.
 java.util.List<TestCaseResult> getTestsForBuildResultByDeltaState(BuildResultsSummary summary, TestDeltaState deltaState, int firstResult, int maxCount)
          Retrieves a list of testCaseResults for a BuildResultSummary based on their delta state (e.g BROKEN, FIXED)
 java.util.List<TestCaseResult> getTestsForBuildResultByState(BuildResultsSummary summary, TestState state)
          Retrieves a list of testCaseResults for a BuildResultSummary based on their state (e.f FAILED or SUCCESS)
 java.util.List<TestCaseResult> getTestsForBuildResultByState(BuildResultsSummary summary, TestState state, int firstResult, int maxCount)
          Retrieves a list of testCaseResults for a BuildResultSummary based on their state (e.f FAILED or SUCCESS).
 java.util.List<TestCaseResult> getTestsForChainResultByDeltaState(ChainResultsSummary summary, TestDeltaState deltaState, int firstResult, int maxCount)
          Retrieves a list of testCaseResults for a ChainResultSummary based on their delta state (e.g BROKEN, FIXED)
 java.util.List<TestCaseResult> getTestsForChainResultByDeltaStates(ChainResultsSummary summary, TestDeltaState[] deltaStates, int firstResult, int maxCount)
          Retrieves a list of testCaseResults for a ChainResultSummary based on their delta state (e.g BROKEN, FIXED)
 java.util.List<TestCaseResult> getTestsForChainResultByState(ChainResultsSummary summary, TestState testState, int firstResult, int maxCount)
          Retrieves a list of testCaseResults for a ChainResultSummary based on their TestState
 java.util.List<Pair<TestCase,java.lang.Integer>> getTopBrokenTests(PlanKey planKey, BuildResultsFilter filter)
          Returns a pai of the top 10 tests that's broken + the count for a given filter period
 int removeResultsByPlan(Plan plan)
          Remove all TestClassResult objects referenced by ResultsSummary objects identified by planKey
 int removeResultsByPlan(PlanKey planKey)
          Remove all TestClassResult objects referenced by ResultsSummary objects identified by planKey
 void repopulateTestResultsInBuildResultsSummary(Plan plan, BuildResultsSummary summary, java.util.List<TestResults> successfulTests)
           
 void saveTestCase(TestCase testCase)
          Save an individual TestCase to the database
 void saveTestClass(TestClass testClass)
          Save a TestClass (and included TestCases) to the database
protected  void updateTestCaseResultDeltaInformation(BuildResultsSummary summary, TestCaseResult testResult, java.util.Map<TestCase,TestCaseResult> previousFailures)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TestsManagerImpl

public TestsManagerImpl(TestCaseDao testCaseDao,
                        TestCaseResultDao testCaseResultDao,
                        TestResultsDao testResultsDao,
                        TestsDao testsDao,
                        PlanManager planManager,
                        ResultsSummaryManager resultsSummaryManager)
Method Detail

saveTestClass

public void saveTestClass(TestClass testClass)
Description copied from interface: TestsManager
Save a TestClass (and included TestCases) to the database

Specified by:
saveTestClass in interface TestsManager
Parameters:
testClass - to save

saveTestCase

public void saveTestCase(TestCase testCase)
Description copied from interface: TestsManager
Save an individual TestCase to the database

Specified by:
saveTestCase in interface TestsManager
Parameters:
testCase - to save

getTestCaseResultById

public TestCaseResult getTestCaseResultById(long testCaseId)
Description copied from interface: TestsManager
Find a specific testCaseResult by id

Specified by:
getTestCaseResultById in interface TestsManager
Parameters:
testCaseId - of the test you want to find
Returns:
the testCaseResult corresponding to the id provided.

getTestClassResultById

public TestClassResult getTestClassResultById(long testClassResultId)
Description copied from interface: TestsManager
Find a specific testClassResult by id

Specified by:
getTestClassResultById in interface TestsManager
Parameters:
testClassResultId - of the test you want to find
Returns:
the testClassResult corresponding to the id provided.

getTestClassById

@Nullable
public TestClass getTestClassById(long testClassId)
Description copied from interface: TestsManager
Find a specific testClass by id

Specified by:
getTestClassById in interface TestsManager
Parameters:
testClassId - of the test class you want to find
Returns:
the testClass corresponding to the id provided.

getTestCaseById

@Nullable
public TestCase getTestCaseById(long testCaseId)
Description copied from interface: TestsManager
Find a specific testCase by id

Specified by:
getTestCaseById in interface TestsManager
Parameters:
testCaseId - of the test case you want to find
Returns:
the testCase corresponding to the id provided.

getTestsForBuildResultByState

@NotNull
public java.util.List<TestCaseResult> getTestsForBuildResultByState(BuildResultsSummary summary,
                                                                            TestState state)
Description copied from interface: TestsManager
Retrieves a list of testCaseResults for a BuildResultSummary based on their state (e.f FAILED or SUCCESS)

Specified by:
getTestsForBuildResultByState in interface TestsManager
Parameters:
summary - the BuildResultsSummary to get the tests for
state - - The TestState to search for.
Returns:
a list of testCaseResults for a BuildResultSummary with the given state

getTestsForBuildResultByState

@NotNull
public java.util.List<TestCaseResult> getTestsForBuildResultByState(BuildResultsSummary summary,
                                                                            TestState state,
                                                                            int firstResult,
                                                                            int maxCount)
Description copied from interface: TestsManager
Retrieves a list of testCaseResults for a BuildResultSummary based on their state (e.f FAILED or SUCCESS). To be used whenever pagination is required.

Specified by:
getTestsForBuildResultByState in interface TestsManager
Parameters:
summary - the BuildResultsSummary to get the tests for
state - - The TestState to search for.
firstResult - - index of the first result
maxCount - - maximum amount of records returned
Returns:
a list of testCaseResults for a BuildResultSummary with the given state

getTestsForBuildResultByDeltaState

@NotNull
public java.util.List<TestCaseResult> getTestsForBuildResultByDeltaState(BuildResultsSummary summary,
                                                                                 TestDeltaState deltaState,
                                                                                 int firstResult,
                                                                                 int maxCount)
Description copied from interface: TestsManager
Retrieves a list of testCaseResults for a BuildResultSummary based on their delta state (e.g BROKEN, FIXED)

Specified by:
getTestsForBuildResultByDeltaState in interface TestsManager
Parameters:
summary - the BuildResultsSummary to get the tests for
deltaState - - The TestDeltaState to search for.
firstResult - - index of the first result
maxCount - - maximum amount of records returned
Returns:
a list of testCaseResults for a BuildResultSummary with the given delta state

getTestsForChainResultByDeltaState

public java.util.List<TestCaseResult> getTestsForChainResultByDeltaState(ChainResultsSummary summary,
                                                                         TestDeltaState deltaState,
                                                                         int firstResult,
                                                                         int maxCount)
Description copied from interface: TestsManager
Retrieves a list of testCaseResults for a ChainResultSummary based on their delta state (e.g BROKEN, FIXED)

Specified by:
getTestsForChainResultByDeltaState in interface TestsManager
firstResult - - index of the first result
maxCount - - maximum amount of records returned
Returns:
testCaseResults

getTestsForChainResultByDeltaStates

@NotNull
public java.util.List<TestCaseResult> getTestsForChainResultByDeltaStates(@NotNull
                                                                                  ChainResultsSummary summary,
                                                                                  @NotNull
                                                                                  TestDeltaState[] deltaStates,
                                                                                  int firstResult,
                                                                                  int maxCount)
Description copied from interface: TestsManager
Retrieves a list of testCaseResults for a ChainResultSummary based on their delta state (e.g BROKEN, FIXED)

Specified by:
getTestsForChainResultByDeltaStates in interface TestsManager
firstResult - - index of the first result
maxCount - - maximum amount of records returned
Returns:
testCaseResults

getTestsForChainResultByState

@NotNull
public java.util.List<TestCaseResult> getTestsForChainResultByState(@NotNull
                                                                            ChainResultsSummary summary,
                                                                            @NotNull
                                                                            TestState testState,
                                                                            int firstResult,
                                                                            int maxCount)
Description copied from interface: TestsManager
Retrieves a list of testCaseResults for a ChainResultSummary based on their TestState

Specified by:
getTestsForChainResultByState in interface TestsManager
Returns:
testCaseResults

getResultStatistics

@NotNull
public java.util.List<TestCaseResultStatisticsProvider> getResultStatistics(@NotNull
                                                                                    TestCase testCase)
Description copied from interface: TestsManager
Returns a list of wrapped TestCaseResult and BuildResultSummary for a particular test case, for use by e.g. graphs

Specified by:
getResultStatistics in interface TestsManager
Parameters:
testCase - to find the results for
Returns:
List for each TestCaseResult found for the TestCase

getResultStatistics

@NotNull
public java.util.List<TestCaseResultStatisticsProvider> getResultStatistics(@NotNull
                                                                                    TestCase testCase,
                                                                                    @NotNull
                                                                                    java.util.List<BuildResultsSummary> buildResults)
Description copied from interface: TestsManager
Returns a list of wrapped TestCaseResult and BuildResultSummary for a particular test case and contained within a specific span of build result summaries. For use by e.g. graphs

Specified by:
getResultStatistics in interface TestsManager
Parameters:
testCase - to find the results for
buildResults - to contain search to (this list must not be empty)
Returns:
List for each TestCaseResult found for the TestCase

getLastNFailingResults

@NotNull
public java.util.List<Pair<TestCaseResult,java.lang.Integer>> getLastNFailingResults(@NotNull
                                                                                             TestCase testCase,
                                                                                             int number)
Description copied from interface: TestsManager
Retrieve the last n failing testResults for this given test case, latest first.

Specified by:
getLastNFailingResults in interface TestsManager
Parameters:
testCase - to look for the results for.
number - of results to retrieve
Returns:
List of pairs containing the offending TestCaseResult and the build number it occurred in.

getLastNFailingResults

@NotNull
public java.util.List<Pair<TestCaseResult,java.lang.Integer>> getLastNFailingResults(@NotNull
                                                                                             TestCase testCase,
                                                                                             @NotNull
                                                                                             java.util.List<BuildResultsSummary> buildResults,
                                                                                             int number)
Description copied from interface: TestsManager
Retrieve the last n failing testResults for this given test case, but only those that occurred within the provided build results. Latest first.

Specified by:
getLastNFailingResults in interface TestsManager
Parameters:
testCase - to look for the results for.
buildResults - to search in for the tests.
number - of results to retrieve
Returns:
List of pairs containing the offending TestCaseResult and the build number it occurred in.

getLongestRunningTestCases

@NotNull
public java.util.List<TestCase> getLongestRunningTestCases(@NotNull
                                                                   ImmutablePlan plan)
Description copied from interface: TestsManager
Provide a list of the top ten longest running tests for a plan, based on the duration of the TestCase's TestCaseResults Finds top 10 results in order (longest first)

Specified by:
getLongestRunningTestCases in interface TestsManager
Parameters:
plan - to search in for the tests.
Returns:
List of TestCases

getMostFailingTestCases

@NotNull
public java.util.List<Pair<TestCase,java.lang.Integer>> getMostFailingTestCases(@NotNull
                                                                                        ImmutablePlan plan)
Description copied from interface: TestsManager
Provide a list of the top 10 most failing test cases for a plan. It is calculated based on failure count, not percentage. Results are ordered from most failing to least failing.

Specified by:
getMostFailingTestCases in interface TestsManager
Parameters:
plan - to search for the tests
Returns:
List of Pairs containing the testCase and the number of failures found (int)

getMostFailingTestCases

@NotNull
public java.util.List<Pair<TestCase,java.lang.Integer>> getMostFailingTestCases(@NotNull
                                                                                        java.util.List<BuildResultsSummary> buildResults)
Description copied from interface: TestsManager
Provide a list of the top 10 most failing test cases for a plan. It is calculated based on failure count, not percentage Results are ordered from most failing to least failing.

Specified by:
getMostFailingTestCases in interface TestsManager
Parameters:
buildResults - to search in for the tests.
Returns:
List of Pairs containing the testCase and the number of failures found (int)

getLongestToFixTestCases

@NotNull
public java.util.List<Pair<TestCase,java.lang.Float>> getLongestToFixTestCases(@NotNull
                                                                                       ImmutablePlan plan)
Description copied from interface: TestsManager
Retrieve a list of the test cases that have taken the longest amount of time to fix. Returns top 10 with the longest to fix first.

Specified by:
getLongestToFixTestCases in interface TestsManager
Parameters:
plan - to search for results in
Returns:
List of Pairs containing the testCase and the average number of builds between breakages and its corresponding fix (float)

getTopBrokenTests

public java.util.List<Pair<TestCase,java.lang.Integer>> getTopBrokenTests(@NotNull
                                                                          PlanKey planKey,
                                                                          BuildResultsFilter filter)
Description copied from interface: TestsManager
Returns a pai of the top 10 tests that's broken + the count for a given filter period

Specified by:
getTopBrokenTests in interface TestsManager
Returns:

getLongestToFixTestCases

@NotNull
public java.util.List<Pair<TestCase,java.lang.Float>> getLongestToFixTestCases(@NotNull
                                                                                       java.util.List<BuildResultsSummary> buildResults)
Description copied from interface: TestsManager
Retrieve a list of the test cases that have taken the longest amount of time to fix. Returns top 10 with the longest to fix first.

Specified by:
getLongestToFixTestCases in interface TestsManager
Parameters:
buildResults - to search in for the tests.
Returns:
List of Pairs containing the testCase and the average number of builds between breakages and its corresponding fix (float)

getTestCaseResult

@Nullable
public TestCaseResult getTestCaseResult(TestCase testCase,
                                                 long buildNumber)
Description copied from interface: TestsManager
Find a specific run of a testCase

Specified by:
getTestCaseResult in interface TestsManager
Parameters:
testCase - to look for
buildNumber - of the build the run should have occured in
Returns:
the TestCaseResult for the given test case, if it ran in the given build.

getTestCaseResults

@NotNull
public java.util.List<TestCaseResult> getTestCaseResults(TestCase testCase,
                                                                 long buildNumber)
Description copied from interface: TestsManager
Find a specific run of a testCase

Specified by:
getTestCaseResults in interface TestsManager
Parameters:
testCase - to look for
buildNumber - of the build the run should have occured in
Returns:
the TestCaseResult for the given test case, if it ran in the given build.

getSucceedingSinceBuildResultSummary

@Nullable
public BuildResultsSummary getSucceedingSinceBuildResultSummary(TestCase testCase)
Description copied from interface: TestsManager
Find the build in which the given test has been successful since. AKA the last recored "FIXED" test run.

Specified by:
getSucceedingSinceBuildResultSummary in interface TestsManager
Parameters:
testCase - to search history for.
Returns:
the BuildResultSummary that this test has been successful since.

removeResultsByPlan

public int removeResultsByPlan(@NotNull
                               Plan plan)
Description copied from interface: TestsManager
Remove all TestClassResult objects referenced by ResultsSummary objects identified by planKey

Specified by:
removeResultsByPlan in interface TestsManager
Parameters:
plan - plan
Returns:
number of removed objects

removeResultsByPlan

public int removeResultsByPlan(@NotNull
                               PlanKey planKey)
Description copied from interface: TestsManager
Remove all TestClassResult objects referenced by ResultsSummary objects identified by planKey

Specified by:
removeResultsByPlan in interface TestsManager
Parameters:
planKey - planKey
Returns:
number of removed objects

getTestOrderedMap

@NotNull
public com.google.common.collect.TreeMultimap<TestClassResult,TestCaseResult> getTestOrderedMap(@NotNull
                                                                                                        java.util.List<TestCaseResult> tests)
Description copied from interface: TestsManager
Generate a ListOrderedMap of TestClassResult to List based on a given list of TestCaseResults.

Specified by:
getTestOrderedMap in interface TestsManager
Parameters:
tests - to put in the map
Returns:
a ListOrderedMap of TestClassResult to List

copyTestResultsToBuildResultsSummary

public void copyTestResultsToBuildResultsSummary(@NotNull
                                                 BuildResultsSummary summary,
                                                 @NotNull
                                                 BuildResults buildResults,
                                                 @NotNull
                                                 BuildContext buildContext)
Description copied from interface: TestsManager
Converts the test results sent back from the agent to a list of TestClassResults and attaches them to the BRS. Also updates (but does not save) testResultsSummary information in the BRS. This method does not save the test results, or the summary, but does save TestClass and TestCase objects to the database as required.

Specified by:
copyTestResultsToBuildResultsSummary in interface TestsManager
Parameters:
summary - for the interesting tests to be attached to.
buildResults - for the boring tests to be attached to
buildContext - for the build that has the tests we want to move

getTestClassResults

@NotNull
public java.util.List<TestClassResult> getTestClassResults(@NotNull
                                                                   PlanResultKey planResultKey)
Description copied from interface: TestsManager
Retrieves a list of all testClassResults for a BuildResultSummary

Specified by:
getTestClassResults in interface TestsManager
Parameters:
planResultKey - key of the BuildResultsSummary to get the tests class results for
Returns:
a list of all testClassResults for the BuildResultSummary

copyTestResultsToBuildResultsSummary

public void copyTestResultsToBuildResultsSummary(@NotNull
                                                 Plan plan,
                                                 @NotNull
                                                 BuildResultsSummary summary,
                                                 @NotNull
                                                 java.util.List<TestResults> oldTests)
Description copied from interface: TestsManager
Converts a set of test results to a list of TestClassResults and attaches them to the BRS. Also updates (but does not save) testResultsSummary information in the BRS. This method does not save the test results, or the summary, but does save TestClass and TestCase objects to the database as required.

Specified by:
copyTestResultsToBuildResultsSummary in interface TestsManager
Parameters:
plan - the tests are run against
summary - for the tests to be attached to.
oldTests - the set of tests to convert.

repopulateTestResultsInBuildResultsSummary

public void repopulateTestResultsInBuildResultsSummary(@NotNull
                                                       Plan plan,
                                                       @NotNull
                                                       BuildResultsSummary summary,
                                                       @NotNull
                                                       java.util.List<TestResults> successfulTests)
Specified by:
repopulateTestResultsInBuildResultsSummary in interface TestsManager

updateTestCaseResultDeltaInformation

protected void updateTestCaseResultDeltaInformation(@NotNull
                                                    BuildResultsSummary summary,
                                                    @NotNull
                                                    TestCaseResult testResult,
                                                    @NotNull
                                                    java.util.Map<TestCase,TestCaseResult> previousFailures)

getPreviousFailures

@NotNull
protected java.util.Map<TestCase,TestCaseResult> getPreviousFailures(@NotNull
                                                                             BuildResultsSummary buildResultsSummary)


Copyright © 2013 Atlassian Software Systems Pty Ltd. All Rights Reserved.