8000 refactor fixtures, add static resources · code4ward/python-docs-samples@59b1f1d · GitHub
[go: up one dir, main page]

Skip to content

Commit 59b1f1d

Browse files
committed
refactor fixtures, add static resources
1 parent a518851 commit 59b1f1d

File tree

1 file changed

+66
-143
lines changed

1 file changed

+66
-143
lines changed

memorystore/redis/cloud_run_deployment/e2e_test.py

Lines changed: 66 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -24,83 +24,42 @@
2424

2525
import pytest
2626

27+
# Unique suffix to create distinct service names
2728

28-
@pytest.fixture()
29-
def services():
30-
# Unique suffix to create distinct service names
31-
suffix = uuid.uuid4().hex[:10]
32-
project = os.environ["GOOGLE_CLOUD_PROJECT"]
29+
SUFFIX = uuid.uuid4().hex[:10]
30+
PROJECT = os.environ["GOOGLE_CLOUD_PROJECT"]
31+
VPC_NETWORK_NAME = "memorystore-redis"
32+
VPC_CONNECTOR_NAME = "test-connector"
33+
MEMORYSTORE_REDIS_NAME = "static-test-instance"
3334

34-
# Create a VPC network
35-
network_name = f"test-network-{suffix}"
36-
subprocess.run(
37-
[
38-
"gcloud",
39-
"compute",
40-
"networks",
41-
"create",
42-
network_name,
43-
"--project",
44-
project,
45-
], check=True
46-
)
47-
48-
# Create a Serverless VPC Access connector
49-
connector_name = f"test-connector-{suffix}"
50-
subprocess.run(
51-
[
52-
"gcloud",
53-
"compute",
54-
"networks",
55-
"vpc-access",
56-
"connectors",
57-
"create",
58-
connector_name,
59-
"--network",
60-
network_name,
61-
"--region=us-central1",
62-
"--range=192.168.16.0/28",
63-
"--project",
64-
project,
65-
], check=True
66-
)
67-
68-
# Create a Memorystore Redis instance
69-
instance_name = f"test-instance-{suffix}"
70-
subprocess.run(
71-
[
72-
"gcloud",
73-
"redis",
74-
"instances",
75-
"create",
76-
instance_name,
77-
"--region=us-central1",
78-
"--network",
79-
network_name,
80-
"--project",
81-
project,
82-
], check=True
83-
)
8435

36+
@pytest.fixture
37+
def redis_host():
8538
# Get the Redis instance's IP
8639
redis_host = subprocess.run(
8740
[
8841
"gcloud",
8942
"redis",
9043
"instances",
9144
"describe",
92-
instance_name,
45+
MEMORYSTORE_REDIS_NAME,
9346
"--region=us-central1",
9447
"--format=value(host)",
9548
"--project",
96-
project,
49+
PROJECT,
9750
],
9851
stdout=subprocess.PIPE,
9952
check=True
10053
).stdout.strip().decode()
54+
yield redis_host
55+
56+
# no deletion needs to happen, this is a "get" of a static instance
10157

58+
59+
@pytest.fixture
60+
def container_image():
10261
# Build container image for Cloud Run deployment
103-
image_name = f"gcr.io/{project}/test-visit-count-{suffix}"
62+
image_name = f"gcr.io/{PROJECT}/test-visit-count-{SUFFIX}"
10463
subprocess.run(
10564
[
10665
"cp",
@@ -116,46 +75,85 @@ def services():
11675
"--tag",
11776
image_name,
11877
"--project",
119-
project,
78+
PROJECT,
12079
], check=True
12180
)
81+
yield image_name
82+
12283
subprocess.run(["rm", "Dockerfile"], check=True)
12384

