Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
Next Next commit
moving helper methods to base class, reducing code
  • Loading branch information
seankane-msft committed May 12, 2021
commit 8b7f70396a3a6d4367f60cfdd1b54b68a05ad76c
33 changes: 33 additions & 0 deletions sdk/tables/azure-data-tables/tests/_shared/asynctestcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,15 @@
# license information.
# --------------------------------------------------------------------------
from azure.core.credentials import AccessToken
from azure.core.exceptions import ResourceNotFoundError, ResourceExistsError
from azure.data.tables import TableServiceClient

from .testcase import TableTestCase


TEST_TABLE_PREFIX = 'pytableasync'


class AsyncFakeTokenCredential(object):
"""Protocol for classes able to provide OAuth tokens.
:param str scopes: Lets you specify the type of access needed.
Expand All @@ -24,3 +30,30 @@ class AsyncTableTestCase(TableTestCase):

def generate_fake_token(self):
return AsyncFakeTokenCredential()

def _get_table_reference(self, prefix=TEST_TABLE_PREFIX):
table_name = self.get_resource_name(prefix)
return table_name

async def _create_table(self, ts, prefix=TEST_TABLE_PREFIX, table_list=None):
table_name = self._get_table_reference(prefix)
try:
table = await ts.create_table(table_name)
if table_list is not None:
table_list.append(table)
except ResourceExistsError:
table = ts.get_table_client(table_name)
return table

async def _delete_table(self, ts, table):
if table is None:
return
await ts.delete_table(table.name)

async def _delete_all_tables(self, account_name, key):
client = TableServiceClient(self.account_url(account_name, "cosmos"), key)
async for table in client.list_tables():
await client.delete_table(table.name)

if self.is_live:
self.sleep(10)
50 changes: 43 additions & 7 deletions sdk/tables/azure-data-tables/tests/_shared/testcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,17 @@
# license information.
# --------------------------------------------------------------------------
from __future__ import division
from contextlib import contextmanager
import os
from datetime import datetime, timedelta
import string
import logging

import pytest

from devtools_testutils import AzureTestCase
from azure.core.credentials import AccessToken, AzureNamedKeyCredential
from azure.core.exceptions import ResourceExistsError, ResourceNotFoundError
from azure.data.tables import generate_account_sas, AccountSasPermissions, ResourceTypes

LOGGING_FORMAT = '%(asctime)s %(name)-20s %(levelname)-5s %(message)s'

SLEEP_DELAY = 30

TEST_TABLE_PREFIX = 'pytablesync'

class FakeTokenCredential(object):
"""Protocol for classes able to provide OAuth tokens.
Expand Down Expand Up @@ -71,6 +66,47 @@ def generate_sas_token(self):
def generate_fake_token(self):
return FakeTokenCredential()

def _get_table_reference(self, prefix=TEST_TABLE_PREFIX):
table_name = self.get_resource_name(prefix)
return table_name

def _create_table(self, ts, prefix=TEST_TABLE_PREFIX, table_list=None):
table_name = self._get_table_reference(prefix)
try:
table = ts.create_table(table_name)
if table_list is not None:
table_list.append(table)
except ResourceExistsError:
table = ts.get_table_client(table_name)
return table

def _delete_table(self, ts, table):
if table is None:
return
ts.delete_table(table.name)

def _delete_all_tables(self, ts):
for table in ts.list_tables():
ts.delete_table(table.name)

def _create_pk_rk(self, pk, rk):
try:
pk = pk if pk is not None else self.get_resource_name('pk').decode('utf-8')
rk = rk if rk is not None else self.get_resource_name('rk').decode('utf-8')
except AttributeError:
pk = pk if pk is not None else self.get_resource_name('pk')
rk = rk if rk is not None else self.get_resource_name('rk')
return pk, rk

def _create_random_base_entity_dict(self):
"""
Creates a dict-based entity with only pk and rk.
"""
partition, row = self._create_pk_rk(None, None)
return {
'PartitionKey': partition,
'RowKey': row,
}

class ResponseCallback(object):
def __init__(self, status=None, new_status=None):
Expand Down
38 changes: 1 addition & 37 deletions sdk/tables/azure-data-tables/tests/test_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,48 +41,12 @@
ResourceExistsError
)

from _shared.testcase import TableTestCase
from _shared.testcase import TableTestCase, TEST_TABLE_PREFIX
from preparers import tables_decorator, tables_decorator
# ------------------------------------------------------------------------------

TEST_TABLE_PREFIX = 'pytablesync'


