summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mbgl/map/map.hpp1
-rw-r--r--package.json2
-rw-r--r--platform/node/src/node_map.cpp9
-rw-r--r--platform/node/src/node_map.hpp2
-rw-r--r--platform/node/test/render.test.js13
-rw-r--r--src/mbgl/map/map.cpp4
-rw-r--r--src/mbgl/map/map_context.cpp11
-rw-r--r--src/mbgl/map/map_context.hpp2
-rw-r--r--src/mbgl/map/source.cpp9
-rw-r--r--src/mbgl/map/source.hpp1
-rw-r--r--src/mbgl/map/sprite.cpp4
-rw-r--r--src/mbgl/map/sprite.hpp2
-rw-r--r--src/mbgl/map/tile_data.cpp6
-rw-r--r--src/mbgl/map/tile_data.hpp2
-rw-r--r--src/mbgl/style/style.cpp12
-rw-r--r--src/mbgl/style/style.hpp2
16 files changed, 80 insertions, 2 deletions
diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp
index 52136aeb4b..6851520bfa 100644
--- a/include/mbgl/map/map.hpp
+++ b/include/mbgl/map/map.hpp
@@ -170,6 +170,7 @@ public:
void toggleCollisionDebug();
bool getCollisionDebug() const;
bool isFullyLoaded() const;
+ void dumpDebugLogs() const;
private:
View& view;
diff --git a/package.json b/package.json
index ac23f507e6..2a811ee7ee 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
],
"devDependencies": {
"aws-sdk": "^2.2.9",
- "mapbox-gl-test-suite": "git+https://github.com/mapbox/mapbox-gl-test-suite.git#5ede718acddd3be1a736249ab6c6c0707f9f71f3",
+ "mapbox-gl-test-suite": "git+https://github.com/mapbox/mapbox-gl-test-suite.git#4931d2b99894e1e02c0a1cc28becdb0546d356ed",
"request": "^2.65.0",
"tape": "^4.2.1"
},
diff --git a/platform/node/src/node_map.cpp b/platform/node/src/node_map.cpp
index bbc3e0658d..76e14e3b94 100644
--- a/platform/node/src/node_map.cpp
+++ b/platform/node/src/node_map.cpp
@@ -47,6 +47,7 @@ NAN_MODULE_INIT(NodeMap::Init) {
Nan::SetPrototypeMethod(tpl, "load", Load);
Nan::SetPrototypeMethod(tpl, "render", Render);
Nan::SetPrototypeMethod(tpl, "release", Release);
+ Nan::SetPrototypeMethod(tpl, "dumpDebugLogs", DumpDebugLogs);
constructor.Reset(tpl->GetFunction());
Nan::Set(target, Nan::New("Map").ToLocalChecked(), tpl->GetFunction());
@@ -327,6 +328,14 @@ void NodeMap::release() {
map.reset(nullptr);
}
+NAN_METHOD(NodeMap::DumpDebugLogs) {
+ auto nodeMap = Nan::ObjectWrap::Unwrap<NodeMap>(info.Holder());
+
+ if (!nodeMap->isValid()) return Nan::ThrowError(releasedMessage());
+
+ nodeMap->map->dumpDebugLogs();
+ info.GetReturnValue().SetUndefined();
+}
////////////////////////////////////////////////////////////////////////////////////////////////
// Instance
diff --git a/platform/node/src/node_map.hpp b/platform/node/src/node_map.hpp
index 90edf44f73..d3b69e7c28 100644
--- a/platform/node/src/node_map.hpp
+++ b/platform/node/src/node_map.hpp
@@ -26,6 +26,7 @@ public:
static NAN_METHOD(Load);
static NAN_METHOD(Render);
static NAN_METHOD(Release);
+ static NAN_METHOD(DumpDebugLogs);
void startRender(std::unique_ptr<NodeMap::RenderOptions> options);
void renderFinished();
@@ -38,7 +39,6 @@ public:
static std::unique_ptr<NodeMap::RenderOptions> ParseOptions(v8::Local<v8::Object>);
static Nan::Persistent<v8::Function> constructor;
-private:
NodeMap(v8::Local<v8::Object>);
~NodeMap();
diff --git a/platform/node/test/render.test.js b/platform/node/test/render.test.js
index 1a7ee6eaf3..5dd0c5ee10 100644
--- a/platform/node/test/render.test.js
+++ b/platform/node/test/render.test.js
@@ -10,6 +10,10 @@ if (process.argv[1] === __filename && process.argv.length > 2) {
tests = process.argv.slice(2);
}
+mbgl.on('message', function(msg) {
+ console.log('%s (%s): %s', msg.severity, msg.class, msg.text);
+});
+
suite.run('native', {tests: tests}, function (style, options, callback) {
var map = new mbgl.Map({
ratio: options.pixelRatio,
@@ -20,9 +24,18 @@ suite.run('native', {tests: tests}, function (style, options, callback) {
}
});
+ var timedOut = false;
+ var watchdog = setTimeout(function () {
+ timedOut = true;
+ map.dumpDebugLogs();
+ callback(new Error('timed out after 20 seconds'));
+ }, 20000);
+
map.load(style);
map.render(options, function (err, pixels) {
map.release();
+ if (timedOut) return;
+ clearTimeout(watchdog);
callback(err, pixels);
});
});
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp
index a1823dc8e1..f4db160c27 100644
--- a/src/mbgl/map/map.cpp
+++ b/src/mbgl/map/map.cpp
@@ -500,4 +500,8 @@ void Map::onLowMemory() {
context->invoke(&MapContext::onLowMemory);
}
+void Map::dumpDebugLogs() const {
+ context->invokeSync(&MapContext::dumpDebugLogs);
+}
+
}
diff --git a/src/mbgl/map/map_context.cpp b/src/mbgl/map/map_context.cpp
index 11d631a57a..b6ebffe2e2 100644
--- a/src/mbgl/map/map_context.cpp
+++ b/src/mbgl/map/map_context.cpp
@@ -324,4 +324,15 @@ void MapContext::onResourceLoadingFailed(std::exception_ptr error) {
}
}
+void MapContext::dumpDebugLogs() const {
+ Log::Info(Event::General, "--------------------------------------------------------------------------------");
+ Log::Info(Event::General, "MapContext::styleURL: %s", styleURL.c_str());
+ if (style) {
+ style->dumpDebugLogs();
+ } else {
+ Log::Info(Event::General, "no style loaded");
+ }
+ Log::Info(Event::General, "--------------------------------------------------------------------------------");
+}
+
}
diff --git a/src/mbgl/map/map_context.hpp b/src/mbgl/map/map_context.hpp
index 028a05e4bb..c2e0213dfb 100644
--- a/src/mbgl/map/map_context.hpp
+++ b/src/mbgl/map/map_context.hpp
@@ -67,6 +67,8 @@ public:
void onTileDataChanged() override;
void onResourceLoadingFailed(std::exception_ptr error) override;
+ void dumpDebugLogs() const;
+
private:
// Update the state indicated by the accumulated Update flags, then render.
void update();
diff --git a/src/mbgl/map/source.cpp b/src/mbgl/map/source.cpp
index 8a7f97d963..7af58788e4 100644
--- a/src/mbgl/map/source.cpp
+++ b/src/mbgl/map/source.cpp
@@ -594,4 +594,13 @@ void Source::emitTileLoadingFailed(const std::string& message) {
observer_->onTileLoadingFailed(error);
}
+void Source::dumpDebugLogs() const {
+ Log::Info(Event::General, "Source::id: %s", info.source_id.c_str());
+ Log::Info(Event::General, "Source::loaded: %d", loaded);
+
+ for (const auto& tile : tiles) {
+ tile.second->data->dumpDebugLogs();
+ }
+}
+
}
diff --git a/src/mbgl/map/source.hpp b/src/mbgl/map/source.hpp
index 2193ea8af6..4aab4a8b44 100644
--- a/src/mbgl/map/source.hpp
+++ b/src/mbgl/map/source.hpp
@@ -91,6 +91,7 @@ public:
void onLowMemory();
void setObserver(Observer* observer);
+ void dumpDebugLogs() const;
SourceInfo info;
bool enabled;
diff --git a/src/mbgl/map/sprite.cpp b/src/mbgl/map/sprite.cpp
index cbd8c44338..84e01324b5 100644
--- a/src/mbgl/map/sprite.cpp
+++ b/src/mbgl/map/sprite.cpp
@@ -111,4 +111,8 @@ void Sprite::setObserver(Observer* observer_) {
observer = observer_;
}
+void Sprite::dumpDebugLogs() const {
+ Log::Info(Event::General, "Sprite::loaded: %d", loaded);
+}
+
} // namespace mbgl
diff --git a/src/mbgl/map/sprite.hpp b/src/mbgl/map/sprite.hpp
index 47ce1dbc8b..cd82460a12 100644
--- a/src/mbgl/map/sprite.hpp
+++ b/src/mbgl/map/sprite.hpp
@@ -34,6 +34,8 @@ public:
return loaded;
}
+ void dumpDebugLogs() const;
+
const float pixelRatio;
void setObserver(Observer* observer);
diff --git a/src/mbgl/map/tile_data.cpp b/src/mbgl/map/tile_data.cpp
index d5fef9d0b4..bba7d7fe22 100644
--- a/src/mbgl/map/tile_data.cpp
+++ b/src/mbgl/map/tile_data.cpp
@@ -23,4 +23,10 @@ const char* TileData::StateToString(const State state) {
}
}
+void TileData::dumpDebugLogs() const {
+ Log::Info(Event::General, "TileData::id: %s", std::string(id).c_str());
+ Log::Info(Event::General, "TileData::state: %s", TileData::StateToString(state));
+ Log::Info(Event::General, "TileData::error: %s", error.c_str());
+}
+
} // namespace mbgl
diff --git a/src/mbgl/map/tile_data.hpp b/src/mbgl/map/tile_data.hpp
index d9895ce01a..2a5745142d 100644
--- a/src/mbgl/map/tile_data.hpp
+++ b/src/mbgl/map/tile_data.hpp
@@ -91,6 +91,8 @@ public:
return error;
}
+ void dumpDebugLogs() const;
+
const TileID id;
// Contains the tile ID string for painting debug information.
diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp
index b68ce496b8..3c87c4c9b7 100644
--- a/src/mbgl/style/style.cpp
+++ b/src/mbgl/style/style.cpp
@@ -262,4 +262,16 @@ void Style::emitResourceLoadingFailed(std::exception_ptr error) {
}
}
+void Style::dumpDebugLogs() const {
+ for (const auto& source : sources) {
+ source->dumpDebugLogs();
+ }
+
+ if (!sprite) {
+ Log::Info(Event::General, "no sprite loaded");
+ } else {
+ sprite->dumpDebugLogs();
+ }
+}
+
}
diff --git a/src/mbgl/style/style.hpp b/src/mbgl/style/style.hpp
index f4b2aac480..c9261bd6c4 100644
--- a/src/mbgl/style/style.hpp
+++ b/src/mbgl/style/style.hpp
@@ -69,6 +69,8 @@ public:
void addLayer(util::ptr<StyleLayer>, const std::string& beforeLayerID);
void removeLayer(const std::string& layerID);
+ void dumpDebugLogs() const;
+
MapData& data;
std::unique_ptr<GlyphStore> glyphStore;
std::unique_ptr<GlyphAtlas> glyphAtlas;