From 340990fd30ee51428190f56f96d4fef6e598e16a Mon Sep 17 00:00:00 2001 From: Hnin Naing Date: Wed, 27 Aug 2025 00:27:08 +0000 Subject: [PATCH] Generate java code for VCN metrics Add genrule for VCN metrics atoms and add wrapper utility class for logging using the generated java code, which currently has func for logging safe mode and VCN network validation states. Bug: 288600040 Flag: EXEMPT METRICS Test: atest CtsVcnTestCases, FrameworksVcnTests Change-Id: Ia0f42c3435752399eb3ed480bfe62ffac31ccc1e --- Vcn/service-b/Android.bp | 14 +++- .../server/vcn/metrics/VcnMetrics.java | 64 +++++++++++++++++++ 2 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 Vcn/service-b/src/com/android/server/vcn/metrics/VcnMetrics.java diff --git a/Vcn/service-b/Android.bp b/Vcn/service-b/Android.bp index aad534c328..e9882ae030 100644 --- a/Vcn/service-b/Android.bp +++ b/Vcn/service-b/Android.bp @@ -52,8 +52,10 @@ java_library { filegroup { name: "service-vcn-sources", - srcs: ["src/**/*.java"], - path: "src", + srcs: [ + "src/**/*.java", + ":statslog-vcn-java-gen", + ], visibility: [ "//packages/modules/Connectivity/service-b", ], @@ -75,6 +77,7 @@ java_defaults { "framework-connectivity-pre-jarjar", "framework-connectivity-t-pre-jarjar", "framework-connectivity-b-pre-jarjar", + "framework-statsd.stubs.module_lib", "framework-wifi.stubs.module_lib", "keepanno-annotations", "modules-utils-statemachine", @@ -115,3 +118,10 @@ java_library { "//apex_available:platform", ], } + +genrule { + name: "statslog-vcn-java-gen", + tools: ["stats-log-api-gen"], + cmd: "$(location stats-log-api-gen) --java $(out) --module vcn --javaPackage com.android.server.vcn.metrics --javaClass VcnStatsLog", + out: ["com/android/server/vcn/metrics/VcnStatsLog.java"], +} diff --git a/Vcn/service-b/src/com/android/server/vcn/metrics/VcnMetrics.java b/Vcn/service-b/src/com/android/server/vcn/metrics/VcnMetrics.java new file mode 100644 index 0000000000..a5efddd5e4 --- /dev/null +++ b/Vcn/service-b/src/com/android/server/vcn/metrics/VcnMetrics.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2025 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. + */ + +package com.android.server.vcn.metrics; + +import static com.android.server.vcn.metrics.VcnStatsLog.VCN_GATEWAY_CONNECTION_STATE_CHANGED__GW_TEARDOWN_REASON__GATEWAY_TEARDOWN_REASON_NONE; + +/** Utility class for logging VCN metrics. */ +public class VcnMetrics { + + private static final int GATEWAY_TEARDOWN_REASON_NONE = + VCN_GATEWAY_CONNECTION_STATE_CHANGED__GW_TEARDOWN_REASON__GATEWAY_TEARDOWN_REASON_NONE; + + /** Log an atom when a VcnGatewayConnection has entered safe mode. */ + public void logEnterSafeMode(int gatewayConnectionId) { + VcnStatsLog.write( + VcnStatsLog.VCN_GATEWAY_CONNECTION_STATE_CHANGED, + gatewayConnectionId, + GATEWAY_TEARDOWN_REASON_NONE, + true /* isInSafeMode */); + } + + /** Log an atom when a VcnGatewayConnection has exited safe mode. */ + public void logExitSafeMode(int gatewayConnectionId) { + VcnStatsLog.write( + VcnStatsLog.VCN_GATEWAY_CONNECTION_STATE_CHANGED, + gatewayConnectionId, + GATEWAY_TEARDOWN_REASON_NONE, + false /* isInSafeMode */); + } + + /** Log an atom when VCN network has been validated. */ + public void logVcnNetworkValidated(int gatewayConnectionId, int networkId) { + VcnStatsLog.write( + VcnStatsLog.VCN_NETWORK_STATE_CHANGED, + gatewayConnectionId, + networkId, + true /* isConnected */, + true /* isValidated */); + } + + /** Log an atom when VCN network has been not validated. */ + public void logVcnNetworkNotValidated(int gatewayConnectionId, int networkId) { + VcnStatsLog.write( + VcnStatsLog.VCN_NETWORK_STATE_CHANGED, + gatewayConnectionId, + networkId, + true /* isConnected */, + false /* isValidated */); + } +}