Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add python snippets and tests for creating, listing, and deleting queues #4012

Merged
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
a8cf1d7
add python snippets and tests for creating, listing, and deleting queues
aarjo Jun 8, 2020
7fe9f1c
fix grammar
aarjo Jun 8, 2020
8a9cff9
update licenses
aarjo Jun 8, 2020
7acd2af
Merge branch 'master' into tasks-create-list-delete-queues
averikitsch Jun 8, 2020
4a9a2c1
apply suggested fixes and format with black
aarjo Jun 9, 2020
0693cde
Merge branch 'tasks-create-list-delete-queues' of github.com:aarjo/py…
aarjo Jun 9, 2020
7e5e9ef
Merge branch 'master' into tasks-create-list-delete-queues
aarjo Jun 9, 2020
d8b20d8
Merge branch 'master' of https://github.com/GoogleCloudPlatform/pytho…
aarjo Jun 10, 2020
3018c46
refine delete_queue_test with fixture for setup
aarjo Jun 10, 2020
275fa4a
Merge branch 'master' of https://github.com/GoogleCloudPlatform/pytho…
aarjo Jun 10, 2020
55e3bbf
utilize fixtures and match format of create_http_task_test
aarjo Jun 10, 2020
26e683c
Merge branch 'master' of https://github.com/GoogleCloudPlatform/pytho…
aarjo Jun 10, 2020
145db0c
Merge branch 'tasks-create-list-delete-queues' of github.com:aarjo/py…
aarjo Jun 10, 2020
547ac9d
utilize fixtures in list_queues_test and create_queue_test
aarjo Jun 10, 2020
e4fd742
make create_queue_test call the right function
aarjo Jun 10, 2020
195183f
still attempt to delete queue after test runs in case of failure
aarjo Jun 10, 2020
8552a80
attempt to delete queue in case of failure, using try/except approach
aarjo Jun 10, 2020
eca47d1
add print when NotFound is caught
aarjo Jun 10, 2020
3adeffc
Merge branch 'master' into tasks-create-list-delete-queues
aarjo Jun 12, 2020
eb36f24
Merge branch 'master' into tasks-create-list-delete-queues
Jun 12, 2020
bd4b6a7
fix import
aarjo Jun 12, 2020
fe403ad
Merge branch 'master' of https://github.com/GoogleCloudPlatform/pytho…
aarjo Jun 12, 2020
183e2b6
Merge branch 'tasks-create-list-delete-queues' of github.com:aarjo/py…
aarjo Jun 12, 2020
a76988f
Merge branch 'master' into tasks-create-list-delete-queues
aarjo Jun 12, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions tasks/create_queue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# [START cloud_tasks_create_queue]
def create_queue(project, queue_name, location):
"""Create a task queue."""
aarjo marked this conversation as resolved.
Show resolved Hide resolved

from google.cloud import tasks_v2

# Create a client.
client = tasks_v2.CloudTasksClient()

# Construct the fully qualified location path.
parent = client.location_path(project, location)

# Construct the create queue request.
queue = {'name': client.queue_path(project, location, queue_name)}

# Use the client to create the queue.
response = client.create_queue(parent, queue)

print('Created queue {}'.format(response.name))
return response
# [END cloud_tasks_create_queue]
aarjo marked this conversation as resolved.
Show resolved Hide resolved
40 changes: 40 additions & 0 deletions tasks/create_queue_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import os
import uuid

from google.cloud import tasks_v2
import pytest

import create_queue

TEST_PROJECT_ID = os.environ['GOOGLE_CLOUD_PROJECT']
TEST_LOCATION = os.getenv('TEST_QUEUE_LOCATION', 'us-central1')
TEST_QUEUE_NAME = f'my-queue-{uuid.uuid4().hex}'


@pytest.fixture()
def test_queue():
client = tasks_v2.CloudTasksClient()
q = create_queue.create_queue(TEST_PROJECT_ID, TEST_QUEUE_NAME, TEST_LOCATION)

