Skip to content

Commit f12e159

Browse files
rewritten-extensibility
Summary: - No functional change. - Test with pattern supporting pagination on `xml` -> `json` transformed reponses. - Added robot test `Select Paginated Projection From Transformed XML Response Body`.
1 parent da403bb commit f12e159

File tree

6 files changed

+230
-3
lines changed

6 files changed

+230
-3
lines changed

test/python/stackql_test_tooling/flask/aws/root_path_cfg.json

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,12 +317,93 @@
317317
"Content-Type": ["text/xml"]
318318
}
319319
},
320+
"POST:/:14alt3": {
321+
"method": "POST",
322+
"path": "/",
323+
"headers": {
324+
"Authorization": [
325+
"^.*us-east-*.*SignedHeaders=.*content-type;host;x-amz-date.*$"
326+
]
327+
},
328+
"body_conditions": {
329+
"type": "PARAMETERS",
330+
"parameters": {
331+
"Action": [
332+
"^DescribeVolumes$"
333+
],
334+
"Version": [
335+
"^2016\\-11\\-15$"
336+
],
337+
"NextToken": [
338+
"^token02$"
339+
]
340+
}
341+
},
342+
"template": "describe_volumes_02_page_03.xml",
343+
"status": 200,
344+
"response_headers": {
345+
"Content-Type": ["text/xml"]
346+
}
347+
},
348+
"POST:/:14alt2": {
349+
"method": "POST",
350+
"path": "/",
351+
"headers": {
352+
"Authorization": [
353+
"^.*us-east-*.*SignedHeaders=.*content-type;host;x-amz-date.*$"
354+
]
355+
},
356+
"body_conditions": {
357+
"type": "PARAMETERS",
358+
"parameters": {
359+
"Action": [
360+
"^DescribeVolumes$"
361+
],
362+
"Version": [
363+
"^2016\\-11\\-15$"
364+
],
365+
"NextToken": [
366+
"^token01$"
367+
]
368+
}
369+
},
370+
"template": "describe_volumes_02_page_02.xml",
371+
"status": 200,
372+
"response_headers": {
373+
"Content-Type": ["text/xml"]
374+
}
375+
},
376+
"POST:/:14alt": {
377+
"method": "POST",
378+
"path": "/",
379+
"headers": {
380+
"Authorization": [
381+
"^.*us-east-*.*SignedHeaders=.*content-type;host;x-amz-date.*$"
382+
]
383+
},
384+
"body_conditions": {
385+
"type": "PARAMETERS",
386+
"parameters": {
387+
"Action": [
388+
"^DescribeVolumes$"
389+
],
390+
"Version": [
391+
"^2016\\-11\\-15$"
392+
]
393+
}
394+
},
395+
"template": "describe_volumes_02_page_01.xml",
396+
"status": 200,
397+
"response_headers": {
398+
"Content-Type": ["text/xml"]
399+
}
400+
},
320401
"POST:/:14": {
321402
"method": "POST",
322403
"path": "/",
323404
"headers": {
324405
"Authorization": [
325-
"^.*SignedHeaders=.*content-type;host;x-amz-date.*$"
406+
"^.*ap-southeast-*.*SignedHeaders=.*content-type;host;x-amz-date.*$"
326407
]
327408
},
328409
"body_conditions": {
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<DescribeVolumesResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
3+
<requestId>00000000-0000-0000-aaaa-000000000001</requestId>
4+
<nextToken>token01</nextToken>
5+
<volumeSet>
6+
<item>
7+
<volumeId>vol-20100000000000000</volumeId>
8+
<size>10</size>
9+
<snapshotId/>
10+
<availabilityZone>us-east-1a</availabilityZone>
11+
<status>available</status>
12+
<createTime>2022-05-02T23:09:30.171Z</createTime>
13+
<attachmentSet/>
14+
<volumeType>gp2</volumeType>
15+
<iops>100</iops>
16+
<encrypted>false</encrypted>
17+
<multiAttachEnabled>false</multiAttachEnabled>
18+
</item>
19+
<item>
20+
<volumeId>vol-20200000000000000</volumeId>
21+
<size>8</size>
22+
<snapshotId/>
23+
<availabilityZone>us-east-1a</availabilityZone>
24+
<status>available</status>
25+
<createTime>2022-05-11T04:45:40.627Z</createTime>
26+
<attachmentSet/>
27+
<volumeType>gp2</volumeType>
28+
<iops>100</iops>
29+
<encrypted>false</encrypted>
30+
<multiAttachEnabled>false</multiAttachEnabled>
31+
</item>
32+
</volumeSet>
33+
</DescribeVolumesResponse>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<DescribeVolumesResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
3+
<requestId>00000000-0000-0000-aaaa-000000000002</requestId>
4+
<nextToken>token02</nextToken>
5+
<volumeSet>
6+
<item>
7+
<volumeId>vol-20300000000000000</volumeId>
8+
<size>10</size>
9+
<snapshotId/>
10+
<availabilityZone>us-east-1a</availabilityZone>
11+
<status>available</status>
12+
<createTime>2022-05-02T23:09:30.171Z</createTime>
13+
<attachmentSet/>
14+
<volumeType>gp2</volumeType>
15+
<iops>100</iops>
16+
<encrypted>false</encrypted>
17+
<multiAttachEnabled>false</multiAttachEnabled>
18+
</item>
19+
<item>
20+
<volumeId>vol-20400000000000000</volumeId>
21+
<size>8</size>
22+
<snapshotId/>
23+
<availabilityZone>us-east-1a</availabilityZone>
24+
<status>available</status>
25+
<createTime>2022-05-11T04:45:40.627Z</createTime>
26+
<attachmentSet/>
27+
<volumeType>gp2</volumeType>
28+
<iops>100</iops>
29+
<encrypted>false</encrypted>
30+
<multiAttachEnabled>false</multiAttachEnabled>
31+
</item>
32+
</volumeSet>
33+
</DescribeVolumesResponse>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<DescribeVolumesResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
3+
<requestId>00000000-0000-0000-aaaa-000000000003</requestId>
4+
<volumeSet>
5+
<item>
6+
<volumeId>vol-20500000000000000</volumeId>
7+
<size>10</size>
8+
<snapshotId/>
9+
<availabilityZone>us-east-1a</availabilityZone>
10+
<status>available</status>
11+
<createTime>2022-05-02T23:09:30.171Z</createTime>
12+
<attachmentSet/>
13+
<volumeType>gp2</volumeType>
14+
<iops>100</iops>
15+
<encrypted>false</encrypted>
16+
<multiAttachEnabled>false</multiAttachEnabled>
17+
</item>
18+
<item>
19+
<volumeId>vol-20600000000000000</volumeId>
20+
<size>8</size>
21+
<snapshotId/>
22+
<availabilityZone>us-east-1a</availabilityZone>
23+
<status>available</status>
24+
<createTime>2022-05-11T04:45:40.627Z</createTime>
25+
<attachmentSet/>
26+
<volumeType>gp2</volumeType>
27+
<iops>100</iops>
28+
<encrypted>false</encrypted>
29+
<multiAttachEnabled>false</multiAttachEnabled>
30+
</item>
31+
</volumeSet>
32+
</DescribeVolumesResponse>

test/registry/src/aws/v0.1.0/services/ec2.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45740,6 +45740,13 @@ components:
4574045740
algorithm: AWSCanonical
4574145741
requestTranslate:
4574245742
algorithm: get_query_to_post_form_utf_8
45743+
pagination:
45744+
requestToken:
45745+
key: NextToken
45746+
location: query
45747+
responseToken:
45748+
key: $.next_page_token
45749+
location: body
4574345750
operation:
4574445751
$ref: '#/paths/~1?Action=DescribeVolumes&Version=2016-11-15/get'
4574545752
response:

test/robot/functional/stackql_mocked_from_cmd_line.robot

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7676,17 +7676,25 @@ Local Execution Openssl x509 Select
76767676
... stderr=${CURDIR}/tmp/Local-Execution-Openssl-x509-Select-stderr.tmp
76777677

76787678
Select Star From Transformed XML Response Body
7679-
Pass Execution If "${SQL_BACKEND}" == "postgres_tcp" TODO: FIX THIS... Skipping postgres for speed, simple enough to support bool there.
76807679
${inputStr} = Catenate
76817680
... select * from aws.ec2.volumes_presented where region = 'ap-southeast-2' order by volume_id;
7682-
${outputStr} = Catenate SEPARATOR=\n
7681+
${outputStrSQLite} = Catenate SEPARATOR=\n
76837682
... |-------------------|--------------------------|-----------|----------------------|----------------|------|-------------|-----------|-----------------------|-------------|
76847683
... |${SPACE}availability_zone${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}create_time${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}encrypted${SPACE}|${SPACE}multi_attach_enabled${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}region${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}size${SPACE}|${SPACE}snapshot_id${SPACE}|${SPACE}${SPACE}status${SPACE}${SPACE}${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}volume_id${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}volume_type${SPACE}|
76857684
... |-------------------|--------------------------|-----------|----------------------|----------------|------|-------------|-----------|-----------------------|-------------|
76867685
... |${SPACE}ap-southeast-1a${SPACE}${SPACE}${SPACE}|${SPACE}2022-05-02T23:09:30.171Z${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}0${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}0${SPACE}|${SPACE}ap-southeast-2${SPACE}|${SPACE}${SPACE}${SPACE}10${SPACE}|${SPACE}null${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}available${SPACE}|${SPACE}vol-00100000000000000${SPACE}|${SPACE}gp2${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|
76877686
... |-------------------|--------------------------|-----------|----------------------|----------------|------|-------------|-----------|-----------------------|-------------|
76887687
... |${SPACE}ap-southeast-1a${SPACE}${SPACE}${SPACE}|${SPACE}2022-05-11T04:45:40.627Z${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}0${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}0${SPACE}|${SPACE}ap-southeast-2${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}8${SPACE}|${SPACE}null${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}available${SPACE}|${SPACE}vol-00200000000000000${SPACE}|${SPACE}gp2${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|
76897688
... |-------------------|--------------------------|-----------|----------------------|----------------|------|-------------|-----------|-----------------------|-------------|
7689+
${outputStrPostgres} = Catenate SEPARATOR=\n
7690+
... |-------------------|--------------------------|-----------|----------------------|----------------|------|-------------|-----------|-----------------------|-------------|
7691+
... |${SPACE}availability_zone${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}create_time${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}encrypted${SPACE}|${SPACE}multi_attach_enabled${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}region${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}size${SPACE}|${SPACE}snapshot_id${SPACE}|${SPACE}${SPACE}status${SPACE}${SPACE}${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}volume_id${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}volume_type${SPACE}|
7692+
... |-------------------|--------------------------|-----------|----------------------|----------------|------|-------------|-----------|-----------------------|-------------|
7693+
... |${SPACE}ap-southeast-1a${SPACE}${SPACE}${SPACE}|${SPACE}2022-05-02T23:09:30.171Z${SPACE}|${SPACE}false${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}false${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}ap-southeast-2${SPACE}|${SPACE}${SPACE}${SPACE}10${SPACE}|${SPACE}<nil>${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}available${SPACE}|${SPACE}vol-00100000000000000${SPACE}|${SPACE}gp2${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|
7694+
... |-------------------|--------------------------|-----------|----------------------|----------------|------|-------------|-----------|-----------------------|-------------|
7695+
... |${SPACE}ap-southeast-1a${SPACE}${SPACE}${SPACE}|${SPACE}2022-05-11T04:45:40.627Z${SPACE}|${SPACE}false${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}false${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}ap-southeast-2${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}8${SPACE}|${SPACE}<nil>${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}available${SPACE}|${SPACE}vol-00200000000000000${SPACE}|${SPACE}gp2${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|
7696+
... |-------------------|--------------------------|-----------|----------------------|----------------|------|-------------|-----------|-----------------------|-------------|
7697+
${outputStr} = Set Variable If "${SQL_BACKEND}" == "postgres_tcp" ${outputStrPostgres} ${outputStrSQLite}
76907698
Should Stackql Exec Inline Equal Both Streams
76917699
... ${STACKQL_EXE}
76927700
... ${OKTA_SECRET_STR}
@@ -7764,3 +7772,36 @@ Describe Transformed XML Response Body
77647772
... ${EMPTY}
77657773
... stdout=${CURDIR}/tmp/Describe-Transformed-XML-Response-Body.tmp
77667774
... stderr=${CURDIR}/tmp/Describe-Transformed-XML-Response-Body-stderr.tmp
7775+
7776+
Select Paginated Projection From Transformed XML Response Body
7777+
${inputStr} = Catenate
7778+
... select volume_id, create_time, region, size from aws.ec2.volumes_presented where region = 'us-east-2' order by volume_id asc;
7779+
${outputStr} = Catenate SEPARATOR=\n
7780+
... |-----------------------|--------------------------|-----------|------|
7781+
... |${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}volume_id${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}create_time${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}${SPACE}region${SPACE}${SPACE}${SPACE}|${SPACE}size${SPACE}|
7782+
... |-----------------------|--------------------------|-----------|------|
7783+
... |${SPACE}vol-20100000000000000${SPACE}|${SPACE}2022-05-02T23:09:30.171Z${SPACE}|${SPACE}us-east-2${SPACE}|${SPACE}${SPACE}${SPACE}10${SPACE}|
7784+
... |-----------------------|--------------------------|-----------|------|
7785+
... |${SPACE}vol-20200000000000000${SPACE}|${SPACE}2022-05-11T04:45:40.627Z${SPACE}|${SPACE}us-east-2${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}8${SPACE}|
7786+
... |-----------------------|--------------------------|-----------|------|
7787+
... |${SPACE}vol-20300000000000000${SPACE}|${SPACE}2022-05-02T23:09:30.171Z${SPACE}|${SPACE}us-east-2${SPACE}|${SPACE}${SPACE}${SPACE}10${SPACE}|
7788+
... |-----------------------|--------------------------|-----------|------|
7789+
... |${SPACE}vol-20400000000000000${SPACE}|${SPACE}2022-05-11T04:45:40.627Z${SPACE}|${SPACE}us-east-2${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}8${SPACE}|
7790+
... |-----------------------|--------------------------|-----------|------|
7791+
... |${SPACE}vol-20500000000000000${SPACE}|${SPACE}2022-05-02T23:09:30.171Z${SPACE}|${SPACE}us-east-2${SPACE}|${SPACE}${SPACE}${SPACE}10${SPACE}|
7792+
... |-----------------------|--------------------------|-----------|------|
7793+
... |${SPACE}vol-20600000000000000${SPACE}|${SPACE}2022-05-11T04:45:40.627Z${SPACE}|${SPACE}us-east-2${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}8${SPACE}|
7794+
... |-----------------------|--------------------------|-----------|------|
7795+
Should Stackql Exec Inline Equal Both Streams
7796+
... ${STACKQL_EXE}
7797+
... ${OKTA_SECRET_STR}
7798+
... ${GITHUB_SECRET_STR}
7799+
... ${K8S_SECRET_STR}
7800+
... ${REGISTRY_NO_VERIFY_CFG_STR}
7801+
... ${AUTH_CFG_STR}
7802+
... ${SQL_BACKEND_CFG_STR_CANONICAL}
7803+
... ${inputStr}
7804+
... ${outputStr}
7805+
... ${EMPTY}
7806+
... stdout=${CURDIR}/tmp/Select-Paginated-Projection-From-Transformed-XML-Response-Body.tmp
7807+
... stderr=${CURDIR}/tmp/Select-Paginated-Projection-From-Transformed-XML-Response-Body-stderr.tmp

0 commit comments

Comments
 (0)