Compare commits

..

3 Commits

Author SHA1 Message Date
Iain Sproat 9a2651bec1 Specklepy relies on the frontend being available 2024-07-18 08:39:19 +01:00
Iain Sproat a85e3baaec Include toxiproxy.json file 2024-07-17 14:09:07 +01:00
Iain Sproat 9dd801a20b chore(tests): add toxiproxy for integration testing network issues 2024-07-17 13:52:11 +01:00
11 changed files with 46 additions and 76 deletions
+20 -39
View File
@@ -111,46 +111,27 @@ services:
POSTGRES_DB: "speckle"
ENABLE_MP: "false"
preview-service:
image: speckle/speckle-preview-service:latest
restart: always
depends_on:
speckle-server:
condition: service_healthy
mem_limit: "1000m"
memswap_limit: "1000m"
environment:
DEBUG: "preview-service:*"
PG_CONNECTION_STRING: "postgres://speckle:speckle@postgres/speckle"
####
# Testing and development tools
#######
webhook-service:
image: speckle/speckle-webhook-service:latest
restart: always
depends_on:
speckle-server:
condition: service_healthy
environment:
DEBUG: "webhook-service:*"
PG_CONNECTION_STRING: "postgres://speckle:speckle@postgres/speckle"
WAIT_HOSTS: postgres:5432
fileimport-service:
image: speckle/speckle-fileimport-service:latest
restart: always
depends_on:
speckle-server:
condition: service_healthy
environment:
DEBUG: "fileimport-service:*"
PG_CONNECTION_STRING: "postgres://speckle:speckle@postgres/speckle"
WAIT_HOSTS: postgres:5432
S3_ENDPOINT: "http://minio:9000"
S3_ACCESS_KEY: "minioadmin"
S3_SECRET_KEY: "minioadmin"
S3_BUCKET: "speckle-server"
SPECKLE_SERVER_URL: "http://speckle-server:3000"
toxiproxy:
###
# Toxiproxy is a tool to simulate network conditions https://github.com/Shopify/toxiproxy
# Instead of connecting to speckle-server on port 3000, connect to ToxiProxy on port 3001
# Toxiproxy will forward the connection to speckle-server
# Use the ToxiProxy API to simulate network conditions as necessary
###
image: ghcr.io/shopify/toxiproxy:2.9.0
volumes:
# This mounts the toxiproxy.json file into the container at /config/toxiproxy.json
- ./toxiproxy.json:/config/toxiproxy.json
# This command starts toxiproxy with the configuration file
entrypoint: /toxiproxy -config /config/toxiproxy.json
ports:
# open ports to match the 'listen' ports in the toxiproxy.json file
- 8474:8474 # Toxiproxy API
- 3001:3001 # Speckle server
networks:
default:
+3 -3
View File
@@ -21,7 +21,7 @@ class SpeckleClient(CoreSpeckleClient):
The `SpeckleClient` is your entry point for interacting with
your Speckle Server's GraphQL API.
You'll need to have access to a server to use it,
or you can use our public server `app.speckle.systems`.
or you can use our public server `speckle.xyz`.
To authenticate the client, you'll need to have downloaded
the [Speckle Manager](https://speckle.guide/#speckle-manager)
@@ -32,7 +32,7 @@ class SpeckleClient(CoreSpeckleClient):
from specklepy.api.credentials import get_default_account
# initialise the client
client = SpeckleClient(host="app.speckle.systems") # or whatever your host is
client = SpeckleClient(host="speckle.xyz") # or whatever your host is
# client = SpeckleClient(host="localhost:3000", use_ssl=False) or use local server
# authenticate the client with an account (account has been added in Speckle Manager)
@@ -47,7 +47,7 @@ class SpeckleClient(CoreSpeckleClient):
```
"""
DEFAULT_HOST = "app.speckle.systems"
DEFAULT_HOST = "speckle.xyz"
USE_SSL = True
def __init__(
+1 -1
View File
@@ -22,7 +22,7 @@ class StreamWrapper(CoreStreamWrapper):
from specklepy.api.wrapper import StreamWrapper
# provide any stream, branch, commit, object, or globals url
wrapper = StreamWrapper("https://app.speckle.systems/streams/3073b96e86/commits/604bea8cc6")
wrapper = StreamWrapper("https://speckle.xyz/streams/3073b96e86/commits/604bea8cc6")
# get an authenticated SpeckleClient if you have a local account for the server
client = wrapper.get_client()
+3 -3
View File
@@ -30,7 +30,7 @@ class SpeckleClient:
The `SpeckleClient` is your entry point for interacting with
your Speckle Server's GraphQL API.
You'll need to have access to a server to use it,
or you can use our public server `app.speckle.systems`.
or you can use our public server `speckle.xyz`.
To authenticate the client, you'll need to have downloaded
the [Speckle Manager](https://speckle.guide/#speckle-manager)
@@ -41,7 +41,7 @@ class SpeckleClient:
from specklepy.api.credentials import get_default_account
# initialise the client
client = SpeckleClient(host="app.speckle.systems") # or whatever your host is
client = SpeckleClient(host="speckle.xyz") # or whatever your host is
# client = SpeckleClient(host="localhost:3000", use_ssl=False) or use local server
# authenticate the client with an account (account has been added in Speckle Manager)
@@ -56,7 +56,7 @@ class SpeckleClient:
```
"""
DEFAULT_HOST = "app.speckle.systems"
DEFAULT_HOST = "speckle.xyz"
USE_SSL = True
def __init__(
+2 -2
View File
@@ -58,7 +58,7 @@ def get_local_accounts(base_path: Optional[str] = None) -> List[Account]:
res = account_storage.get_all_objects()
account_storage.close()
if res:
accounts.extend(Account.parse_raw(r[1]) for r in res)
accounts.extend(Account.model_validate_json(r[1]) for r in res)
except SpeckleException:
# cannot open SQLiteTransport, probably because of the lack
# of disk write permissions
@@ -79,7 +79,7 @@ def get_local_accounts(base_path: Optional[str] = None) -> List[Account]:
if json_acct_files:
try:
accounts.extend(
Account.parse_raw(Path(json_path, json_file).read_text())
Account.model_validate_json(Path(json_path, json_file).read_text())
# Account.parse_file(os.path.join(json_path, json_file))
for json_file in json_acct_files
)
+1 -1
View File
@@ -30,7 +30,7 @@ class StreamWrapper:
from specklepy.api.wrapper import StreamWrapper
# provide any stream, branch, commit, object, or globals url
wrapper = StreamWrapper("https://app.speckle.systems/streams/3073b96e86/commits/604bea8cc6")
wrapper = StreamWrapper("https://speckle.xyz/streams/3073b96e86/commits/604bea8cc6")
# get an authenticated SpeckleClient if you have a local account for the server
client = wrapper.get_client()
-13
View File
@@ -1,13 +0,0 @@
from typing import List, Optional
from specklepy.objects.base import Base
class GisFeature(
Base, speckle_type="Objects.GIS.GisFeature", detachable={"displayValue"}
):
"""GIS Feature"""
geometry: Optional[List[Base]] = None
attributes: Base
displayValue: Optional[List[Base]] = None
+2 -2
View File
@@ -17,13 +17,13 @@ metrics.disable()
@pytest.fixture(scope="session")
def host():
return "localhost:3000"
return "localhost:3001"
def seed_user(host):
seed = uuid.uuid4().hex
user_dict = {
"email": f"{seed[0:7]}@example.org",
"email": f"{seed[0:7]}@spockle.com",
"password": "$uper$3cr3tP@ss",
"name": f"{seed[0:7]} Name",
"company": "test spockle",
+2 -2
View File
@@ -183,7 +183,7 @@ class TestStream:
# NOTE: only works for server admins
# invited = client.stream.invite_batch(
# stream_id=stream.id,
# emails=["userA@example.org", "userB@example.org"],
# emails=["userA@speckle.xyz", "userB@speckle.xyz"],
# user_ids=[second_user.id],
# message="yeehaw 🤠",
# )
@@ -192,7 +192,7 @@ class TestStream:
# invited_only_email = client.stream.invite_batch(
# stream_id=stream.id,
# emails=["userC@example.org"],
# emails=["userC@speckle.xyz"],
# message="yeehaw 🤠",
# )
+4 -10
View File
@@ -100,20 +100,16 @@ def test_parse_globals_as_commit():
#! NOTE: the following three tests may not pass locally
# if you have a `app.speckle.systems` account in manager
# if you have a `speckle.xyz` account in manager
def test_get_client_without_auth():
wrap = StreamWrapper(
"https://app.speckle.systems/streams/4c3ce1459c/commits/8b9b831792"
)
wrap = StreamWrapper("https://speckle.xyz/streams/4c3ce1459c/commits/8b9b831792")
client = wrap.get_client()
assert client is not None
def test_get_new_client_with_token(user_path):
wrap = StreamWrapper(
"https://app.speckle.systems/streams/4c3ce1459c/commits/8b9b831792"
)
wrap = StreamWrapper("https://speckle.xyz/streams/4c3ce1459c/commits/8b9b831792")
client = wrap.get_client()
client = wrap.get_client(token="super-secret-token")
@@ -121,9 +117,7 @@ def test_get_new_client_with_token(user_path):
def test_get_transport_with_token():
wrap = StreamWrapper(
"https://app.speckle.systems/streams/4c3ce1459c/commits/8b9b831792"
)
wrap = StreamWrapper("https://speckle.xyz/streams/4c3ce1459c/commits/8b9b831792")
client = wrap.get_client()
assert not client.account.token # unauthenticated bc no local accounts
+8
View File
@@ -0,0 +1,8 @@
[
{
"name": "speckle_test_speckle-server",
"listen": "0.0.0.0:3001",
"upstream": "speckle-server:3000",
"enabled": true
}
]