summaryrefslogtreecommitdiff
path: root/src/main/java/com/android/vts/servlet/ShowTableServlet.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/android/vts/servlet/ShowTableServlet.java')
-rw-r--r--src/main/java/com/android/vts/servlet/ShowTableServlet.java234
1 files changed, 0 insertions, 234 deletions
diff --git a/src/main/java/com/android/vts/servlet/ShowTableServlet.java b/src/main/java/com/android/vts/servlet/ShowTableServlet.java
deleted file mode 100644
index b56ce9c..0000000
--- a/src/main/java/com/android/vts/servlet/ShowTableServlet.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (c) 2016 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may
- * obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
-
-package com.android.vts.servlet;
-
-import com.android.vts.entity.CodeCoverageEntity;
-import com.android.vts.entity.TestCaseRunEntity;
-import com.android.vts.entity.TestEntity;
-import com.android.vts.entity.TestRunEntity;
-import com.android.vts.proto.VtsReportMessage.TestCaseResult;
-import com.android.vts.util.DatastoreHelper;
-import com.android.vts.util.FilterUtil;
-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.Key;
-import com.google.appengine.api.datastore.KeyFactory;
-import com.google.appengine.api.datastore.Query.Filter;
-import com.google.appengine.api.datastore.Query.SortDirection;
-import com.google.gson.Gson;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Level;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/** Servlet for handling requests to load individual tables. */
-public class ShowTableServlet extends BaseServlet {
- private static final String TABLE_JSP = "WEB-INF/jsp/show_table.jsp";
- // Error message displayed on the webpage is tableName passed is null.
- private static final String TABLE_NAME_ERROR = "Error : Table name must be passed!";
- private static final String PROFILING_DATA_ALERT = "No profiling data was found.";
- private static final int MAX_BUILD_IDS_PER_PAGE = 10;
-
- @Override
- public PageType getNavParentType() {
- return PageType.TOT;
- }
-
- @Override
- public List<Page> getBreadcrumbLinks(HttpServletRequest request) {
- List<Page> links = new ArrayList<>();
- String testName = request.getParameter("testName");
- links.add(new Page(PageType.TABLE, testName, "?testName=" + testName));
- return links;
- }
-
- public static void processTestRun(TestResults testResults, Entity testRun) {
- TestRunEntity testRunEntity = TestRunEntity.fromEntity(testRun);
- if (testRunEntity == null) {
- return;
- }
-
- DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
- List<Key> gets = new ArrayList<>();
- for (long testCaseId : testRunEntity.getTestCaseIds()) {
- gets.add(KeyFactory.createKey(TestCaseRunEntity.KIND, testCaseId));
- }
-
- List<Entity> testCases = new ArrayList<>();
- Map<Key, Entity> entityMap = datastore.get(gets);
- for (Key key : gets) {
- if (entityMap.containsKey(key)) {
- testCases.add(entityMap.get(key));
- }
- }
-
- testResults.addTestRun(testRun, testCases);
- }
-
- @Override
- public void doGetHandler(HttpServletRequest request, HttpServletResponse response)
- throws IOException {
- boolean unfiltered = request.getParameter("unfiltered") != null;
- boolean showPresubmit = request.getParameter("showPresubmit") != null;
- boolean showPostsubmit = request.getParameter("showPostsubmit") != null;
-
- Long startTime = null; // time in microseconds
- Long endTime = null; // time in microseconds
- DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
- RequestDispatcher dispatcher = null;
-
- // message to display if profiling point data is not available
- String profilingDataAlert = "";
-
- if (request.getParameter("testName") == null) {
- request.setAttribute("testName", TABLE_NAME_ERROR);
- return;
- }
- String testName = request.getParameter("testName");
-
- if (request.getParameter("startTime") != null) {
- String time = request.getParameter("startTime");
- try {
- startTime = Long.parseLong(time);
- startTime = startTime > 0 ? startTime : null;
- } catch (NumberFormatException e) {
- startTime = null;
- }
- }
- if (request.getParameter("endTime") != null) {
- String time = request.getParameter("endTime");
- try {
- endTime = Long.parseLong(time);
- endTime = endTime > 0 ? endTime : null;
- } catch (NumberFormatException e) {
- endTime = null;
- }
- }
-
- // If no params are specified, set to default of postsubmit-only.
- if (!(showPresubmit || showPostsubmit)) {
- showPostsubmit = true;
- }
-
- // If unfiltered, set showPre- and Post-submit to true for accurate UI.
- if (unfiltered) {
- showPostsubmit = true;
- showPresubmit = true;
- }
-
- // Add result names to list
- List<String> resultNames = new ArrayList<>();
- for (TestCaseResult r : TestCaseResult.values()) {
- resultNames.add(r.name());
- }
-
- TestResults testResults = new TestResults(testName);
-
- SortDirection dir = SortDirection.DESCENDING;
- if (startTime != null && endTime == null) {
- dir = SortDirection.ASCENDING;
- }
- Key testKey = KeyFactory.createKey(TestEntity.KIND, testName);
-
- Filter typeFilter = FilterUtil.getTestTypeFilter(showPresubmit, showPostsubmit, unfiltered);
- Filter testFilter =
- FilterUtil.getTimeFilter(
- testKey, TestRunEntity.KIND, startTime, endTime, typeFilter);
-
- Map<String, String[]> parameterMap = request.getParameterMap();
- List<Filter> userTestFilters = FilterUtil.getUserTestFilters(parameterMap);
- userTestFilters.add(0, 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();
-
- if (testResults.profilingPointNames.length == 0) {
- profilingDataAlert = PROFILING_DATA_ALERT;
- }
-
- FilterUtil.setAttributes(request, parameterMap);
-
- request.setAttribute("testName", request.getParameter("testName"));
-
- request.setAttribute("error", profilingDataAlert);
-
- // pass values by converting to JSON
- request.setAttribute("headerRow", new Gson().toJson(testResults.headerRow));
- request.setAttribute("timeGrid", new Gson().toJson(testResults.timeGrid));
- request.setAttribute("durationGrid", new Gson().toJson(testResults.durationGrid));
- request.setAttribute("summaryGrid", new Gson().toJson(testResults.summaryGrid));
- request.setAttribute("resultsGrid", new Gson().toJson(testResults.resultsGrid));
- request.setAttribute("profilingPointNames", testResults.profilingPointNames);
- request.setAttribute("resultNames", resultNames);
- request.setAttribute("resultNamesJson", new Gson().toJson(resultNames));
- request.setAttribute("logInfoMap", new Gson().toJson(testResults.logInfoMap));
-
- // data for pie chart
- request.setAttribute(
- "topBuildResultCounts", new Gson().toJson(testResults.totResultCounts));
- request.setAttribute("topBuildId", testResults.totBuildId);
- request.setAttribute("startTime", new Gson().toJson(testResults.startTime));
- request.setAttribute("endTime", new Gson().toJson(testResults.endTime));
- request.setAttribute(
- "hasNewer",
- new Gson()
- .toJson(
- DatastoreHelper.hasNewer(
- testKey, TestRunEntity.KIND, testResults.endTime)));
- request.setAttribute(
- "hasOlder",
- new Gson()
- .toJson(
- DatastoreHelper.hasOlder(
- testKey, TestRunEntity.KIND, testResults.startTime)));
- request.setAttribute("unfiltered", unfiltered);
- request.setAttribute("showPresubmit", showPresubmit);
- request.setAttribute("showPostsubmit", showPostsubmit);
-
- request.setAttribute("branches", new Gson().toJson(DatastoreHelper.getAllBranches()));
- request.setAttribute("devices", new Gson().toJson(DatastoreHelper.getAllBuildFlavors()));
-
- dispatcher = request.getRequestDispatcher(TABLE_JSP);
- try {
- dispatcher.forward(request, response);
- } catch (ServletException e) {
- logger.log(Level.SEVERE, "Servlet Exception caught : " + e.toString());
- }
- }
-}