diff options
Diffstat (limited to 'src')
3 files changed, 140 insertions, 77 deletions
diff --git a/src/main/java/com/android/vts/api/TestSuiteResultRestServlet.java b/src/main/java/com/android/vts/api/TestSuiteResultRestServlet.java index 4f2d52e..38be2c0 100644 --- a/src/main/java/com/android/vts/api/TestSuiteResultRestServlet.java +++ b/src/main/java/com/android/vts/api/TestSuiteResultRestServlet.java @@ -18,8 +18,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.android.vts.proto.TestSuiteResultMessageProto; 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; @@ -29,20 +28,14 @@ import com.google.gson.Gson; import com.googlecode.objectify.Key; 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; @@ -64,11 +57,12 @@ public class TestSuiteResultRestServlet extends BaseApiServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { // Retrieve the params - TestSuiteResultMessage testSuiteResultMessage; + TestSuiteResultMessageProto.TestSuiteResultMessage testSuiteResultMessage; try { String payload = request.getReader().lines().collect(Collectors.joining()); byte[] value = Base64.decodeBase64(payload); - testSuiteResultMessage = TestSuiteResultMessage.parseFrom(value); + testSuiteResultMessage = + TestSuiteResultMessageProto.TestSuiteResultMessage.parseFrom(value); } catch (IOException e) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); logger.log(Level.WARNING, "Invalid proto: " + e.getLocalizedMessage()); diff --git a/src/main/java/com/android/vts/proto/TestSuiteResultMessageProto.java b/src/main/java/com/android/vts/proto/TestSuiteResultMessageProto.java index 52f73d1..f152227 100644 --- a/src/main/java/com/android/vts/proto/TestSuiteResultMessageProto.java +++ b/src/main/java/com/android/vts/proto/TestSuiteResultMessageProto.java @@ -1,5 +1,5 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! -// source: vti/dashboard/proto/TestSuiteResultMessage.proto +// source: TestSuiteResultMessage.proto package com.android.vts.proto; @@ -436,17 +436,17 @@ public final class TestSuiteResultMessageProto { getGsiBuildIdBytes(); /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - boolean hasScheduleConfig(); + @java.lang.Deprecated boolean hasScheduleConfig(); /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage getScheduleConfig(); + @java.lang.Deprecated com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage getScheduleConfig(); /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder getScheduleConfigOrBuilder(); + @java.lang.Deprecated com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder getScheduleConfigOrBuilder(); } /** * <pre> @@ -658,11 +658,11 @@ public final class TestSuiteResultMessageProto { break; } case 506: { - android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder subBuilder = null; + com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder subBuilder = null; if (((bitField0_ & 0x00800000) == 0x00800000)) { subBuilder = scheduleConfig_.toBuilder(); } - scheduleConfig_ = input.readMessage(android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.PARSER, extensionRegistry); + scheduleConfig_ = input.readMessage(com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.PARSER, extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom(scheduleConfig_); scheduleConfig_ = subBuilder.buildPartial(); @@ -1594,24 +1594,24 @@ public final class TestSuiteResultMessageProto { } public static final int SCHEDULE_CONFIG_FIELD_NUMBER = 63; - private android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage scheduleConfig_; + private com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage scheduleConfig_; /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - public boolean hasScheduleConfig() { + @java.lang.Deprecated public boolean hasScheduleConfig() { return ((bitField0_ & 0x00800000) == 0x00800000); } /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - public android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage getScheduleConfig() { - return scheduleConfig_ == null ? android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.getDefaultInstance() : scheduleConfig_; + @java.lang.Deprecated public com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage getScheduleConfig() { + return scheduleConfig_ == null ? com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.getDefaultInstance() : scheduleConfig_; } /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - public android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder getScheduleConfigOrBuilder() { - return scheduleConfig_ == null ? android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.getDefaultInstance() : scheduleConfig_; + @java.lang.Deprecated public com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder getScheduleConfigOrBuilder() { + return scheduleConfig_ == null ? com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.getDefaultInstance() : scheduleConfig_; } private byte memoizedIsInitialized = -1; @@ -4285,29 +4285,29 @@ public final class TestSuiteResultMessageProto { return this; } - private android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage scheduleConfig_ = null; + private com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage scheduleConfig_ = null; private com.google.protobuf.SingleFieldBuilderV3< - android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage, android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder, android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder> scheduleConfigBuilder_; + com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage, com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder, com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder> scheduleConfigBuilder_; /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - public boolean hasScheduleConfig() { + @java.lang.Deprecated public boolean hasScheduleConfig() { return ((bitField0_ & 0x01000000) == 0x01000000); } /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - public android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage getScheduleConfig() { + @java.lang.Deprecated public com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage getScheduleConfig() { if (scheduleConfigBuilder_ == null) { - return scheduleConfig_ == null ? android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.getDefaultInstance() : scheduleConfig_; + return scheduleConfig_ == null ? com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.getDefaultInstance() : scheduleConfig_; } else { return scheduleConfigBuilder_.getMessage(); } } /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - public Builder setScheduleConfig(android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage value) { + @java.lang.Deprecated public Builder setScheduleConfig(com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage value) { if (scheduleConfigBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -4321,10 +4321,10 @@ public final class TestSuiteResultMessageProto { return this; } /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - public Builder setScheduleConfig( - android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder builderForValue) { + @java.lang.Deprecated public Builder setScheduleConfig( + com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder builderForValue) { if (scheduleConfigBuilder_ == null) { scheduleConfig_ = builderForValue.build(); onChanged(); @@ -4335,15 +4335,15 @@ public final class TestSuiteResultMessageProto { return this; } /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - public Builder mergeScheduleConfig(android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage value) { + @java.lang.Deprecated public Builder mergeScheduleConfig(com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage value) { if (scheduleConfigBuilder_ == null) { if (((bitField0_ & 0x01000000) == 0x01000000) && scheduleConfig_ != null && - scheduleConfig_ != android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.getDefaultInstance()) { + scheduleConfig_ != com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.getDefaultInstance()) { scheduleConfig_ = - android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.newBuilder(scheduleConfig_).mergeFrom(value).buildPartial(); + com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.newBuilder(scheduleConfig_).mergeFrom(value).buildPartial(); } else { scheduleConfig_ = value; } @@ -4355,9 +4355,9 @@ public final class TestSuiteResultMessageProto { return this; } /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - public Builder clearScheduleConfig() { + @java.lang.Deprecated public Builder clearScheduleConfig() { if (scheduleConfigBuilder_ == null) { scheduleConfig_ = null; onChanged(); @@ -4368,33 +4368,33 @@ public final class TestSuiteResultMessageProto { return this; } /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - public android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder getScheduleConfigBuilder() { + @java.lang.Deprecated public com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder getScheduleConfigBuilder() { bitField0_ |= 0x01000000; onChanged(); return getScheduleConfigFieldBuilder().getBuilder(); } /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ - public android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder getScheduleConfigOrBuilder() { + @java.lang.Deprecated public com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder getScheduleConfigOrBuilder() { if (scheduleConfigBuilder_ != null) { return scheduleConfigBuilder_.getMessageOrBuilder(); } else { return scheduleConfig_ == null ? - android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.getDefaultInstance() : scheduleConfig_; + com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.getDefaultInstance() : scheduleConfig_; } } /** - * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63;</code> + * <code>optional .android.test.lab.ScheduleConfigMessage schedule_config = 63 [deprecated = true];</code> */ private com.google.protobuf.SingleFieldBuilderV3< - android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage, android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder, android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder> + com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage, com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder, com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder> getScheduleConfigFieldBuilder() { if (scheduleConfigBuilder_ == null) { scheduleConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage, android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder, android.test.lab.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder>( + com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage, com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessage.Builder, com.android.vts.proto.TestScheduleConfigMessageOuterClass.ScheduleConfigMessageOrBuilder>( getScheduleConfig(), getParentForChildren(), isClean()); @@ -4465,27 +4465,26 @@ public final class TestSuiteResultMessageProto { descriptor; static { java.lang.String[] descriptorData = { - "\n0vti/dashboard/proto/TestSuiteResultMes" + - "sage.proto\022\013android.vts\0326vti/test_servin" + - "g/proto/TestScheduleConfigMessage.proto\"" + - "\222\005\n\026TestSuiteResultMessage\022\024\n\014access_tok" + - "en\030\001 \001(\t\022\023\n\013result_path\030\002 \001(\t\022\032\n\014boot_su" + - "ccess\030\003 \001(\010:\004true\022\016\n\006branch\030\013 \002(\t\022\016\n\006tar" + - "get\030\014 \002(\t\022\020\n\010build_id\030\r \002(\t\022\022\n\nsuite_pla" + - "n\030\025 \001(\t\022\025\n\rsuite_version\030\026 \001(\t\022\032\n\022suite_" + - "build_number\030\027 \001(\t\022\022\n\nstart_time\030\030 \001(\003\022\020" + - "\n\010end_time\030\031 \001(\003\022\021\n\thost_name\030\032 \001(\t\022\022\n\ns", - "uite_name\030\033 \001(\t\022 \n\030build_system_fingerpr" + - "int\030\037 \001(\t\022 \n\030build_vendor_fingerprint\030 " + - "\001(\t\022\024\n\ttest_type\030! \001(\005:\0010\022\036\n\026passed_test" + - "_case_count\030) \001(\005\022\036\n\026failed_test_case_co" + - "unt\030* \001(\005\022\024\n\014modules_done\030+ \001(\005\022\025\n\rmodul" + - "es_total\030, \001(\005\022\026\n\016infra_log_path\0303 \001(\t\022\033" + - "\n\023repacked_image_path\0304 \003(\t\022\027\n\017vendor_bu" + - "ild_id\030= \001(\t\022\024\n\014gsi_build_id\030> \001(\t\022@\n\017sc" + - "hedule_config\030? \001(\0132\'.android.test.lab.S" + - "cheduleConfigMessageB6\n\025com.android.vts.", - "protoB\033TestSuiteResultMessageProtoP\000" + "\n\034TestSuiteResultMessage.proto\022\013android." + + "vts\032\037TestScheduleConfigMessage.proto\"\226\005\n" + + "\026TestSuiteResultMessage\022\024\n\014access_token\030" + + "\001 \001(\t\022\023\n\013result_path\030\002 \001(\t\022\032\n\014boot_succe" + + "ss\030\003 \001(\010:\004true\022\016\n\006branch\030\013 \002(\t\022\016\n\006target" + + "\030\014 \002(\t\022\020\n\010build_id\030\r \002(\t\022\022\n\nsuite_plan\030\025" + + " \001(\t\022\025\n\rsuite_version\030\026 \001(\t\022\032\n\022suite_bui" + + "ld_number\030\027 \001(\t\022\022\n\nstart_time\030\030 \001(\003\022\020\n\010e" + + "nd_time\030\031 \001(\003\022\021\n\thost_name\030\032 \001(\t\022\022\n\nsuit" + + "e_name\030\033 \001(\t\022 \n\030build_system_fingerprint", + "\030\037 \001(\t\022 \n\030build_vendor_fingerprint\030 \001(\t" + + "\022\024\n\ttest_type\030! \001(\005:\0010\022\036\n\026passed_test_ca" + + "se_count\030) \001(\005\022\036\n\026failed_test_case_count" + + "\030* \001(\005\022\024\n\014modules_done\030+ \001(\005\022\025\n\rmodules_" + + "total\030, \001(\005\022\026\n\016infra_log_path\0303 \001(\t\022\033\n\023r" + + "epacked_image_path\0304 \003(\t\022\027\n\017vendor_build" + + "_id\030= \001(\t\022\024\n\014gsi_build_id\030> \001(\t\022D\n\017sched" + + "ule_config\030? \001(\0132\'.android.test.lab.Sche" + + "duleConfigMessageB\002\030\001B6\n\025com.android.vts" + + ".protoB\033TestSuiteResultMessageProtoP\000" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -4498,7 +4497,7 @@ public final class TestSuiteResultMessageProto { com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - android.test.lab.TestScheduleConfigMessageOuterClass.getDescriptor(), + com.android.vts.proto.TestScheduleConfigMessageOuterClass.getDescriptor(), }, assigner); internal_static_android_vts_TestSuiteResultMessage_descriptor = getDescriptor().getMessageTypes().get(0); @@ -4506,7 +4505,7 @@ public final class TestSuiteResultMessageProto { com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_android_vts_TestSuiteResultMessage_descriptor, new java.lang.String[] { "AccessToken", "ResultPath", "BootSuccess", "Branch", "Target", "BuildId", "SuitePlan", "SuiteVersion", "SuiteBuildNumber", "StartTime", "EndTime", "HostName", "SuiteName", "BuildSystemFingerprint", "BuildVendorFingerprint", "TestType", "PassedTestCaseCount", "FailedTestCaseCount", "ModulesDone", "ModulesTotal", "InfraLogPath", "RepackedImagePath", "VendorBuildId", "GsiBuildId", "ScheduleConfig", }); - android.test.lab.TestScheduleConfigMessageOuterClass.getDescriptor(); + com.android.vts.proto.TestScheduleConfigMessageOuterClass.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) diff --git a/src/main/proto/TestSuiteResultMessage.proto b/src/main/proto/TestSuiteResultMessage.proto new file mode 100644 index 0000000..be447e9 --- /dev/null +++ b/src/main/proto/TestSuiteResultMessage.proto @@ -0,0 +1,70 @@ +// Copyright 2018 The Android Open Source Project +// +// 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. + +syntax = "proto2"; + +package android.vts; +import "TestScheduleConfigMessage.proto"; +option java_package = "com.android.vts.proto"; +option java_outer_classname = "TestSuiteResultMessageProto"; +option java_multiple_files = false; + +// To specify the test results which are uploaded to vts dashboard. +message TestSuiteResultMessage { + // oauth2.0 access token + optional string access_token = 1; + + // GCS path to the corresponding result directory + optional string result_path = 2; + + // whether the device(s) booted-up successfully + optional bool boot_success = 3 [default = true]; + + // test suite build info + required string branch = 11; + required string target = 12; + required string build_id = 13; + + // attributes of Result tag + optional string suite_plan = 21; + optional string suite_version = 22; + optional string suite_build_number = 23; + optional int64 start_time = 24; + optional int64 end_time = 25; + optional string host_name = 26; + optional string suite_name = 27; + + // attributes of Build tag + optional string build_system_fingerprint = 31; + optional string build_vendor_fingerprint = 32; + optional int32 test_type = 33 [default = 0]; + + // attributes of Summary tag + optional int32 passed_test_case_count = 41; + optional int32 failed_test_case_count = 42; + optional int32 modules_done = 43; + optional int32 modules_total = 44; + + // GCS path to the corresponding infra log file. + optional string infra_log_path = 51; + + // GCS path to the repacked device[+GSI] image set. + repeated string repacked_image_path = 52; + + // Fetch info used to fetch and flash certain builds for retry_prompt command. + optional string vendor_build_id = 61; + optional string gsi_build_id = 62; + + optional android.test.lab.ScheduleConfigMessage schedule_config = 63 [ deprecated = true ]; +}
\ No newline at end of file |