Skip to content

Commit

Permalink
test: add heap profiler add-on regression test
Browse files Browse the repository at this point in the history
Add a regression test for #1827.

PR-URL: #1828
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
  • Loading branch information
bnoordhuis committed May 28, 2015
1 parent 3a1bc06 commit 4e90c82
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 0 deletions.
27 changes: 27 additions & 0 deletions test/addons/heap-profiler/binding.cc
@@ -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 changes: 8 additions & 0 deletions test/addons/heap-profiler/binding.gyp
@@ -0,0 +1,8 @@
{
'targets': [
{
'target_name': 'binding',
'sources': [ 'binding.cc' ]
}
]
}
12 changes: 12 additions & 0 deletions test/addons/heap-profiler/test.js
@@ -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);

0 comments on commit 4e90c82

Please sign in to comment.