Skip to content

Commit 9cbb659

Browse files
committed
chore(tests): minio "global" support, and finish test_memory
1 parent 92871e0 commit 9cbb659

2 files changed

Lines changed: 63 additions & 35 deletions

File tree

tests/integration/lib.py

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from threading import Thread
1414
from argparse import Namespace
1515

16-
AWS_S3_DEFAULT_BUCKET = "test"
16+
AWS_S3_DEFAULT_BUCKET = os.environ.get("AWS_S3_DEFAULT_BUCKET", "test")
1717
DOCKER_GW_IP = "172.17.0.1" # will override below if found
1818

1919
myContainers = list()
@@ -25,10 +25,6 @@
2525
DOCKER_GW_IP = network.attrs["IPAM"]["Config"][0]["Gateway"]
2626
break
2727

28-
print(dockerClient.containers.list())
29-
30-
i = 0
31-
3228
# # https://stackoverflow.com/a/53255955/1839099
3329
# def fire_and_forget(f):
3430
# def wrapped(*args, **kwargs):
@@ -159,19 +155,49 @@ def stop():
159155
return container, stop
160156

161157

162-
_minioCache = None
163-
164-
165-
def getMinio():
166-
global _minioCache
167-
if _minioCache:
168-
return Namespace(**_minioCache)
158+
_minioCache = {}
159+
160+
161+
def getMinio(id="disposable"):
162+
cached = _minioCache.get(id, None)
163+
if cached:
164+
return Namespace(**cached)
165+
166+
if id == "global":
167+
endpoint_url = os.getenv("AWS_S3_ENDPOINT_URL")
168+
if endpoint_url:
169+
print("Reusing existing global minio")
170+
aws_access_key_id = os.getenv("AWS_ACCESS_KEY_ID")
171+
aws_secret_access_key = os.getenv("AWS_SECRET_ACCESS_KEY")
172+
173+
s3 = boto3.client(
174+
"s3",
175+
endpoint_url=endpoint_url,
176+
config=boto3.session.Config(signature_version="s3v4"),
177+
aws_access_key_id=aws_access_key_id,
178+
aws_secret_access_key=aws_secret_access_key,
179+
aws_session_token=None,
180+
# verify=False,
181+
)
182+
result = {
183+
# don't link to actual container, and don't rm it at end
184+
"container": "global",
185+
"stop": lambda x: x,
186+
# "port": port,
187+
"endpoint_url": endpoint_url,
188+
"aws_access_key_id": aws_access_key_id,
189+
"aws_secret_access_key": aws_secret_access_key,
190+
"s3": s3,
191+
}
192+
_minioCache.update({id: result})
193+
return Namespace(**result)
194+
else:
195+
print("Creating new global minio")
169196

170197
port = get_free_port()
171198

172199
def onstop():
173-
global _minioCache
174-
_minioCache = None
200+
del _minioCache[id]
175201

176202
container, stop = startContainer(
177203
"minio/minio",
@@ -194,12 +220,14 @@ def onstop():
194220
if response and response.status_code == 200:
195221
break
196222

223+
aws_access_key_id = "minioadmin"
224+
aws_secret_access_key = "minioadmin"
197225
s3 = boto3.client(
198226
"s3",
199227
endpoint_url=endpoint_url,
200228
config=boto3.session.Config(signature_version="s3v4"),
201-
aws_access_key_id="minioadmin",
202-
aws_secret_access_key="minioadmin",
229+
aws_access_key_id=aws_access_key_id,
230+
aws_secret_access_key=aws_secret_access_key,
203231
aws_session_token=None,
204232
# verify=False,
205233
)
@@ -211,9 +239,11 @@ def onstop():
211239
"stop": stop,
212240
"port": port,
213241
"endpoint_url": endpoint_url,
242+
"aws_access_key_id": aws_access_key_id,
243+
"aws_secret_access_key": aws_secret_access_key,
214244
"s3": s3,
215245
}
216-
_minioCache = result
246+
_minioCache.update({id: result})
217247
return Namespace(**result)
218248

219249

@@ -245,10 +275,10 @@ def getDDA(
245275
if minio:
246276
environment.update(
247277
{
248-
"AWS_ACCESS_KEY_ID": "minioadmin",
249-
"AWS_SECRET_ACCESS_KEY": "minioadmin",
278+
"AWS_ACCESS_KEY_ID": minio.aws_access_key_id,
279+
"AWS_SECRET_ACCESS_KEY": minio.aws_secret_access_key,
250280
"AWS_DEFAULT_REGION": "",
251-
"AWS_S3_DEFAULT_BUCKET": "test",
281+
"AWS_S3_DEFAULT_BUCKET": AWS_S3_DEFAULT_BUCKET,
252282
"AWS_S3_ENDPOINT_URL": minio.endpoint_url,
253283
}
254284
)

tests/integration/test_memory.py

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,51 +5,49 @@
55

66

77
def test_memory():
8-
return
98
"""
109
Make sure when switching models we release VRAM afterwards.
1110
"""
11+
minio = getMinio("global")
1212
HOME = os.getenv("HOME")
13-
dda = dda = getDDA(
14-
# minio=minio
15-
# stream_logs=True,
13+
dda = getDDA(
14+
minio=minio,
15+
stream_logs=True,
1616
volumes=[f"{HOME}/root-cache:/root/.cache"],
1717
)
1818
print(dda)
1919

2020
TEST_ARGS = {"test_url": dda.url}
21-
MODEL_ARGS = {"num_infernece_steps": 1}
21+
MODEL_ARGS = {"num_inference_steps": 1}
2222

2323
mem_usage = list()
2424

25-
# 768x768 model is obviously bigger
25+
# fp32 model is obviously bigger
2626
result = runTest(
2727
"txt2img",
2828
TEST_ARGS,
2929
{
30-
"MODEL_ID": "stabilityai/stable-diffusion-2-1", # not -base
31-
"MODEL_REVISION": "fp16",
32-
"MODEL_PRECISION": "fp16",
30+
"MODEL_ID": "stabilityai/stable-diffusion-2-1-base",
31+
"MODEL_REVISION": "", # <--
32+
"MODEL_PRECISION": "", # <--
3333
"MODEL_URL": "s3://",
3434
},
3535
MODEL_ARGS,
3636
)
37-
print(result)
3837
mem_usage.append(result["$mem_usage"])
3938

40-
# 512x512 model is obviously bigger
39+
# fp32 model is obviously smaller
4140
result = runTest(
4241
"txt2img",
4342
TEST_ARGS,
4443
{
45-
"MODEL_ID": "stabilityai/stable-diffusion-2-1-base", # <--
46-
"MODEL_REVISION": "fp16",
47-
"MODEL_PRECISION": "fp16",
44+
"MODEL_ID": "stabilityai/stable-diffusion-2-1-base",
45+
"MODEL_REVISION": "fp16", # <--
46+
"MODEL_PRECISION": "fp16", # <--
4847
"MODEL_URL": "s3://",
4948
},
5049
MODEL_ARGS,
5150
)
52-
print(result)
5351
mem_usage.append(result["$mem_usage"])
5452

5553
print({"mem_usage": mem_usage})

0 commit comments

Comments
 (0)