57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
|
import boto3
|
||
|
import requests
|
||
|
|
||
|
from moto import mock_sagemakerruntime, settings
|
||
|
|
||
|
# See our Development Tips on writing tests for hints on how to write good tests:
|
||
|
# http://docs.getmoto.org/en/latest/docs/contributing/development_tips/tests.html
|
||
|
|
||
|
|
||
|
@mock_sagemakerruntime
|
||
|
def test_invoke_endpoint__default_results():
|
||
|
client = boto3.client("sagemaker-runtime", region_name="ap-southeast-1")
|
||
|
body = client.invoke_endpoint(
|
||
|
EndpointName="asdf", Body="qwer", Accept="sth", TargetModel="tm"
|
||
|
)
|
||
|
|
||
|
assert body["Body"].read() == b"body"
|
||
|
assert body["CustomAttributes"] == "custom_attributes"
|
||
|
|
||
|
|
||
|
@mock_sagemakerruntime
|
||
|
def test_invoke_endpoint():
|
||
|
client = boto3.client("sagemaker-runtime", region_name="us-east-1")
|
||
|
base_url = (
|
||
|
"localhost:5000" if settings.TEST_SERVER_MODE else "motoapi.amazonaws.com"
|
||
|
)
|
||
|
|
||
|
sagemaker_result = {
|
||
|
"results": [
|
||
|
{
|
||
|
"Body": "first body",
|
||
|
"ContentType": "text/xml",
|
||
|
"InvokedProductionVariant": "prod",
|
||
|
"CustomAttributes": "my_attr",
|
||
|
},
|
||
|
{"Body": "second body"},
|
||
|
]
|
||
|
}
|
||
|
requests.post(
|
||
|
f"http://{base_url}/moto-api/static/sagemaker/endpoint-results",
|
||
|
json=sagemaker_result,
|
||
|
)
|
||
|
|
||
|
# Return the first item from the list
|
||
|
body = client.invoke_endpoint(EndpointName="asdf", Body="qwer")
|
||
|
assert body["Body"].read() == b"first body"
|
||
|
|
||
|
# Same input -> same output
|
||
|
body = client.invoke_endpoint(EndpointName="asdf", Body="qwer")
|
||
|
assert body["Body"].read() == b"first body"
|
||
|
|
||
|
# Different input -> second item
|
||
|
body = client.invoke_endpoint(
|
||
|
EndpointName="asdf", Body="qwer", Accept="sth", TargetModel="tm"
|
||
|
)
|
||
|
assert body["Body"].read() == b"second body"
|