report: use uv_gettimeofday for dumpEventTimeStamp

dumpEventTimeStamp was not implemented on Windows, and did not
include any error checking. This commit adds Windows support
and error checking.

PR-URL: https://github.com/nodejs/node/pull/27029
Reviewed-By: Refael Ackermann <refack@gmail.com>
This commit is contained in:
cjihrig
2019-03-31 10:33:23 -04:00
parent 90cf2d5f00
commit af35d4044f
3 changed files with 9 additions and 13 deletions

View File

@@ -209,11 +209,14 @@ static void WriteNodeReport(Isolate* isolate,
tm_struct.tm_min,
tm_struct.tm_sec);
writer.json_keyvalue("dumpEventTime", timebuf);
struct timeval ts;
gettimeofday(&ts, nullptr);
writer.json_keyvalue("dumpEventTimeStamp",
std::to_string(ts.tv_sec * 1000 + ts.tv_usec / 1000));
#endif
uv_timeval64_t ts;
if (uv_gettimeofday(&ts) == 0) {
writer.json_keyvalue("dumpEventTimeStamp",
std::to_string(ts.tv_sec * 1000 + ts.tv_usec / 1000));
}
// Report native process ID
writer.json_keyvalue("processId", pid);

View File

@@ -5,10 +5,7 @@
#include "uv.h"
#include "v8.h"
#ifdef _WIN32
#include <time.h>
#else
#include <sys/time.h>
#ifndef _WIN32
#include <sys/types.h>
#include <unistd.h>
#endif

View File

@@ -70,11 +70,7 @@ function _validateContent(data) {
assert(typeof header.filename === 'string' || header.filename === null);
assert.notStrictEqual(new Date(header.dumpEventTime).toString(),
'Invalid Date');
if (isWindows)
assert.strictEqual(header.dumpEventTimeStamp, undefined);
else
assert(String(+header.dumpEventTimeStamp), header.dumpEventTimeStamp);
assert(String(+header.dumpEventTimeStamp), header.dumpEventTimeStamp);
assert(Number.isSafeInteger(header.processId));
assert.strictEqual(typeof header.cwd, 'string');
assert(Array.isArray(header.commandLine));