diff options
author | Young Gyu Park <younggyu@google.com> | 2018-05-29 19:07:27 +0900 |
---|---|---|
committer | Young Gyu Park <younggyu@google.com> | 2018-06-01 14:43:39 +0900 |
commit | 3ff7fcf07115812ffe5ec50525e23eda3577ac75 (patch) | |
tree | 549fd84e5a8c0043d951dcdf1e924e2accdda36d /src/main/java | |
parent | 7a9b488cfbfd8b3944142b6d4ba1a9f5eb43c7cd (diff) | |
download | dashboard-3ff7fcf07115812ffe5ec50525e23eda3577ac75.tar.gz |
Project managing tool change from maven to gradleandroid-o-mr1-iot-release-1.0.1
Test: go/vts-web/show_plan_release?plan=cts-on-gsi&type=suite&testCategoryType=4
Bug: 80407473
Change-Id: I6dfcd329d4c33cd5f3edf25c45caed80196c8f99
Diffstat (limited to 'src/main/java')
10 files changed, 354 insertions, 171 deletions
diff --git a/src/main/java/com/android/vts/api/BigtableLegacyJsonServlet.java b/src/main/java/com/android/vts/api/BigtableLegacyJsonServlet.java index d2b4a61..ac69b84 100644 --- a/src/main/java/com/android/vts/api/BigtableLegacyJsonServlet.java +++ b/src/main/java/com/android/vts/api/BigtableLegacyJsonServlet.java @@ -17,6 +17,7 @@ package com.android.vts.api; import com.android.vts.proto.VtsReportMessage.TestReportMessage; +import com.android.vts.servlet.BaseServlet; import com.android.vts.util.DatastoreHelper; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.http.javanet.NetHttpTransport; @@ -25,9 +26,14 @@ import com.google.api.services.oauth2.Oauth2; import com.google.api.services.oauth2.model.Tokeninfo; import com.google.protobuf.InvalidProtocolBufferException; import java.io.BufferedReader; +import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -38,11 +44,33 @@ import org.json.JSONObject; /** REST endpoint for posting data JSON to the Dashboard. */ @Deprecated public class BigtableLegacyJsonServlet extends HttpServlet { - private static final String SERVICE_CLIENT_ID = System.getProperty("SERVICE_CLIENT_ID"); + private static String SERVICE_CLIENT_ID; private static final String SERVICE_NAME = "VTS Dashboard"; private static final Logger logger = Logger.getLogger(BigtableLegacyJsonServlet.class.getName()); + /** System Configuration Property class */ + protected Properties systemConfigProp = new Properties(); + + @Override + public void init(ServletConfig cfg) throws ServletException { + super.init(cfg); + + try { + InputStream defaultInputStream = + BigtableLegacyJsonServlet.class + .getClassLoader() + .getResourceAsStream("config.properties"); + systemConfigProp.load(defaultInputStream); + + SERVICE_CLIENT_ID = systemConfigProp.getProperty("appengine.serviceClientID"); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { @@ -93,7 +121,8 @@ public class BigtableLegacyJsonServlet extends HttpServlet { insertData(payloadJson); break; default: - logger.log(Level.WARNING, + logger.log( + Level.WARNING, "Invalid Datastore REST verb: " + payloadJson.getString("verb")); throw new IOException("Unsupported POST verb."); } @@ -110,8 +139,7 @@ public class BigtableLegacyJsonServlet extends HttpServlet { * * @param payloadJson The JSON object representing the row to be inserted. Of the form: { * (deprecated) 'tableName' : 'table', (deprecated) 'rowKey' : 'row', (deprecated) 'family' - * : - * 'family', (deprecated) 'qualifier' : 'qualifier', 'value' : 'value' } + * : 'family', (deprecated) 'qualifier' : 'qualifier', 'value' : 'value' } * @throws IOException */ private void insertData(JSONObject payloadJson) throws IOException { diff --git a/src/main/java/com/android/vts/api/DatastoreRestServlet.java b/src/main/java/com/android/vts/api/DatastoreRestServlet.java index 8910267..42d7a60 100644 --- a/src/main/java/com/android/vts/api/DatastoreRestServlet.java +++ b/src/main/java/com/android/vts/api/DatastoreRestServlet.java @@ -19,16 +19,24 @@ package com.android.vts.api; import com.android.vts.proto.VtsReportMessage.DashboardPostMessage; import com.android.vts.proto.VtsReportMessage.TestPlanReportMessage; import com.android.vts.proto.VtsReportMessage.TestReportMessage; +import com.android.vts.servlet.BaseServlet; import com.android.vts.util.DatastoreHelper; +import com.android.vts.util.EmailHelper; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.jackson.JacksonFactory; import com.google.api.services.oauth2.Oauth2; import com.google.api.services.oauth2.model.Tokeninfo; + +import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -36,10 +44,32 @@ import org.apache.commons.codec.binary.Base64; /** REST endpoint for posting data to the Dashboard. */ public class DatastoreRestServlet extends HttpServlet { - private static final String SERVICE_CLIENT_ID = System.getProperty("SERVICE_CLIENT_ID"); + private static String SERVICE_CLIENT_ID; private static final String SERVICE_NAME = "VTS Dashboard"; private static final Logger logger = Logger.getLogger(DatastoreRestServlet.class.getName()); + /** System Configuration Property class */ + protected Properties systemConfigProp = new Properties(); + + @Override + public void init(ServletConfig cfg) throws ServletException { + super.init(cfg); + + try { + InputStream defaultInputStream = + DatastoreRestServlet.class + .getClassLoader() + .getResourceAsStream("config.properties"); + systemConfigProp.load(defaultInputStream); + + SERVICE_CLIENT_ID = systemConfigProp.getProperty("appengine.serviceClientID"); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { @@ -70,7 +100,8 @@ public class DatastoreRestServlet extends HttpServlet { DatastoreHelper.insertTestReport(testReportMessage); } - for (TestPlanReportMessage planReportMessage : postMessage.getTestPlanReportList()) { + for (TestPlanReportMessage planReportMessage : + postMessage.getTestPlanReportList()) { DatastoreHelper.insertTestPlanReport(planReportMessage); } diff --git a/src/main/java/com/android/vts/api/TestDataForDevServlet.java b/src/main/java/com/android/vts/api/TestDataForDevServlet.java index e6a4413..75432c7 100644 --- a/src/main/java/com/android/vts/api/TestDataForDevServlet.java +++ b/src/main/java/com/android/vts/api/TestDataForDevServlet.java @@ -32,6 +32,8 @@ import com.android.vts.entity.TestStatusEntity; import com.android.vts.entity.TestRunEntity.TestRunType; import com.android.vts.entity.TestStatusEntity.TestCaseReference; +import com.android.vts.servlet.BaseServlet; +import com.android.vts.util.EmailHelper; import com.google.appengine.api.datastore.DatastoreFailureException; import com.google.appengine.api.datastore.DatastoreService; import com.google.appengine.api.datastore.DatastoreServiceFactory; @@ -48,7 +50,10 @@ import com.google.appengine.api.users.UserServiceFactory; import com.google.appengine.api.utils.SystemProperty; import com.google.gson.Gson; import com.google.gson.GsonBuilder; + +import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.nio.file.FileSystems; @@ -63,11 +68,13 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Properties; import java.util.Random; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.IntStream; +import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; @@ -78,8 +85,7 @@ public class TestDataForDevServlet extends HttpServlet { protected static final Logger logger = Logger.getLogger(TestDataForDevServlet.class.getName()); /** Google Cloud Storage project's default directory name for suite test result files */ - private static final String GCS_SUITE_TEST_FOLDER_NAME = - System.getProperty("GCS_SUITE_TEST_FOLDER_NAME"); + private static String GCS_SUITE_TEST_FOLDER_NAME; /** datastore instance to save the test data into datastore through datastore library. */ private DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); @@ -89,6 +95,28 @@ public class TestDataForDevServlet extends HttpServlet { */ private Gson gson = new GsonBuilder().create(); + /** System Configuration Property class */ + protected Properties systemConfigProp = new Properties(); + + @Override + public void init(ServletConfig cfg) throws ServletException { + super.init(cfg); + + try { + InputStream defaultInputStream = + TestDataForDevServlet.class + .getClassLoader() + .getResourceAsStream("config.properties"); + systemConfigProp.load(defaultInputStream); + + GCS_SUITE_TEST_FOLDER_NAME = systemConfigProp.getProperty("gcs.suiteTestFolderName"); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + /** * TestReportData class for mapping test-report-data.json. This internal class's each fields * will be automatically mapped to test-report-data.json file through Gson @@ -205,93 +233,117 @@ public class TestDataForDevServlet extends HttpServlet { "aosp_arm_a-userdebug"); branchList.forEach( branch -> - targetList.forEach( - target -> - IntStream.range(0, 10) - .forEach( - idx -> { - String year = String.format("%04d", 2010 + idx); - String month = - String.format("%02d", rand.nextInt(12)); - String day = - String.format("%02d", rand.nextInt(30)); - String fileName = - String.format( - "%02d%02d%02d.bin", - rand.nextInt(23) + 1, - rand.nextInt(59) + 1, - rand.nextInt(59) + 1); - - List<String> pathList = - Arrays.asList( - GCS_SUITE_TEST_FOLDER_NAME == "" - ? "suite_result" - : GCS_SUITE_TEST_FOLDER_NAME, - year, - month, - day, - fileName); - - Path pathInfo = - Paths.get( - String.join( - fileSeparator, - pathList)); - - TestSuiteFileEntity newTestSuiteFileEntity = - new TestSuiteFileEntity( - pathInfo.toString()); - newTestSuiteFileEntity.save(); - - com.googlecode.objectify.Key< - TestSuiteFileEntity> - testSuiteFileParent = - com.googlecode.objectify.Key - .create( + targetList.forEach( + target -> + IntStream.range(0, 10) + .forEach( + idx -> { + String year = + String.format( + "%04d", 2010 + idx); + String month = + String.format( + "%02d", + rand.nextInt(12)); + String day = + String.format( + "%02d", + rand.nextInt(30)); + String fileName = + String.format( + "%02d%02d%02d.bin", + rand.nextInt(23) + 1, + rand.nextInt(59) + 1, + rand.nextInt(59) + 1); + + List<String> pathList = + Arrays.asList( + GCS_SUITE_TEST_FOLDER_NAME + == "" + ? "suite_result" + : GCS_SUITE_TEST_FOLDER_NAME, + year, + month, + day, + fileName); + + Path pathInfo = + Paths.get( + String.join( + fileSeparator, + pathList)); + + TestSuiteFileEntity + newTestSuiteFileEntity = + new TestSuiteFileEntity( + pathInfo + .toString()); + newTestSuiteFileEntity.save(); + + com.googlecode.objectify.Key< + TestSuiteFileEntity> + testSuiteFileParent = + com.googlecode.objectify + .Key.create( TestSuiteFileEntity .class, newTestSuiteFileEntity .getFilePath()); - TestSuiteResultEntity testSuiteResultEntity = - new TestSuiteResultEntity( - testSuiteFileParent, - Instant.now() - .minus( - rand.nextInt( - 100), - ChronoUnit.DAYS) - .getEpochSecond(), - Instant.now() - .minus( - rand.nextInt( - 100), - ChronoUnit.DAYS) - .getEpochSecond(), - 1, - idx / 2 == 0 ? false : true, - pathInfo.toString(), - idx / 2 == 0 ? "/error/infra/log" : "", - "Test Place Name -" + idx, - "Suite Test Plan", - "Suite Version " + idx, - "Suite Test Name", - "Suite Build Number " + idx, - rand.nextInt(), - rand.nextInt(), - branch, - target, - Long.toString(Math.abs(rand.nextLong())), - "Build System Fingerprint " - + idx, - "Build Vendor Fingerprint " - + idx, - rand.nextInt(), - rand.nextInt()); - - testSuiteResultEntity.save(); - }) - ) - ); + TestSuiteResultEntity + testSuiteResultEntity = + new TestSuiteResultEntity( + testSuiteFileParent, + Instant.now() + .minus( + rand + .nextInt( + 100), + ChronoUnit + .DAYS) + .getEpochSecond(), + Instant.now() + .minus( + rand + .nextInt( + 100), + ChronoUnit + .DAYS) + .getEpochSecond(), + 1, + idx / 2 == 0 + ? false + : true, + pathInfo + .toString(), + idx / 2 == 0 + ? "/error/infra/log" + : "", + "Test Place Name -" + + idx, + "Suite Test Plan", + "Suite Version " + + idx, + "Suite Test Name", + "Suite Build Number " + + idx, + rand.nextInt(), + rand.nextInt(), + branch, + target, + Long.toString( + Math + .abs( + rand + .nextLong())), + "Build System Fingerprint " + + idx, + "Build Vendor Fingerprint " + + idx, + rand.nextInt(), + rand.nextInt()); + + testSuiteResultEntity.save(); + }))); resultMap.put("result", "successfully generated!"); return resultMap; } diff --git a/src/main/java/com/android/vts/api/TestSuiteResultRestServlet.java b/src/main/java/com/android/vts/api/TestSuiteResultRestServlet.java index 61931cb..9887ccd 100644 --- a/src/main/java/com/android/vts/api/TestSuiteResultRestServlet.java +++ b/src/main/java/com/android/vts/api/TestSuiteResultRestServlet.java @@ -19,6 +19,7 @@ package com.android.vts.api; import com.android.vts.entity.TestSuiteFileEntity; import com.android.vts.entity.TestSuiteResultEntity; import com.android.vts.proto.TestSuiteResultMessageProto.TestSuiteResultMessage; +import com.android.vts.servlet.BaseServlet; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.jackson.JacksonFactory; @@ -31,22 +32,49 @@ import org.apache.commons.codec.binary.Base64; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; import java.util.stream.IntStream; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; /** REST endpoint for posting test suite data to the Dashboard. */ public class TestSuiteResultRestServlet extends HttpServlet { - private static final String SERVICE_CLIENT_ID = System.getProperty("SERVICE_CLIENT_ID"); + private static String SERVICE_CLIENT_ID; private static final String SERVICE_NAME = "VTS Dashboard"; private static final Logger logger = Logger.getLogger(TestSuiteResultRestServlet.class.getName()); + /** System Configuration Property class */ + protected Properties systemConfigProp = new Properties(); + + @Override + public void init(ServletConfig cfg) throws ServletException { + super.init(cfg); + + try { + InputStream defaultInputStream = + TestSuiteResultRestServlet.class + .getClassLoader() + .getResourceAsStream("config.properties"); + systemConfigProp.load(defaultInputStream); + + SERVICE_CLIENT_ID = systemConfigProp.getProperty("appengine.serviceClientID"); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { @@ -75,7 +103,8 @@ public class TestSuiteResultRestServlet extends HttpServlet { Tokeninfo tokenInfo = oauth2.tokeninfo().setAccessToken(accessToken).execute(); if (tokenInfo.getIssuedTo().equals(SERVICE_CLIENT_ID)) { - Key<TestSuiteFileEntity> testSuiteFileParent = Key.create(TestSuiteFileEntity.class, "suite_result/2019/04/06/132343.bin"); + Key<TestSuiteFileEntity> testSuiteFileParent = + Key.create(TestSuiteFileEntity.class, "suite_result/2019/04/06/132343.bin"); TestSuiteResultEntity testSuiteResultEntity = new TestSuiteResultEntity( testSuiteFileParent, diff --git a/src/main/java/com/android/vts/entity/TestSuiteResultEntity.java b/src/main/java/com/android/vts/entity/TestSuiteResultEntity.java index 4833eeb..40c393b 100644 --- a/src/main/java/com/android/vts/entity/TestSuiteResultEntity.java +++ b/src/main/java/com/android/vts/entity/TestSuiteResultEntity.java @@ -131,33 +131,6 @@ public class TestSuiteResultEntity { /** System Configuration Property class */ private static Properties systemConfigProp = new Properties(); - static { - try { - InputStream defaultInputStream = - TestSuiteResultEntity.class - .getClassLoader() - .getResourceAsStream("config.properties"); - systemConfigProp.load(defaultInputStream); - - String bugTrackingSystem = systemConfigProp.getProperty("bug.tracking.system"); - - if (!bugTrackingSystem.isEmpty()) { - InputStream btsInputStream = - TestSuiteResultEntity.class - .getClassLoader() - .getResourceAsStream( - "bug_tracking_system/" - + bugTrackingSystem - + "/config.properties"); - bugTrackingSystemProp.load(btsInputStream); - } - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - public enum TestType { UNKNOWN(0), TOT(1), @@ -320,6 +293,35 @@ public class TestSuiteResultEntity { ofy().save().entity(this).now(); } + public static void setPropertyValues(Properties newSystemConfigProp) { + systemConfigProp = newSystemConfigProp; + bugTrackingSystemProp = getBugTrackingSystemProp(newSystemConfigProp); + } + + private static Properties getBugTrackingSystemProp(Properties newSystemConfigProp) { + Properties newBugTrackingSystemProp = new Properties(); + try { + String bugTrackingSystem = newSystemConfigProp.getProperty("bug.tracking.system"); + + if (!bugTrackingSystem.isEmpty()) { + InputStream btsInputStream = + TestSuiteResultEntity.class + .getClassLoader() + .getResourceAsStream( + "bug_tracking_system/" + + bugTrackingSystem + + "/config.properties"); + newBugTrackingSystemProp.load(btsInputStream); + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + return newBugTrackingSystemProp; + } + } + public static List<TestSuiteResultEntity> getTestSuitePlans() { return ofy().load() .type(TestSuiteResultEntity.class) diff --git a/src/main/java/com/android/vts/job/VtsSuiteTestJobServlet.java b/src/main/java/com/android/vts/job/VtsSuiteTestJobServlet.java index 1884513..719ba64 100644 --- a/src/main/java/com/android/vts/job/VtsSuiteTestJobServlet.java +++ b/src/main/java/com/android/vts/job/VtsSuiteTestJobServlet.java @@ -16,26 +16,12 @@ package com.android.vts.job; -import com.android.vts.entity.TestEntity; -import com.android.vts.entity.TestRunEntity; -import com.android.vts.entity.TestStatusEntity; import com.android.vts.entity.TestSuiteFileEntity; import com.android.vts.entity.TestSuiteResultEntity; import com.android.vts.proto.TestSuiteResultMessageProto; -import com.android.vts.util.EmailHelper; -import com.android.vts.util.FilterUtil; import com.android.vts.util.GcsHelper; import com.android.vts.util.TaskQueueHelper; import com.android.vts.util.TimeUtil; -import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; -import com.google.api.client.http.javanet.NetHttpTransport; -import com.google.api.client.json.jackson.JacksonFactory; -import com.google.api.services.oauth2.Oauth2; -import com.google.api.services.oauth2.model.Tokeninfo; -import com.google.appengine.api.datastore.DatastoreService; -import com.google.appengine.api.datastore.DatastoreServiceFactory; -import com.google.appengine.api.datastore.Query.Filter; -import com.google.appengine.api.datastore.Query.SortDirection; import com.google.appengine.api.memcache.ErrorHandlers; import com.google.appengine.api.memcache.MemcacheService; import com.google.appengine.api.memcache.MemcacheServiceFactory; @@ -46,36 +32,26 @@ import com.google.cloud.storage.Blob; import com.google.cloud.storage.Bucket; import com.google.cloud.storage.Storage; import com.googlecode.objectify.Key; -import com.googlecode.objectify.Result; -import org.apache.commons.codec.binary.Base64; - -import javax.mail.Message; -import javax.mail.MessagingException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.ByteArrayInputStream; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; -import java.io.UnsupportedEncodingException; import java.nio.file.FileSystems; import java.nio.file.Path; import java.nio.file.Paths; -import java.text.SimpleDateFormat; -import java.time.Instant; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.Properties; import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -88,18 +64,16 @@ public class VtsSuiteTestJobServlet extends HttpServlet { private static final String SUITE_TEST_URL = "/cron/test_suite_report_gcs_monitor"; - private static final String SERVICE_CLIENT_ID = System.getProperty("SERVICE_CLIENT_ID"); private static final String SERVICE_NAME = "VTS Dashboard"; private final Logger logger = Logger.getLogger(this.getClass().getName()); /** Google Cloud Storage project's key file to access the storage */ - private static final String GCS_KEY_FILE = System.getProperty("GCS_KEY_FILE"); + private static String GCS_KEY_FILE; /** Google Cloud Storage project's default bucket name for vtslab log files */ - private static final String GCS_BUCKET_NAME = System.getProperty("GCS_BUCKET_NAME"); + private static String GCS_BUCKET_NAME; /** Google Cloud Storage project's default directory name for suite test result files */ - private static final String GCS_SUITE_TEST_FOLDER_NAME = - System.getProperty("GCS_SUITE_TEST_FOLDER_NAME"); + private static String GCS_SUITE_TEST_FOLDER_NAME; public static final String QUEUE = "suiteTestQueue"; @@ -115,23 +89,40 @@ public class VtsSuiteTestJobServlet extends HttpServlet { /** This is the instance of App Engine memcache service java library */ private MemcacheService syncCache = MemcacheServiceFactory.getMemcacheService(); - private final DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); + /** System Configuration Property class */ + protected Properties systemConfigProp = new Properties(); @Override public void init(ServletConfig servletConfig) throws ServletException { super.init(servletConfig); - this.keyFileInputStream = - this.getClass().getClassLoader().getResourceAsStream("keys/" + GCS_KEY_FILE); + try { + InputStream defaultInputStream = + VtsSuiteTestJobServlet.class + .getClassLoader() + .getResourceAsStream("config.properties"); + systemConfigProp.load(defaultInputStream); - Optional<Storage> optionalStorage = GcsHelper.getStorage(this.keyFileInputStream); - if (optionalStorage.isPresent()) { - this.storage = optionalStorage.get(); - } else { - logger.log(Level.SEVERE, "Error on getting storage instance!"); - throw new ServletException("Creating storage instance exception!"); + GCS_KEY_FILE = systemConfigProp.getProperty("gcs.keyFile"); + GCS_BUCKET_NAME = systemConfigProp.getProperty("gcs.bucketName"); + GCS_SUITE_TEST_FOLDER_NAME = systemConfigProp.getProperty("gcs.suiteTestFolderName"); + + this.keyFileInputStream = + this.getClass().getClassLoader().getResourceAsStream("keys/" + GCS_KEY_FILE); + + Optional<Storage> optionalStorage = GcsHelper.getStorage(this.keyFileInputStream); + if (optionalStorage.isPresent()) { + this.storage = optionalStorage.get(); + } else { + logger.log(Level.SEVERE, "Error on getting storage instance!"); + throw new ServletException("Creating storage instance exception!"); + } + syncCache.setErrorHandler(ErrorHandlers.getConsistentLogAndContinue(Level.INFO)); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); } - syncCache.setErrorHandler(ErrorHandlers.getConsistentLogAndContinue(Level.INFO)); } @Override diff --git a/src/main/java/com/android/vts/servlet/BaseServlet.java b/src/main/java/com/android/vts/servlet/BaseServlet.java index 14983cc..7b4c624 100644 --- a/src/main/java/com/android/vts/servlet/BaseServlet.java +++ b/src/main/java/com/android/vts/servlet/BaseServlet.java @@ -16,18 +16,26 @@ package com.android.vts.servlet; +import com.android.vts.entity.TestSuiteResultEntity; +import com.android.vts.util.EmailHelper; +import com.android.vts.util.GcsHelper; import com.google.appengine.api.users.User; import com.google.appengine.api.users.UserService; import com.google.appengine.api.users.UserServiceFactory; import com.google.gson.Gson; + +import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; +import javax.servlet.ServletConfig; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -39,10 +47,10 @@ public abstract class BaseServlet extends HttpServlet { protected String ERROR_MESSAGE_JSP = "WEB-INF/jsp/error_msg.jsp"; // Environment variables - protected static final String GERRIT_URI = System.getProperty("GERRIT_URI"); - protected static final String GERRIT_SCOPE = System.getProperty("GERRIT_SCOPE"); - protected static final String CLIENT_ID = System.getProperty("CLIENT_ID"); - protected static final String ANALYTICS_ID = System.getProperty("ANALYTICS_ID"); + protected static String GERRIT_URI; + protected static String GERRIT_SCOPE; + protected static String CLIENT_ID; + protected static String ANALYTICS_ID; protected static final String TREE_DEFAULT_PARAM = "treeDefault"; @@ -128,6 +136,35 @@ public abstract class BaseServlet extends HttpServlet { */ public abstract List<Page> getBreadcrumbLinks(HttpServletRequest request); + /** System Configuration Property class */ + protected static Properties systemConfigProp = new Properties(); + + @Override + public void init(ServletConfig cfg) throws ServletException { + super.init(cfg); + + try { + InputStream defaultInputStream = + BaseServlet.class + .getClassLoader() + .getResourceAsStream("config.properties"); + systemConfigProp.load(defaultInputStream); + + GERRIT_URI = systemConfigProp.getProperty("gerrit.uri"); + GERRIT_SCOPE = systemConfigProp.getProperty("gerrit.scope"); + CLIENT_ID = systemConfigProp.getProperty("appengine.clientID"); + ANALYTICS_ID = systemConfigProp.getProperty("analytics.id"); + + TestSuiteResultEntity.setPropertyValues(systemConfigProp); + EmailHelper.setPropertyValues(systemConfigProp); + GcsHelper.setGcsProjectId(systemConfigProp.getProperty("gcs.projectID")); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { // If the user is logged out, allow them to log back in and return to the page. diff --git a/src/main/java/com/android/vts/servlet/ShowGcsLogServlet.java b/src/main/java/com/android/vts/servlet/ShowGcsLogServlet.java index 82624ce..ec332e5 100644 --- a/src/main/java/com/android/vts/servlet/ShowGcsLogServlet.java +++ b/src/main/java/com/android/vts/servlet/ShowGcsLogServlet.java @@ -56,9 +56,9 @@ public class ShowGcsLogServlet extends BaseServlet { private static final String GCS_LOG_JSP = "WEB-INF/jsp/show_gcs_log.jsp"; /** Google Cloud Storage project's key file to access the storage */ - private static final String GCS_KEY_FILE = System.getProperty("GCS_KEY_FILE"); + private static String GCS_KEY_FILE; /** Google Cloud Storage project's default bucket name for vtslab log files */ - private static final String GCS_BUCKET_NAME = System.getProperty("GCS_BUCKET_NAME"); + private static String GCS_BUCKET_NAME; /** * This is the key file to access vtslab-gcs project. It will allow the dashboard to have a full @@ -79,6 +79,9 @@ public class ShowGcsLogServlet extends BaseServlet { public void init(ServletConfig cfg) throws ServletException { super.init(cfg); + GCS_KEY_FILE = systemConfigProp.getProperty("gcs.keyFile"); + GCS_BUCKET_NAME = systemConfigProp.getProperty("gcs.bucketName"); + this.keyFileInputStream = this.getClass().getClassLoader().getResourceAsStream("keys/" + GCS_KEY_FILE); diff --git a/src/main/java/com/android/vts/util/EmailHelper.java b/src/main/java/com/android/vts/util/EmailHelper.java index cfdccd6..11bbdf5 100644 --- a/src/main/java/com/android/vts/util/EmailHelper.java +++ b/src/main/java/com/android/vts/util/EmailHelper.java @@ -44,11 +44,17 @@ import org.apache.commons.lang.StringUtils; /** EmailHelper, a helper class for building and sending emails. */ public class EmailHelper { protected static final Logger logger = Logger.getLogger(EmailHelper.class.getName()); - protected static final String DEFAULT_EMAIL = System.getProperty("DEFAULT_EMAIL"); - protected static final String EMAIL_DOMAIN = System.getProperty("EMAIL_DOMAIN"); - protected static final String SENDER_EMAIL = System.getProperty("SENDER_EMAIL"); + protected static String DEFAULT_EMAIL; + protected static String EMAIL_DOMAIN; + protected static String SENDER_EMAIL; private static final String VTS_EMAIL_NAME = "VTS Alert Bot"; + public static void setPropertyValues(Properties systemConfigProp) { + DEFAULT_EMAIL = systemConfigProp.getProperty("appengine.defaultEmail"); + EMAIL_DOMAIN = systemConfigProp.getProperty("appengine.emailDomain"); + SENDER_EMAIL = systemConfigProp.getProperty("appengine.senderEmail"); + } + /** * Create an email footer with the information from the test run. * diff --git a/src/main/java/com/android/vts/util/GcsHelper.java b/src/main/java/com/android/vts/util/GcsHelper.java index bb2b5be..4cb1811 100644 --- a/src/main/java/com/android/vts/util/GcsHelper.java +++ b/src/main/java/com/android/vts/util/GcsHelper.java @@ -16,7 +16,11 @@ public class GcsHelper { private static final Logger logger = Logger.getLogger(GcsHelper.class.getName()); /** Google Cloud Storage project ID */ - private static final String GCS_PROJECT_ID = System.getProperty("GCS_PROJECT_ID"); + private static String GCS_PROJECT_ID; + + public static void setGcsProjectId(String gcsProjectId) { + GCS_PROJECT_ID = gcsProjectId; + } public static Optional<Storage> getStorage(InputStream keyFileInputStream) { |