# ------------------------------------------------------------------------------

class StorageTableTest(AzureTestCase, TableTestCase):

# --Helpers-----------------------------------------------------------------
def _get_table_reference(self, prefix=TEST_TABLE_PREFIX):
table_name = self.get_resource_name(prefix)
return table_name

def _create_table(self, ts, prefix=TEST_TABLE_PREFIX, table_list=None):
table_name = self._get_table_reference(prefix)
try:
table = ts.create_table(table_name)
if table_list is not None:
table_list.append(table)
except ResourceExistsError:
table = ts.get_table_client(table_name)
return table

def _delete_table(self, ts, table):
if table:
try:
ts.delete_table(table.table_name)
except ResourceNotFoundError:
pass

def _delete_all_tables(self, ts):
for table in ts.list_tables():
try:
ts.delete_table(table.name)
except ResourceNotFoundError:
pass

# --Test cases for tables --------------------------------------------------

@tables_decorator
def test_create_properties(self, tables_storage_account_name, tables_primary_storage_account_key):
# # Arrange
Expand Down
26 changes: 1 addition & 25 deletions sdk/tables/azure-data-tables/tests/test_table_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,37 +19,13 @@
)
from azure.data.tables.aio import TableServiceClient, TableClient

from _shared.asynctestcase import AsyncTableTestCase
from _shared.asynctestcase import AsyncTableTestCase, TEST_TABLE_PREFIX
from async_preparers import tables_decorator_async

TEST_TABLE_PREFIX = 'pytableasync'


# ------------------------------------------------------------------------------

class TableTestAsync(AzureTestCase, AsyncTableTestCase):
# --Helpers-----------------------------------------------------------------
def _get_table_reference(self, prefix=TEST_TABLE_PREFIX):
table_name = self.get_resource_name(prefix)
return table_name

async def _create_table(self, ts, prefix=TEST_TABLE_PREFIX, table_list=None):
table_name = self._get_table_reference(prefix)
try:
table = await ts.create_table(table_name)
if table_list is not None:
table_list.append(table)
except ResourceExistsError:
table = ts.get_table_client(table_name)
return table

async def _delete_table(self, ts, table):
if table is None:
return
try:
await ts.delete_table(table.table_name)
except ResourceNotFoundError:
pass

# --Test cases for tables --------------------------------------------------
@tables_decorator_async
Expand Down
18 changes: 2 additions & 16 deletions sdk/tables/azure-data-tables/tests/test_table_batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,21 +73,6 @@ def _tear_down(self):
pass

#--Helpers-----------------------------------------------------------------

def _get_table_reference(self, prefix=TEST_TABLE_PREFIX):
table_name = self.get_resource_name(prefix)
self.test_tables.append(table_name)
return self.ts.get_table_client(table_name)

def _create_pk_rk(self, pk, rk):
try:
pk = pk if pk is not None else self.get_resource_name('pk').decode('utf-8')
rk = rk if rk is not None else self.get_resource_name('rk').decode('utf-8')
except AttributeError:
pk = pk if pk is not None else self.get_resource_name('pk')
rk = rk if rk is not None else self.get_resource_name('rk')
return pk, rk

def _create_random_entity_dict(self, pk=None, rk=None):
"""
Creates a dictionary-based entity with fixed values, using all
Expand Down Expand Up @@ -616,7 +601,8 @@ def test_batch_reuse(self, tables_storage_account_name, tables_primary_storage_a
# Arrange
self._set_up(tables_storage_account_name, tables_primary_storage_account_key)
try:
table2 = self._get_table_reference('table2')
table2_name = self._get_table_reference('table2')
table2 = self.ts.get_table_client(table2_name)
table2.create_table()

# Act
Expand Down
15 changes: 0 additions & 15 deletions sdk/tables/azure-data-tables/tests/test_table_batch_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,21 +73,6 @@ async def _tear_down(self):
await self.table.close()

#--Helpers-----------------------------------------------------------------

def _get_table_reference(self, prefix=TEST_TABLE_PREFIX):
table_name = self.get_resource_name(prefix)
self.test_tables.append(table_name)
return self.ts.get_table_client(table_name)

def _create_pk_rk(self, pk, rk):
try:
pk = pk if pk is not None else self.get_resource_name('pk').decode('utf-8')
rk = rk if rk is not None else self.get_resource_name('rk').decode('utf-8')
except AttributeError:
pk = pk if pk is not None else self.get_resource_name('pk')
rk = rk if rk is not None else self.get_resource_name('rk')
return pk, rk

def _create_random_entity_dict(self, pk=None, rk=None):
"""
Creates a dictionary-based entity with fixed values, using all
Expand Down
15 changes: 0 additions & 15 deletions sdk/tables/azure-data-tables/tests/test_table_batch_cosmos.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,21 +69,6 @@ def _tear_down(self):
self.sleep(SLEEP_DELAY)

