Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94263d76 authored by Makoto Onuki's avatar Makoto Onuki
Browse files

Delete obsolete stats support by HostStubGenStats

Bug: 402797626
Test: ./scripts/ravenwood-stats-collector.sh
Flag: EXEMPT host tool change only
Change-Id: I59669c501362602635a865e0cb4ec8ef83259631
parent 6649bbc5
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -314,21 +314,18 @@ sh_test_host {
    src: "scripts/ravenwood-stats-checker.sh",
    test_suites: ["general-tests"],
    device_common_data: [
        ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_stats.csv}",
        ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_apis.csv}",
        ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_keep_all.txt}",
        ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_dump.txt}",
        ":services.core.ravenwood-base{hoststubgen_services.core_stats.csv}",

        ":services.core.ravenwood-base{hoststubgen_services.core_apis.csv}",
        ":services.core.ravenwood-base{hoststubgen_services.core_keep_all.txt}",
        ":services.core.ravenwood-base{hoststubgen_services.core_dump.txt}",

        ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_stats.csv}",
        ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_apis.csv}",
        ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_keep_all.txt}",
        ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_dump.txt}",

        ":framework-statsd.ravenwood-base{framework-statsd_stats.csv}",
        ":framework-statsd.ravenwood-base{framework-statsd_apis.csv}",
        ":framework-statsd.ravenwood-base{framework-statsd_keep_all.txt}",
        ":framework-statsd.ravenwood-base{framework-statsd_dump.txt}",
