diff options
| author | 2018-08-29 11:49:11 -0700 | |
|---|---|---|
| committer | 2018-09-10 18:26:33 -0700 | |
| commit | 159e4f8f461097a2dfffb545f46734dd7d9610f3 (patch) | |
| tree | b03a696f749bbbb3799c0ecbd630adebf711362b | |
| parent | 1941814f8e9b44d91f996b137e8683fbf80bc70a (diff) | |
allow use of atom definition outside of atoms.proto in pulled atoms
There will be followup cls to add support of new types that can be
nested and repeated.
+ skip StatsLog.write signature generation for pulled atoms.
Bug: 113872139
Test: manual test
Change-Id: I69d0ee0b2fe8e286e48eac20ec2c8b280c477bf0
| -rw-r--r-- | cmds/statsd/Android.bp | 1 | ||||
| -rw-r--r-- | cmds/statsd/src/atoms.proto | 2 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/Collation.cpp | 19 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/Collation.h | 2 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/main.cpp | 2 |
5 files changed, 19 insertions, 7 deletions
diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp index 3fae586725ec..94203f4feccd 100644 --- a/cmds/statsd/Android.bp +++ b/cmds/statsd/Android.bp @@ -46,6 +46,7 @@ cc_library_host_shared { // ==== java proto device library (for test only) ============================== java_library { name: "statsdprotolite", + no_framework_libs: true, proto: { type: "lite", include_dirs: ["external/protobuf/src"], diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 8f3ad9df2370..d117f390705d 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -30,6 +30,7 @@ import "frameworks/base/core/proto/android/telecomm/enums.proto"; import "frameworks/base/core/proto/android/telephony/enums.proto"; import "frameworks/base/core/proto/android/view/enums.proto"; import "frameworks/base/proto/src/stats_enums.proto"; +import "frameworks/base/core/proto/android/service/procstats.proto"; /** * The master atom class. This message defines all of the available @@ -165,6 +166,7 @@ message Atom { DirectoryUsage directory_usage = 10026; AppSize app_size = 10027; CategorySize category_size = 10028; + android.service.procstats.ProcessStatsSectionProto proc_stats = 10029; } // DO NOT USE field numbers above 100,000 in AOSP. Field numbers above diff --git a/tools/stats_log_api_gen/Collation.cpp b/tools/stats_log_api_gen/Collation.cpp index f294728860ae..4245700ed90d 100644 --- a/tools/stats_log_api_gen/Collation.cpp +++ b/tools/stats_log_api_gen/Collation.cpp @@ -195,9 +195,11 @@ int collate_atom(const Descriptor *atom, AtomDecl *atomDecl, print_error(field, "Unkown type for field: %s\n", field->name().c_str()); errorCount++; continue; - } else if (javaType == JAVA_TYPE_OBJECT) { + } else if (javaType == JAVA_TYPE_OBJECT && + atomDecl->code < PULL_ATOM_START_ID) { // Allow attribution chain, but only at position 1. - print_error(field, "Message type not allowed for field: %s\n", + print_error(field, + "Message type not allowed for field in pushed atoms: %s\n", field->name().c_str()); errorCount++; continue; @@ -233,12 +235,19 @@ int collate_atom(const Descriptor *atom, AtomDecl *atomDecl, java_type_t javaType = java_type(field); AtomField atField(field->name(), javaType); + // Generate signature for pushed atoms + if (atomDecl->code < PULL_ATOM_START_ID) { + if (javaType == JAVA_TYPE_ENUM) { + // All enums are treated as ints when it comes to function signatures. + signature->push_back(JAVA_TYPE_INT); + collate_enums(*field->enum_type(), &atField); + } else { + signature->push_back(javaType); + } + } if (javaType == JAVA_TYPE_ENUM) { // All enums are treated as ints when it comes to function signatures. - signature->push_back(JAVA_TYPE_INT); collate_enums(*field->enum_type(), &atField); - } else { - signature->push_back(javaType); } atomDecl->fields.push_back(atField); diff --git a/tools/stats_log_api_gen/Collation.h b/tools/stats_log_api_gen/Collation.h index ccdd1458f656..31b8b07472cc 100644 --- a/tools/stats_log_api_gen/Collation.h +++ b/tools/stats_log_api_gen/Collation.h @@ -34,6 +34,8 @@ using std::vector; using google::protobuf::Descriptor; using google::protobuf::FieldDescriptor; +const int PULL_ATOM_START_ID = 10000; + /** * The types for atom parameters. */ diff --git a/tools/stats_log_api_gen/main.cpp b/tools/stats_log_api_gen/main.cpp index 83a66312b425..991547916919 100644 --- a/tools/stats_log_api_gen/main.cpp +++ b/tools/stats_log_api_gen/main.cpp @@ -18,8 +18,6 @@ using namespace std; namespace android { namespace stats_log_api_gen { -const int PULL_ATOM_START_ID = 1000; - int maxPushedAtomId = 2; using android::os::statsd::Atom; |