Skip to content

Commit 29e2234

Browse files
Add query quad tree API to a mocked OLP server
Resolves: OLPEDGE-1116 Signed-off-by: Mykhailo Kuchma <[email protected]>
1 parent fcb294a commit 29e2234

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

tests/utils/olp_server/query_service.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,45 @@ function randomString(length) {
2727
return result;
2828
}
2929

30+
function generateQuadKeyMetadata(key, version) {
31+
return {
32+
version: Math.floor(Math.random() * version),
33+
subQuadKey: key.toString(),
34+
dataHandle: randomString(35)
35+
}
36+
}
37+
38+
function generateQuadKeyMetadataParent(key, version) {
39+
return {
40+
version: Math.floor(Math.random() * version),
41+
partition: key.toString(),
42+
dataHandle: randomString(35)
43+
}
44+
}
45+
46+
function traverseKeyToRoot(key, version) {
47+
key >>= 2;
48+
let keys = [];
49+
while (key > 1) {
50+
keys.push(generateQuadKeyMetadataParent(key, version));
51+
key >>= 2;
52+
}
53+
return keys;
54+
}
55+
56+
function traverseKey(key, depth, depthLimit, version) {
57+
if (depth <= depthLimit) {
58+
let values = [];
59+
values.push(generateQuadKeyMetadata(key, version));
60+
values = values.concat(traverseKey((key << 2) + 0, depth + 1, depthLimit, version));
61+
values = values.concat(traverseKey((key << 2) + 1, depth + 1, depthLimit, version));
62+
values = values.concat(traverseKey((key << 2) + 2, depth + 1, depthLimit, version));
63+
values = values.concat(traverseKey((key << 2) + 3, depth + 1, depthLimit, version));
64+
return values;
65+
}
66+
return [];
67+
}
68+
3069
function generatePartitions(requested_partitions, layer, version) {
3170
var partitions = []
3271
for (var i = 0; i < requested_partitions.length; i++) {
@@ -58,10 +97,25 @@ function generateGetPartitionsApiResponse(request, query) {
5897
}
5998
}
6099

100+
function generateQueryTreeApiResponse(request, query) {
101+
const version = request[2]
102+
const key = request[3]
103+
const depth = request[4]
104+
105+
return {
106+
subQuads: traverseKey(1, 0, depth, version),
107+
parentQuads: traverseKeyToRoot(key, version)
108+
}
109+
}
110+
61111
const methods = [
62112
{
63113
regex: /layers\/(.+)\/partitions$/,
64114
handler: generateGetPartitionsApiResponse
115+
},
116+
{
117+
regex: /layers\/(.+)\/versions\/(.+)\/quadkeys\/(.+)\/depths\/(\d{1})/,
118+
handler: generateQueryTreeApiResponse
65119
}
66120
]
67121

0 commit comments

Comments
 (0)