Merge "Snap for 6421561 from d3981c8028c48b6c3f947f97e17b706d548894c3 to android10-tests-release" into android10-tests-release
diff --git a/clearcut_client/com/android/tradefed/clearcut/ClearcutClient.java b/clearcut_client/com/android/tradefed/clearcut/ClearcutClient.java
index ee1d573..85adbbb 100644
--- a/clearcut_client/com/android/tradefed/clearcut/ClearcutClient.java
+++ b/clearcut_client/com/android/tradefed/clearcut/ClearcutClient.java
@@ -140,6 +140,20 @@
queueEvent(request.build());
}
+ /** Send the event to notify that a Tradefed invocation was started. */
+ public void notifyTradefedInvocationStartEvent() {
+ if (mDisabled) {
+ return;
+ }
+ LogRequest.Builder request = createBaseLogRequest();
+ LogEvent.Builder logEvent = LogEvent.newBuilder();
+ logEvent.setEventTimeMs(System.currentTimeMillis());
+ logEvent.setSourceExtension(
+ ClearcutEventHelper.createRunStartEvent(getGroupingKey(), mRunId, mUserType));
+ request.addLogEvent(logEvent);
+ queueEvent(request.build());
+ }
+
/** Stop the periodic sending of clearcut events */
public void stop() {
if (mExecutor != null) {
diff --git a/clearcut_client/com/android/tradefed/clearcut/ClearcutEventHelper.java b/clearcut_client/com/android/tradefed/clearcut/ClearcutEventHelper.java
index e8a6ab334..23ad99e 100644
--- a/clearcut_client/com/android/tradefed/clearcut/ClearcutEventHelper.java
+++ b/clearcut_client/com/android/tradefed/clearcut/ClearcutEventHelper.java
@@ -18,6 +18,7 @@
import com.android.asuite.clearcut.Common.UserType;
import com.android.asuite.clearcut.ExternalUserLog.AtestLogEventExternal;
import com.android.asuite.clearcut.ExternalUserLog.AtestLogEventExternal.AtestStartEvent;
+import com.android.asuite.clearcut.ExternalUserLog.AtestLogEventExternal.RunnerFinishEvent;
import com.android.asuite.clearcut.InternalUserLog.AtestLogEventInternal;
import com.google.protobuf.ByteString;
@@ -53,6 +54,31 @@
}
/**
+ * Create the start invocation event for Tradefed.
+ *
+ * @param userKey The unique id representing the user
+ * @param runId The current id for the session.
+ * @param userType The type of the user: internal or external.
+ * @return a ByteString representation of the even proto.
+ */
+ public static ByteString createRunStartEvent(String userKey, String runId, UserType userType) {
+ if (UserType.GOOGLE.equals(userType)) {
+ AtestLogEventInternal.Builder builder =
+ createBaseInternalEventBuilder(userKey, runId, userType);
+ AtestLogEventInternal.RunnerFinishEvent.Builder startRunEventBuilder =
+ AtestLogEventInternal.RunnerFinishEvent.newBuilder();
+ builder.setRunnerFinishEvent(startRunEventBuilder.build());
+ return builder.build().toByteString();
+ }
+
+ AtestLogEventExternal.Builder builder =
+ createBaseExternalEventBuilder(userKey, runId, userType);
+ RunnerFinishEvent.Builder startBuilder = RunnerFinishEvent.newBuilder();
+ builder.setRunnerFinishEvent(startBuilder.build());
+ return builder.build().toByteString();
+ }
+
+ /**
* Create the basic event builder with all the common informations.
*
* @param userKey The unique id representing the user
diff --git a/src/com/android/tradefed/command/CommandScheduler.java b/src/com/android/tradefed/command/CommandScheduler.java
index 3cf777e..eae7953 100644
--- a/src/com/android/tradefed/command/CommandScheduler.java
+++ b/src/com/android/tradefed/command/CommandScheduler.java
@@ -557,6 +557,9 @@
@Override
public void run() {
+ if (mClient != null) {
+ mClient.notifyTradefedInvocationStartEvent();
+ }
Map<ITestDevice, FreeDeviceState> deviceStates = new HashMap<>();
for (ITestDevice device : mInvocationContext.getDevices()) {
deviceStates.put(device, FreeDeviceState.AVAILABLE);