1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
# -------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import unittest
import pytest
# from azure.data.tabless import TableServiceClient
from azure.data.tables.aio import TableServiceClient
from devtools_testutils import CachedResourceGroupPreparer, CachedStorageAccountPreparer
from _shared.testcase import TableTestCase
SERVICE_UNAVAILABLE_RESP_BODY = '<?xml version="1.0" encoding="utf-8"?><StorageServiceStats><GeoReplication><Status' \
'>unavailable</Status><LastSyncTime></LastSyncTime></GeoReplication' \
'></StorageServiceStats> '
SERVICE_LIVE_RESP_BODY = '<?xml version="1.0" encoding="utf-8"?><StorageServiceStats><GeoReplication><Status' \
'>live</Status><LastSyncTime>Wed, 19 Jan 2021 22:28:43 GMT</LastSyncTime></GeoReplication' \
'></StorageServiceStats> '
# --Test Class -----------------------------------------------------------------
class TableServiceStatsTest(TableTestCase):
# --Helpers-----------------------------------------------------------------
def _assert_stats_default(self, stats):
assert stats is not None
assert stats['geo_replication'] is not None
assert stats['geo_replication']['status'] == 'live'
assert stats['geo_replication']['last_sync_time'] is not None
def _assert_stats_unavailable(self, stats):
assert stats is not None
assert stats['geo_replication'] is not None
assert stats['geo_replication']['status'] == 'unavailable'
assert stats['geo_replication']['last_sync_time'] is None
@staticmethod
def override_response_body_with_unavailable_status(response):
response.http_response.text = lambda _: SERVICE_UNAVAILABLE_RESP_BODY
@staticmethod
def override_response_body_with_live_status(response):
response.http_response.text = lambda _: SERVICE_LIVE_RESP_BODY
# response.http_response.text = lambda _: SERVICE_LIVE_RESP_BODY
# --Test cases per service ---------------------------------------
@CachedResourceGroupPreparer(name_prefix="tablestest")
@CachedStorageAccountPreparer(name_prefix="tablestest", sku='Standard_RAGRS')
async def test_table_service_stats_f(self, resource_group, location, storage_account, storage_account_key):
# Arrange
tsc = TableServiceClient(self.account_url(storage_account, "table"), storage_account_key)
# Act
stats = await tsc.get_service_stats(raw_response_hook=self.override_response_body_with_live_status)
# Assert
self._assert_stats_default(stats)
@CachedResourceGroupPreparer(name_prefix="tablestest")
@CachedStorageAccountPreparer(name_prefix="tablestest", sku='Standard_RAGRS')
async def test_table_service_stats_when_unavailable(self, resource_group, location, storage_account, storage_account_key):
# Arrange
tsc = TableServiceClient(self.account_url(storage_account, "table"), storage_account_key)
# Act
stats = await tsc.get_service_stats(
raw_response_hook=self.override_response_body_with_unavailable_status)
# Assert
self._assert_stats_unavailable(stats)
# ------------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()
|