85+
# Delete container image
86+
subprocess.run(
87+
[
88+
"gcloud",
89+
"container",
90+
"images",
91+
"delete",
92+
image_name,
93+
"--quiet",
94+
"--project",
95+
PROJECT,
96+
], check=True
97+
)
98+
99+
100+
@pytest.fixture
101+
def deployed_service(container_image, redis_host):
124102
# Deploy image to Cloud Run
125-
service_name = f"test-visit-count-{suffix}"
103+
service_name = f"test-visit-count-{SUFFIX}"
126104
subprocess.run(
127105
[
128106
"gcloud",
129107
"run",
130108
"deploy",
131109
service_name,
132110
"--image",
133-
image_name,
111+
container_image,
134112
"--platform=managed",
135113
"--no-allow-unauthenticated",
136114
"--region=us-central1",
137115
"--vpc-connector",
138-
connector_name,
116+
VPC_CONNECTOR_NAME,
139117
"--set-env-vars",
140118
f"REDISHOST={redis_host},REDISPORT=6379",
141119
"--project",
142-
project,
120+
PROJECT,
143121
], check=True
144122
)
123+
yield service_name
145124

125+
# Delete Cloud Run service
126+
subprocess.run(
127+
[
128+
"gcloud",
129+
"run",
130+
"services",
131+
"delete",
132+
service_name,
133+
"--platform=managed",
134+
"--region=us-central1",
135+
"--quiet",
136+
"--project",
137+
PROJECT,
138+
], check=True
139+
)
140+
141+
142+
@pytest.fixture
143+
def service_url_auth_token(deployed_service):
146144
# Get Cloud Run service URL and auth token
147145
service_url = subprocess.run(
148146
[
149147
"gcloud",
150148
"run",
151149
"services",
152150
"describe",
153-
service_name,
151+
deployed_service,
154152
"--platform=managed",
155153
"--region=us-central1",
156154
"--format=value(status.url)",
157155
"--project",
158-
project,
156+
PROJECT,
159157
],
160158
stdout=subprocess.PIPE,
161159
check=True
@@ -168,86 +166,11 @@ def services():
168166

169167
yield service_url, auth_token
170168

171-
# Delete Cloud Run service
172-
subprocess.run(
173-
[
174-
"gcloud",
175-
"run",
176-
"services",
177-
"delete",
178-
service_name,
179-
"--platform=managed",
180-
"--region=us-central1",
181-
"--quiet",
182-
"--project",
183-
project,
184-
], check=True
185-
)
186-
187-
# Delete container image
188-
subprocess.run(
189-
[
190-
"gcloud",
191-
"container",
192-
"images",
193-
"delete",
194-
image_name,
195-
"--quiet",
196-
"--project",
197-
project,
198-
], check=True
199-
)
200-
201-
# Delete Redis instance
202-
subprocess.run(
203-
[
204-
"gcloud",
205-
"redis",
206-
"instances",
207-
"delete",
208-
instance_name,
209-
"--region=us-central1",
210-
"--quiet",
211-
"--async",
212-
"--project",
213-
project,
214-
], check=True
215-
)
216-
217-
# Delete Serverless VPC Access connector
218-
subprocess.run(
219-
[
220-
"gcloud",
221-
"compute",
222-
"networks",
223-
"vpc-access",
224-
"connectors",
225-
"delete",
226-
connector_name,
227-
"--region=us-central1",
228-
"--quiet",
229-
"--project",
230-
project,
231-
], check=True
232-
)
233-
234-
# Delete VPC network
235-
subprocess.run(
236-
[
237-
"gcloud",
238-
"compute",
239-
"networks",
240-
"delete",
241-
network_name,
242-
"--quiet",
243-
"--project",
244-
project,
245-
], check=True
246-
)
169+
# no deletion needed
247170

248171

249-
def test_end_to_end(services):
250-
service_url, auth_token = services
172+
def test_end_to_end(service_url_auth_token):
173+
service_url, auth_token = service_url_auth_token
251174

252175
req = request.Request(
253176
service_url,

0 commit comments

Comments
 (0)
0