Exemplo n.º 1
0
 TEST_FIXTURE(table_service_test_base, table_name_unicode)
 {
     utility::string_t table_name(_XPLATSTR("表格1"));
     azure::storage::cloud_table_client client = get_table_client();
     azure::storage::cloud_table table = client.get_table_reference(table_name);
     CHECK(false == table.exists()); 
     CHECK_STORAGE_EXCEPTION(table.create(), error_bad_request);
 }
Exemplo n.º 2
0
wa::storage::cloud_table get_table(bool create)
{
    wa::storage::cloud_table_client client = get_table_client();
    utility::string_t table_name = get_table_name();
    wa::storage::cloud_table table = client.get_table_reference(table_name);
    if (create)
    {
        table.create_if_not_exists();
    }
    return table;
}
    TEST_FIXTURE(table_service_test_base, storage_extended_error_verify_json_with_details)
    {
        utility::string_t table_name = get_table_name();
        azure::storage::cloud_table_client client = get_table_client();
        azure::storage::cloud_table table = client.get_table_reference(table_name);

        azure::storage::table_request_options options;
        azure::storage::operation_context context;
        try
        {
            table.delete_table(options, context);
            CHECK(false);
        }
        catch (const azure::storage::storage_exception& e)
        {
            CHECK(e.result().extended_error().code().compare(U("ResourceNotFound")) == 0);
            CHECK(!e.result().extended_error().message().empty());
        }
    }
    TEST_FIXTURE(table_service_test_base, ListTabled_SharedKeyLite)
    {
        const int TABLE_COUNT = 5;
        azure::storage::cloud_table tables[TABLE_COUNT];
        for (int i = 0; i < TABLE_COUNT; ++i)
        {
            tables[i] = get_table();
        }

        azure::storage::cloud_table_client client = get_table_client();
        client.set_authentication_scheme(azure::storage::authentication_scheme::shared_key_lite);

        utility::string_t prefix = object_name_prefix;
        azure::storage::table_request_options options;
        azure::storage::operation_context context;
        std::vector<azure::storage::cloud_table> results = list_all_tables(client, prefix, options, context);
        CHECK(results.size() >= TABLE_COUNT);

        for (int i = 0; i < TABLE_COUNT; ++i)
        {
            tables[i].delete_table();
        }
    }
    TEST_FIXTURE(table_service_test_base, ListTables_Segmented)
    {
        const int TABLE_COUNT = 5;

        azure::storage::cloud_table tables[TABLE_COUNT];
        bool is_found[TABLE_COUNT];
        for (int i = 0; i < TABLE_COUNT; ++i)
        {
            tables[i] = get_table();
            is_found[i] = false;
        }

        azure::storage::cloud_table_client client = get_table_client();

        utility::string_t prefix;
        int max_results;
        azure::storage::continuation_token token;
        azure::storage::table_request_options options;
        azure::storage::operation_context context;

        prefix = object_name_prefix;
        max_results = 3;

        size_t segment_count = 0;
        azure::storage::table_result_segment result_segment;
        do
        {
            result_segment = client.list_tables_segmented(prefix, max_results, token, options, context);
            std::vector<azure::storage::cloud_table> results = result_segment.results();

            CHECK((int)results.size() <= max_results);

            for (std::vector<azure::storage::cloud_table>::const_iterator itr = results.cbegin(); itr != results.cend(); ++itr)
            {
                azure::storage::cloud_table table = *itr;

                for (int i = 0; i < TABLE_COUNT; ++i)
                {
                    if (table.name().compare(tables[i].name()) == 0)
                    {
                        CHECK(!table.service_client().base_uri().primary_uri().is_empty());
                        CHECK(table.service_client().credentials().is_shared_key());
                        CHECK(!table.name().empty());
                        CHECK(!table.uri().primary_uri().is_empty());

                        is_found[i] = true;
                    }
                }
            }

            CHECK(!context.client_request_id().empty());
            CHECK(context.start_time().is_initialized());
            CHECK(context.end_time().is_initialized());
            CHECK_EQUAL(segment_count + 1, context.request_results().size());
            CHECK(context.request_results()[segment_count].is_response_available());
            CHECK(context.request_results()[segment_count].start_time().is_initialized());
            CHECK(context.request_results()[segment_count].end_time().is_initialized());
            CHECK(context.request_results()[segment_count].target_location() != azure::storage::storage_location::unspecified);
            CHECK_EQUAL(web::http::status_codes::OK, context.request_results()[segment_count].http_status_code());
            CHECK(!context.request_results()[segment_count].service_request_id().empty());
            CHECK(context.request_results()[segment_count].request_date().is_initialized());
            CHECK(context.request_results()[segment_count].content_md5().empty());
            CHECK(context.request_results()[segment_count].etag().empty());
            CHECK(context.request_results()[segment_count].extended_error().code().empty());
            CHECK(context.request_results()[segment_count].extended_error().message().empty());
            CHECK(context.request_results()[segment_count].extended_error().details().empty());

            ++segment_count;
            token = result_segment.continuation_token();
        }
        while (!token.empty());

        CHECK(segment_count > 1);
        for (int i = 0; i < TABLE_COUNT; ++i)
        {
            CHECK(is_found[i]);
        }

        for (int i = 0; i < TABLE_COUNT; ++i)
        {
            tables[i].delete_table();
        }
    }
    TEST_FIXTURE(table_service_test_base, ListTables_Normal)
    {
        const int TABLE_COUNT = 5;

        azure::storage::cloud_table tables[TABLE_COUNT];
        bool is_found[TABLE_COUNT];
        for (int i = 0; i < TABLE_COUNT; ++i)
        {
            tables[i] = get_table();
            is_found[i] = false;
        }

        azure::storage::cloud_table_client client = get_table_client();

        utility::string_t prefix;
        azure::storage::table_request_options options;
        azure::storage::operation_context context;

        prefix = object_name_prefix;

        std::vector<azure::storage::cloud_table> results = list_all_tables(client, prefix, options, context);

        CHECK(results.size() >= TABLE_COUNT);

        for (std::vector<azure::storage::cloud_table>::const_iterator itr = results.cbegin(); itr != results.cend(); ++itr)
        {
            azure::storage::cloud_table table = *itr;

            for (int i = 0; i < TABLE_COUNT; ++i)
            {
                if (table.name().compare(tables[i].name()) == 0)
                {
                    CHECK(!table.service_client().base_uri().primary_uri().is_empty());
                    CHECK(table.service_client().credentials().is_shared_key());
                    CHECK(!table.name().empty());
                    CHECK(!table.uri().primary_uri().is_empty());

                    is_found[i] = true;
                }
            }
        }

        CHECK(!context.client_request_id().empty());
        CHECK(context.start_time().is_initialized());
        CHECK(context.end_time().is_initialized());
        CHECK_EQUAL(1U, context.request_results().size());
        CHECK(context.request_results()[0].is_response_available());
        CHECK(context.request_results()[0].start_time().is_initialized());
        CHECK(context.request_results()[0].end_time().is_initialized());
        CHECK(context.request_results()[0].target_location() != azure::storage::storage_location::unspecified);
        CHECK_EQUAL(web::http::status_codes::OK, context.request_results()[0].http_status_code());
        CHECK(!context.request_results()[0].service_request_id().empty());
        CHECK(context.request_results()[0].request_date().is_initialized());
        CHECK(context.request_results()[0].content_md5().empty());
        CHECK(context.request_results()[0].etag().empty());
        CHECK(context.request_results()[0].extended_error().code().empty());
        CHECK(context.request_results()[0].extended_error().message().empty());
        CHECK(context.request_results()[0].extended_error().details().empty());
        for (int i = 0; i < TABLE_COUNT; ++i)
        {
            CHECK(is_found[i]);
        }

        for (int i = 0; i < TABLE_COUNT; ++i)
        {
            tables[i].delete_table();
        }
    }