From 591012401072e63b89071787d90bf5ae4362dca1 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 9 Feb 2016 11:16:55 -0800 Subject: [core] Reset SQLite statements after use in order to release locks --- test/storage/offline_database.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'test') diff --git a/test/storage/offline_database.cpp b/test/storage/offline_database.cpp index 2018f6a40b..4af262deb1 100644 --- a/test/storage/offline_database.cpp +++ b/test/storage/offline_database.cpp @@ -7,6 +7,7 @@ #include #include +#include namespace { @@ -448,3 +449,34 @@ TEST(OfflineDatabase, CreateRegionInfiniteMaxZoom) { EXPECT_EQ(0, region.getDefinition().minZoom); EXPECT_EQ(INFINITY, region.getDefinition().maxZoom); } + +TEST(OfflineDatabase, ConcurrentUse) { + using namespace mbgl; + + createDir("test/fixtures/database"); + deleteFile("test/fixtures/database/offline.db"); + + OfflineDatabase db1("test/fixtures/database/offline.db"); + OfflineDatabase db2("test/fixtures/database/offline.db"); + + Resource resource { Resource::Style, "http://example.com/" }; + Response response; + response.noContent = true; + + std::thread thread1([&] { + for (auto i = 0; i < 100; i++) { + db1.put(resource, response); + EXPECT_TRUE(bool(db1.get(resource))); + } + }); + + std::thread thread2([&] { + for (auto i = 0; i < 100; i++) { + db2.put(resource, response); + EXPECT_TRUE(bool(db2.get(resource))); + } + }); + + thread1.join(); + thread2.join(); +} -- cgit v1.2.1