#--Helpers-----------------------------------------------------------------

def _get_table_reference(self, prefix=TEST_TABLE_PREFIX):
table_name = self.get_resource_name(prefix)
self.test_tables.append(table_name)
return self.ts.get_table_client(table_name)

def _create_pk_rk(self, pk, rk):
try:
pk = pk if pk is not None else self.get_resource_name('pk').decode('utf-8')
rk = rk if rk is not None else self.get_resource_name('rk').decode('utf-8')
except AttributeError:
pk = pk if pk is not None else self.get_resource_name('pk')
rk = rk if rk is not None else self.get_resource_name('rk')
return pk, rk

def _create_random_entity_dict(self, pk=None, rk=None):
'''
Creates a dictionary-based entity with fixed values, using all
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,21 +72,6 @@ async def _tear_down(self):
self.sleep(SLEEP_DELAY)

#--Helpers-----------------------------------------------------------------

def _get_table_reference(self, prefix=TEST_TABLE_PREFIX):
table_name = self.get_resource_name(prefix)
self.test_tables.append(table_name)
return self.ts.get_table_client(table_name)

def _create_pk_rk(self, pk, rk):
try:
pk = pk if pk is not None else self.get_resource_name('pk').decode('utf-8')
rk = rk if rk is not None else self.get_resource_name('rk').decode('utf-8')
except AttributeError:
pk = pk if pk is not None else self.get_resource_name('pk')
rk = rk if rk is not None else self.get_resource_name('rk')
return pk, rk

def _create_random_entity_dict(self, pk=None, rk=None):
"""
Creates a dictionary-based entity with fixed values, using all
Expand Down
32 changes: 0 additions & 32 deletions sdk/tables/azure-data-tables/tests/test_table_cosmos.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,38 +52,6 @@

class StorageTableTest(AzureTestCase, TableTestCase):

# --Helpers-----------------------------------------------------------------
def _get_table_reference(self, prefix=TEST_TABLE_PREFIX):
table_name = self.get_resource_name(prefix)
return table_name

def _create_table(self, ts, prefix=TEST_TABLE_PREFIX, table_list=None):
table_name = self._get_table_reference(prefix)
try:
table = ts.create_table(table_name)
if table_list is not None:
table_list.append(table)
except ResourceExistsError:
table = ts.get_table_client(table_name)
return table

def _delete_table(self, ts, table):
if table is None:
return
try:
ts.delete_table(table.name)
except ResourceNotFoundError:
pass

def _delete_all_tables(self, ts):
tables = ts.list_tables()
for table in tables:
try:
ts.delete_table(table.name)
except ResourceNotFoundError:
pass

# --Test cases for tables --------------------------------------------------
@cosmos_decorator
def test_create_table(self, tables_cosmos_account_name, tables_primary_cosmos_account_key):
# # Arrange
Expand Down
32 changes: 0 additions & 32 deletions sdk/tables/azure-data-tables/tests/test_table_cosmos_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,38 +28,6 @@
# ------------------------------------------------------------------------------

class TableTestAsync(AzureTestCase, AsyncTableTestCase):
# --Helpers-----------------------------------------------------------------
def _get_table_reference(self, prefix=TEST_TABLE_PREFIX):
table_name = self.get_resource_name(prefix)
return table_name

async def _delete_all_tables(self, account_name, key):
client = TableServiceClient(self.account_url(account_name, "cosmos"), key)
async for table in client.list_tables():
await client.delete_table(table.name)

if self.is_live:
self.sleep(10)

async def _create_table(self, ts, prefix=TEST_TABLE_PREFIX, table_list=None):
table_name = self._get_table_reference(prefix)
try:
table = await ts.create_table(table_name)
if table_list is not None:
table_list.append(table)
except ResourceExistsError:
table = ts.get_table_client(table_name)
return table

async def _delete_table(self, ts, table):
if table is None:
return
try:
await ts.delete_table(table.name)
except ResourceNotFoundError:
pass

# --Test cases for tables --------------------------------------------------
@cosmos_decorator_async
async def test_create_table(self, tables_cosmos_account_name, tables_primary_cosmos_account_key):
# Arrange
Expand Down
Loading