diff options
author | Ryan Campbell <ryanjcampbell@google.com> | 2017-09-20 12:59:52 -0700 |
---|---|---|
committer | Ryan Campbell <ryanjcampbell@google.com> | 2017-09-21 09:21:14 -0700 |
commit | 4fab0a7bb39e5c500cb21fe1c48d7561dd8d5897 (patch) | |
tree | b8c18815c58fe71743af7358b049546b8ed6dd23 /src/main/java/com/android/vts/servlet/ShowTableServlet.java | |
parent | f87874afedf119adbf5991cc95fb25b7b75f688e (diff) | |
download | dashboard-4fab0a7bb39e5c500cb21fe1c48d7561dd8d5897.tar.gz |
Implement inequality filtering on pass/fail counts
Implement logic for inequality filtering on the test run and test plan
run pass/fail counts. This allows users to better locate the desired
tests (e.g. find all runs with failures, find runs with more than x
failures).
Bug: 65953869
Test: staging
Change-Id: I63db2460188fd2b83f800c205b792526cf714c6e
Diffstat (limited to 'src/main/java/com/android/vts/servlet/ShowTableServlet.java')
-rw-r--r-- | src/main/java/com/android/vts/servlet/ShowTableServlet.java | 54 |
1 files changed, 18 insertions, 36 deletions
diff --git a/src/main/java/com/android/vts/servlet/ShowTableServlet.java b/src/main/java/com/android/vts/servlet/ShowTableServlet.java index 6967a63..d5dae44 100644 --- a/src/main/java/com/android/vts/servlet/ShowTableServlet.java +++ b/src/main/java/com/android/vts/servlet/ShowTableServlet.java @@ -26,11 +26,8 @@ import com.android.vts.util.TestResults; import com.google.appengine.api.datastore.DatastoreService; import com.google.appengine.api.datastore.DatastoreServiceFactory; import com.google.appengine.api.datastore.Entity; -import com.google.appengine.api.datastore.FetchOptions; import com.google.appengine.api.datastore.Key; import com.google.appengine.api.datastore.KeyFactory; -import com.google.appengine.api.datastore.Query; -import com.google.appengine.api.datastore.Query.CompositeFilterOperator; import com.google.appengine.api.datastore.Query.Filter; import com.google.appengine.api.datastore.Query.SortDirection; import com.google.gson.Gson; @@ -152,45 +149,30 @@ public class ShowTableServlet extends BaseServlet { dir = SortDirection.ASCENDING; } Key testKey = KeyFactory.createKey(TestEntity.KIND, testName); - Map<String, Object> parameterMap = request.getParameterMap(); - Filter userTestFilter = FilterUtil.getUserTestFilter(parameterMap); - Filter userDeviceFilter = FilterUtil.getUserDeviceFilter(parameterMap); Filter typeFilter = FilterUtil.getTestTypeFilter(showPresubmit, showPostsubmit, unfiltered); Filter testFilter = FilterUtil.getTimeFilter( testKey, TestRunEntity.KIND, startTime, endTime, typeFilter); - if (userTestFilter == null && userDeviceFilter == null) { - Query testRunQuery = - new Query(TestRunEntity.KIND) - .setAncestor(testKey) - .setFilter(testFilter) - .addSort(Entity.KEY_RESERVED_PROPERTY, dir); - for (Entity testRun : - datastore - .prepare(testRunQuery) - .asIterable(FetchOptions.Builder.withLimit(MAX_BUILD_IDS_PER_PAGE))) { - processTestRun(testResults, testRun); - } - } else { - if (userTestFilter != null) { - testFilter = CompositeFilterOperator.and(userTestFilter, testFilter); - } - List<Key> gets = - FilterUtil.getMatchingKeys( - testKey, - TestRunEntity.KIND, - testFilter, - userDeviceFilter, - dir, - MAX_BUILD_IDS_PER_PAGE); - Map<Key, Entity> entityMap = datastore.get(gets); - for (Key key : gets) { - if (!entityMap.containsKey(key)) { - continue; - } - processTestRun(testResults, entityMap.get(key)); + + Map<String, Object> parameterMap = request.getParameterMap(); + List<Filter> userTestFilters = FilterUtil.getUserTestFilters(parameterMap, testFilter); + Filter userDeviceFilter = FilterUtil.getUserDeviceFilter(parameterMap); + + List<Key> gets = + FilterUtil.getMatchingKeys( + testKey, + TestRunEntity.KIND, + userTestFilters, + userDeviceFilter, + dir, + MAX_BUILD_IDS_PER_PAGE); + Map<Key, Entity> entityMap = datastore.get(gets); + for (Key key : gets) { + if (!entityMap.containsKey(key)) { + continue; } + processTestRun(testResults, entityMap.get(key)); } testResults.processReport(); |