test: add heap profiler add-on regression test
Add a regression test for https://github.com/nodejs/io.js/pull/1827. PR-URL: https://github.com/nodejs/io.js/pull/1828 Reviewed-By: Trevor Norris <trev.norris@gmail.com>
This commit is contained in:
parent
3a1bc067d4
commit
4e90c82cdb
27
test/addons/heap-profiler/binding.cc
Normal file
27
test/addons/heap-profiler/binding.cc
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#include "node.h"
|
||||||
|
#include "v8.h"
|
||||||
|
#include "v8-profiler.h"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
inline void Test(const v8::FunctionCallbackInfo<v8::Value>& args) {
|
||||||
|
v8::Isolate* const isolate = args.GetIsolate();
|
||||||
|
const v8::HeapSnapshot* const heap_snapshot =
|
||||||
|
isolate->GetHeapProfiler()->TakeHeapSnapshot(v8::String::Empty(isolate));
|
||||||
|
struct : public v8::OutputStream {
|
||||||
|
WriteResult WriteAsciiChunk(char*, int) override { return kContinue; }
|
||||||
|
void EndOfStream() override {}
|
||||||
|
} output_stream;
|
||||||
|
heap_snapshot->Serialize(&output_stream, v8::HeapSnapshot::kJSON);
|
||||||
|
const_cast<v8::HeapSnapshot*>(heap_snapshot)->Delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void Initialize(v8::Local<v8::Object> binding) {
|
||||||
|
v8::Isolate* const isolate = binding->GetIsolate();
|
||||||
|
binding->Set(v8::String::NewFromUtf8(isolate, "test"),
|
||||||
|
v8::FunctionTemplate::New(isolate, Test)->GetFunction());
|
||||||
|
}
|
||||||
|
|
||||||
|
NODE_MODULE(test, Initialize)
|
||||||
|
|
||||||
|
} // anonymous namespace
|
8
test/addons/heap-profiler/binding.gyp
Normal file
8
test/addons/heap-profiler/binding.gyp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
'targets': [
|
||||||
|
{
|
||||||
|
'target_name': 'binding',
|
||||||
|
'sources': [ 'binding.cc' ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
12
test/addons/heap-profiler/test.js
Normal file
12
test/addons/heap-profiler/test.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const binding = require('./build/Release/binding');
|
||||||
|
|
||||||
|
// Create an AsyncWrap object.
|
||||||
|
const timer = setTimeout(function() {}, 1);
|
||||||
|
timer.unref();
|
||||||
|
|
||||||
|
// Stress-test the heap profiler.
|
||||||
|
binding.test();
|
||||||
|
|
||||||
|
clearTimeout(timer);
|
Loading…
x
Reference in New Issue
Block a user