+0 −12
Original line number Diff line number Diff line
@@ -124,7 +124,6 @@ java_genrule {
    name: "framework-minus-apex.ravenwood-base_all",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    cmd: framework_minus_apex_cmd +
        "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " +
        "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +

        "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
@@ -133,7 +132,6 @@ java_genrule {
    out: [
        "hoststubgen_framework-minus-apex_keep_all.txt",
        "hoststubgen_framework-minus-apex_dump.txt",
        "hoststubgen_framework-minus-apex_stats.csv",
        "hoststubgen_framework-minus-apex_apis.csv",
    ],
}
@@ -183,7 +181,6 @@ java_genrule {
        "@$(location :ravenwood-common-options) " +

        "--debug-log $(location hoststubgen_services.core.log) " +
        "--stats-file $(location hoststubgen_services.core_stats.csv) " +
        "--supported-api-list-file $(location hoststubgen_services.core_apis.csv) " +
        "--gen-keep-all-file $(location hoststubgen_services.core_keep_all.txt) " +
        "--gen-input-dump-file $(location hoststubgen_services.core_dump.txt) " +
@@ -210,7 +207,6 @@ java_genrule {
        "hoststubgen_services.core_dump.txt",

        "hoststubgen_services.core.log",
        "hoststubgen_services.core_stats.csv",
        "hoststubgen_services.core_apis.csv",
    ],
    visibility: ["//visibility:private"],
@@ -248,7 +244,6 @@ java_genrule {
        "@$(location :ravenwood-common-options) " +

        "--debug-log $(location hoststubgen_core-icu4j-for-host.log) " +
        "--stats-file $(location hoststubgen_core-icu4j-for-host_stats.csv) " +
        "--supported-api-list-file $(location hoststubgen_core-icu4j-for-host_apis.csv) " +
        "--gen-keep-all-file $(location hoststubgen_core-icu4j-for-host_keep_all.txt) " +
        "--gen-input-dump-file $(location hoststubgen_core-icu4j-for-host_dump.txt) " +
@@ -274,7 +269,6 @@ java_genrule {
        "hoststubgen_core-icu4j-for-host_dump.txt",

        "hoststubgen_core-icu4j-for-host.log",
        "hoststubgen_core-icu4j-for-host_stats.csv",
        "hoststubgen_core-icu4j-for-host_apis.csv",
    ],
    visibility: ["//visibility:private"],
@@ -298,7 +292,6 @@ java_genrule {
        "@$(location :ravenwood-common-options) " +

        "--debug-log $(location framework-configinfrastructure.log) " +
        "--stats-file $(location framework-configinfrastructure_stats.csv) " +
        "--supported-api-list-file $(location framework-configinfrastructure_apis.csv) " +
        "--gen-keep-all-file $(location framework-configinfrastructure_keep_all.txt) " +
        "--gen-input-dump-file $(location framework-configinfrastructure_dump.txt) " +
@@ -324,7 +317,6 @@ java_genrule {
        "framework-configinfrastructure_dump.txt",

        "framework-configinfrastructure.log",
        "framework-configinfrastructure_stats.csv",
        "framework-configinfrastructure_apis.csv",
    ],
    visibility: ["//visibility:private"],
@@ -348,7 +340,6 @@ java_genrule {
        "@$(location :ravenwood-common-options) " +

        "--debug-log $(location framework-statsd.log) " +
        "--stats-file $(location framework-statsd_stats.csv) " +
        "--supported-api-list-file $(location framework-statsd_apis.csv) " +
        "--gen-keep-all-file $(location framework-statsd_keep_all.txt) " +
        "--gen-input-dump-file $(location framework-statsd_dump.txt) " +
@@ -374,7 +365,6 @@ java_genrule {
        "framework-statsd_dump.txt",

        "framework-statsd.log",
        "framework-statsd_stats.csv",
        "framework-statsd_apis.csv",
    ],
    visibility: ["//visibility:private"],
@@ -398,7 +388,6 @@ java_genrule {
        "@$(location :ravenwood-common-options) " +

        "--debug-log $(location framework-graphics.log) " +
        "--stats-file $(location framework-graphics_stats.csv) " +
        "--supported-api-list-file $(location framework-graphics_apis.csv) " +
        "--gen-keep-all-file $(location framework-graphics_keep_all.txt) " +
        "--gen-input-dump-file $(location framework-graphics_dump.txt) " +
@@ -424,7 +413,6 @@ java_genrule {
        "framework-graphics_dump.txt",

        "framework-graphics.log",
        "framework-graphics_stats.csv",
        "framework-graphics_apis.csv",
    ],
    visibility: ["//visibility:private"],
+0 −20
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ set -e

# Output files
out_dir=/tmp/ravenwood
stats=$out_dir/ravenwood-stats-all.csv
apis=$out_dir/ravenwood-apis-all.csv
keep_all_dir=$out_dir/ravenwood-keep-all/
dump_dir=$out_dir/ravenwood-dump/
@@ -78,23 +77,6 @@ dump() {
    sed -e '1d' -e "s/^/$jar,$timestamp,/" $file
}

collect_stats() {
    local out="$1"
    local desc="$2"
    {
        # Copy the header, with the first column appended.
        echo -n "Jar,Generated Date,"
        head -n 1 hoststubgen_framework-minus-apex_stats.csv

        dump "framework-minus-apex" hoststubgen_framework-minus-apex_stats.csv
        dump "service.core"  hoststubgen_services.core_stats.csv
        dump "framework-configinfrastructure"  framework-configinfrastructure_stats.csv
        dump "framework-statsd"  framework-statsd_stats.csv
    } > "$out"

    echo "Stats CVS created at $out$desc"
}

collect_apis() {
    local out="$1"
    local desc="$2"
@@ -112,8 +94,6 @@ collect_apis() {
    echo "API CVS created at $out$desc"
}


collect_stats $stats " (import it as 'ravenwood_stats')"
collect_apis $apis " (import it as 'ravenwood_supported_apis2')"

cp *keep_all.txt $keep_all_dir
+0 −2
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ class HostStubGenClassProcessor(
    private val options: HostStubGenClassProcessorOptions,
    val allClasses: ClassNodes,
    private val errors: HostStubGenErrors = HostStubGenErrors(),
    private val stats: HostStubGenStats? = null,
) {
    val filter = buildFilter()
    val remapper = FilterRemapper(filter)
@@ -149,7 +148,6 @@ class HostStubGenClassProcessor(

        val visitorOptions = BaseAdapter.Options(
            errors = errors,
            stats = stats,
            deleteClassFinals = options.deleteFinals.get,
            deleteMethodFinals = options.deleteFinals.get,
            throwExceptionType = options.throwExceptionType.get,
+0 −91
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.hoststubgen

import com.android.hoststubgen.asm.ClassNodes
import com.android.hoststubgen.asm.getOuterClassNameFromFullClassName
import com.android.hoststubgen.asm.getPackageNameFromFullClassName
import com.android.hoststubgen.filters.FilterPolicyWithReason
import com.android.hoststubgen.filters.StatsLabel
import org.objectweb.asm.Opcodes
import java.io.PrintWriter

/**
 * This class is no longer used. It was used for the old ravenwood dashboard. (b/402797626)
 *
 * TODO: Delete the class.
 */
open class HostStubGenStats(val classes: ClassNodes) {
    data class Stats(
            var supported: Int = 0,
            var total: Int = 0,
            val children: MutableMap<String, Stats> = mutableMapOf<String, Stats>(),
    )

    private val stats = mutableMapOf<String, Stats>()

    fun onVisitPolicyForMethod(
        fullClassName: String,
        methodName: String,
        descriptor: String,
        policy: FilterPolicyWithReason,
        access: Int
    ) {
        // Ignore methods that aren't public
        if ((access and Opcodes.ACC_PUBLIC) == 0) return
        // Ignore methods that are abstract
        if ((access and Opcodes.ACC_ABSTRACT) != 0) return

        // Ignore methods where policy isn't relevant
        val statsLabel = policy.statsLabel
        if (statsLabel == StatsLabel.Ignored) return

        val cn = classes.findClass(fullClassName) ?: return

        val packageName = getPackageNameFromFullClassName(fullClassName)
        val className = getOuterClassNameFromFullClassName(fullClassName)

        // Ignore methods for certain generated code
        if (className.endsWith("Proto")
                or className.endsWith("ProtoEnums")
                or className.endsWith("LogTags")
                or className.endsWith("StatsLog")) {
            return
        }

        val packageStats = stats.getOrPut(packageName) { Stats() }
        val classStats = packageStats.children.getOrPut(className) { Stats() }

        if (statsLabel == StatsLabel.Supported) {
            packageStats.supported += 1
            classStats.supported += 1
        }
        packageStats.total += 1
        classStats.total += 1
    }

    fun dumpOverview(pw: PrintWriter) {
        pw.printf("PackageName,ClassName,SupportedMethods,TotalMethods\n")
        stats.toSortedMap().forEach { (packageName, packageStats) ->
            if (packageStats.supported > 0) {
                packageStats.children.toSortedMap().forEach { (className, classStats) ->
                    pw.printf("%s,%s,%d,%d\n", packageName, className,
                            classStats.supported, classStats.total)
                }
            }
        }
    }
}
Loading