yield q

client.delete_queue(q.name)


def test_create_queue(capsys, test_queue):
out, _ = capsys.readouterr()
assert 'Created queue' in out
30 changes: 30 additions & 0 deletions tasks/delete_queue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# [START cloud_tasks_delete_queue]
def delete_queue(project, queue_name, location):
"""Delete a task queue."""

from google.cloud import tasks_v2

# Create a client.
client = tasks_v2.CloudTasksClient()

# Get the fully qualified path to queue.
queue = client.queue_path(project, location, queue_name)

# Use the client to delete the queue.
client.delete_queue(queue)
print('Deleted queue')
# [END cloud_tasks_delete_queue]
55 changes: 55 additions & 0 deletions tasks/delete_queue_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import os
import uuid

from google.cloud import exceptions, tasks_v2
import pytest

import delete_queue


TEST_PROJECT_ID = os.environ['GOOGLE_CLOUD_PROJECT']
TEST_LOCATION = os.getenv('TEST_QUEUE_LOCATION', 'us-central1')
TEST_QUEUE_NAME = f'my-queue-{uuid.uuid4().hex}'


@pytest.fixture()
def test_queue():
client = tasks_v2.CloudTasksClient()
parent = client.location_path(TEST_PROJECT_ID, TEST_LOCATION)
queue = {
# The fully qualified path to the queue
'name': client.queue_path(
TEST_PROJECT_ID, TEST_LOCATION, TEST_QUEUE_NAME),
}
q = client.create_queue(parent, queue)

yield q

try:
# Attempt to delete the queue in case the sample failed.
client.delete_queue(q.name)
except exceptions.NotFound:
# The queue was already successfully deleted.
print('Queue already deleted successfully')


def test_delete_queue(capsys, test_queue):
delete_queue.delete_queue(
TEST_PROJECT_ID, TEST_QUEUE_NAME, TEST_LOCATION
)
out, _ = capsys.readouterr()
assert 'Deleted queue' in out
36 changes: 36 additions & 0 deletions tasks/list_queues.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# [START cloud_tasks_list_queues]
def list_queues(project, location):
"""List all task queues."""

from google.cloud import tasks_v2

# Create a client.
client = tasks_v2.CloudTasksClient()

# Construct the fully qualified location path.
parent = client.location_path(project, location)

# Use the client to obtain the queues.
response = client.list_queues(parent)

# Print the results.
for queue in response:
print(queue.name)

if response.num_results == 0:
print('No queues found!')
# [END cloud_tasks_list_queues]
55 changes: 55 additions & 0 deletions tasks/list_queues_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import os
import uuid

from google.cloud import tasks_v2
import pytest

import list_queues

TEST_PROJECT_ID = os.environ['GOOGLE_CLOUD_PROJECT']
TEST_LOCATION = os.getenv('TEST_QUEUE_LOCATION', 'us-central1')
TEST_QUEUE_NAME = f'my-queue-{uuid.uuid4().hex}'


@pytest.fixture()
def test_queue():
client = tasks_v2.CloudTasksClient()
parent = client.location_path(TEST_PROJECT_ID, TEST_LOCATION)
queue = {
# The fully qualified path to the queue
'name': client.queue_path(
TEST_PROJECT_ID, TEST_LOCATION, TEST_QUEUE_NAME),
}
q = client.create_queue(parent, queue)

yield q

client.delete_queue(q.name)


def test_list_queues_not_present(capsys):
list_queues.list_queues(TEST_PROJECT_ID, TEST_LOCATION)
out, _ = capsys.readouterr()

assert(TEST_QUEUE_NAME not in out)


def test_list_queues_present(capsys, test_queue):
list_queues.list_queues(TEST_PROJECT_ID, TEST_LOCATION)
out, _ = capsys.readouterr()

assert(TEST_QUEUE_NAME in out)