report: separate release metadata

Report release metadata separately from `componentVersions`.
Test `componentVersions` and `release` values in the report.

PR-URL: https://github.com/nodejs/node/pull/25826
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
Richard Lau 2019-01-30 14:10:11 -05:00
parent 393c196605
commit d0d84b009c
3 changed files with 36 additions and 10 deletions

View File

@ -39,6 +39,8 @@ is provided below for reference.
"glibcVersionRuntime": "2.17", "glibcVersionRuntime": "2.17",
"glibcVersionCompiler": "2.17", "glibcVersionCompiler": "2.17",
"wordSize": "64 bit", "wordSize": "64 bit",
"arch": "x64",
"platform": "linux",
"componentVersions": { "componentVersions": {
"node": "12.0.0-pre", "node": "12.0.0-pre",
"v8": "7.1.302.28-node.5", "v8": "7.1.302.28-node.5",
@ -50,10 +52,10 @@ is provided below for reference.
"napi": "3", "napi": "3",
"llhttp": "1.0.1", "llhttp": "1.0.1",
"http_parser": "2.8.0", "http_parser": "2.8.0",
"openssl": "1.1.0j", "openssl": "1.1.0j"
"arch": "x64", },
"platform": "linux", "release": {
"release": "node" "name": "node"
}, },
"osVersion": "Linux 3.10.0-862.el7.x86_64 #1 SMP Wed Mar 21 18:14:51 EDT 2018", "osVersion": "Linux 3.10.0-862.el7.x86_64 #1 SMP Wed Mar 21 18:14:51 EDT 2018",
"machine": "Linux 3.10.0-862.el7.x86_64 #1 SMP Wed Mar 21 18:14:51 EDT 2018test_machine x86_64" "machine": "Linux 3.10.0-862.el7.x86_64 #1 SMP Wed Mar 21 18:14:51 EDT 2018test_machine x86_64"

View File

@ -86,6 +86,7 @@ static void PrintGCStatistics(JSONWriter* writer, Isolate* isolate);
static void PrintSystemInformation(JSONWriter* writer); static void PrintSystemInformation(JSONWriter* writer);
static void PrintLoadedLibraries(JSONWriter* writer); static void PrintLoadedLibraries(JSONWriter* writer);
static void PrintComponentVersions(JSONWriter* writer); static void PrintComponentVersions(JSONWriter* writer);
static void PrintRelease(JSONWriter* writer);
static void LocalTime(TIME_TYPE* tm_struct); static void LocalTime(TIME_TYPE* tm_struct);
// Global variables // Global variables
@ -341,10 +342,15 @@ static void PrintVersionInformation(JSONWriter* writer) {
// Report Process word size // Report Process word size
writer->json_keyvalue("wordSize", sizeof(void*) * 8); writer->json_keyvalue("wordSize", sizeof(void*) * 8);
writer->json_keyvalue("arch", node::per_process::metadata.arch);
writer->json_keyvalue("platform", node::per_process::metadata.platform);
// Report deps component versions // Report deps component versions
PrintComponentVersions(writer); PrintComponentVersions(writer);
// Report release metadata.
PrintRelease(writer);
// Report operating system and machine information (Windows) // Report operating system and machine information (Windows)
#ifdef _WIN32 #ifdef _WIN32
{ {
@ -724,12 +730,27 @@ static void PrintComponentVersions(JSONWriter* writer) {
NODE_VERSIONS_KEYS(V) NODE_VERSIONS_KEYS(V)
#undef V #undef V
// Some extra information that is not present in node_metadata. writer->json_objectend();
writer->json_keyvalue("arch", NODE_ARCH); }
writer->json_keyvalue("platform", NODE_PLATFORM);
writer->json_keyvalue("release", NODE_RELEASE); // Report runtime release information.
if (NODE_VERSION_IS_LTS != 0) static void PrintRelease(JSONWriter* writer) {
writer->json_keyvalue("lts", NODE_VERSION_LTS_CODENAME); writer->json_objectstart("release");
writer->json_keyvalue("name", node::per_process::metadata.release.name);
#if NODE_VERSION_IS_LTS
writer->json_keyvalue("lts", node::per_process::metadata.release.lts);
#endif
#ifdef NODE_HAS_RELEASE_URLS
writer->json_keyvalue("headersUrl",
node::per_process::metadata.release.headers_url);
writer->json_keyvalue("sourceUrl",
node::per_process::metadata.release.source_url);
#ifdef _WIN32
writer->json_keyvalue("libUrl", node::per_process::metadata.release.lib_url);
#endif // _WIN32
#endif // NODE_HAS_RELEASE_URLS
writer->json_objectend(); writer->json_objectend();
} }

View File

@ -34,6 +34,9 @@ function validateContent(data) {
'libuv', 'environmentVariables', 'sharedObjects'].forEach((section) => { 'libuv', 'environmentVariables', 'sharedObjects'].forEach((section) => {
assert(report.hasOwnProperty(section)); assert(report.hasOwnProperty(section));
}); });
assert.deepStrictEqual(report.header.componentVersions, process.versions);
assert.deepStrictEqual(report.header.release, process.release);
} }
module.exports = { findReports, validate, validateContent }; module.exports = { findReports, validate, validateContent };