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",
"glibcVersionCompiler": "2.17",
"wordSize": "64 bit",
"arch": "x64",
"platform": "linux",
"componentVersions": {
"node": "12.0.0-pre",
"v8": "7.1.302.28-node.5",
@ -50,10 +52,10 @@ is provided below for reference.
"napi": "3",
"llhttp": "1.0.1",
"http_parser": "2.8.0",
"openssl": "1.1.0j",
"arch": "x64",
"platform": "linux",
"release": "node"
"openssl": "1.1.0j"
},
"release": {
"name": "node"
},
"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"

View File

@ -86,6 +86,7 @@ static void PrintGCStatistics(JSONWriter* writer, Isolate* isolate);
static void PrintSystemInformation(JSONWriter* writer);
static void PrintLoadedLibraries(JSONWriter* writer);
static void PrintComponentVersions(JSONWriter* writer);
static void PrintRelease(JSONWriter* writer);
static void LocalTime(TIME_TYPE* tm_struct);
// Global variables
@ -341,10 +342,15 @@ static void PrintVersionInformation(JSONWriter* writer) {
// Report Process word size
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
PrintComponentVersions(writer);
// Report release metadata.
PrintRelease(writer);
// Report operating system and machine information (Windows)
#ifdef _WIN32
{
@ -724,12 +730,27 @@ static void PrintComponentVersions(JSONWriter* writer) {
NODE_VERSIONS_KEYS(V)
#undef V
// Some extra information that is not present in node_metadata.
writer->json_keyvalue("arch", NODE_ARCH);
writer->json_keyvalue("platform", NODE_PLATFORM);
writer->json_keyvalue("release", NODE_RELEASE);
if (NODE_VERSION_IS_LTS != 0)
writer->json_keyvalue("lts", NODE_VERSION_LTS_CODENAME);
writer->json_objectend();
}
// Report runtime release information.
static void PrintRelease(JSONWriter* writer) {
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();
}

View File

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