stuartpreston-azure-sdk-for-ruby 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +11 -11
- data/.travis.yml +10 -10
- data/ChangeLog.txt +70 -68
- data/Gemfile +15 -15
- data/README.md +618 -618
- data/Rakefile +133 -133
- data/azure.gemspec +44 -44
- data/lib/azure.rb +52 -52
- data/lib/azure/base_management/affinity_group.rb +32 -32
- data/lib/azure/base_management/base_management_service.rb +304 -304
- data/lib/azure/base_management/location.rb +27 -27
- data/lib/azure/base_management/management_http_request.rb +171 -171
- data/lib/azure/base_management/serialization.rb +129 -129
- data/lib/azure/base_management/sql_management_http_request.rb +45 -45
- data/lib/azure/blob/blob.rb +31 -31
- data/lib/azure/blob/blob_service.rb +1423 -1423
- data/lib/azure/blob/block.rb +30 -30
- data/lib/azure/blob/container.rb +31 -31
- data/lib/azure/blob/serialization.rb +284 -284
- data/lib/azure/cloud_service_management/cloud_service.rb +38 -38
- data/lib/azure/cloud_service_management/cloud_service_management_service.rb +140 -140
- data/lib/azure/cloud_service_management/serialization.rb +117 -117
- data/lib/azure/core.rb +39 -39
- data/lib/azure/core/auth/authorizer.rb +36 -36
- data/lib/azure/core/auth/shared_key.rb +110 -110
- data/lib/azure/core/auth/shared_key_lite.rb +48 -48
- data/lib/azure/core/auth/signer.rb +48 -48
- data/lib/azure/core/configuration.rb +211 -211
- data/lib/azure/core/error.rb +22 -22
- data/lib/azure/core/filtered_service.rb +43 -43
- data/lib/azure/core/http/debug_filter.rb +35 -35
- data/lib/azure/core/http/http_error.rb +88 -88
- data/lib/azure/core/http/http_filter.rb +52 -52
- data/lib/azure/core/http/http_request.rb +157 -157
- data/lib/azure/core/http/http_response.rb +140 -140
- data/lib/azure/core/http/retry_policy.rb +73 -73
- data/lib/azure/core/http/signer_filter.rb +33 -33
- data/lib/azure/core/service.rb +62 -62
- data/lib/azure/core/signed_service.rb +42 -42
- data/lib/azure/core/utility.rb +190 -190
- data/lib/azure/queue/message.rb +29 -29
- data/lib/azure/queue/queue.rb +28 -28
- data/lib/azure/queue/queue_service.rb +567 -567
- data/lib/azure/queue/serialization.rb +106 -106
- data/lib/azure/service/access_policy.rb +25 -25
- data/lib/azure/service/cors.rb +11 -11
- data/lib/azure/service/cors_rule.rb +15 -15
- data/lib/azure/service/enumeration_results.rb +20 -20
- data/lib/azure/service/logging.rb +31 -31
- data/lib/azure/service/metrics.rb +30 -30
- data/lib/azure/service/retention_policy.rb +24 -24
- data/lib/azure/service/serialization.rb +297 -297
- data/lib/azure/service/signed_identifier.rb +29 -29
- data/lib/azure/service/storage_service.rb +82 -82
- data/lib/azure/service/storage_service_properties.rb +37 -37
- data/lib/azure/service_bus/action.rb +21 -21
- data/lib/azure/service_bus/auth/wrap_service.rb +88 -88
- data/lib/azure/service_bus/auth/wrap_signer.rb +68 -68
- data/lib/azure/service_bus/brokered_message.rb +123 -123
- data/lib/azure/service_bus/brokered_message_serializer.rb +159 -159
- data/lib/azure/service_bus/correlation_filter.rb +45 -45
- data/lib/azure/service_bus/empty_rule_action.rb +29 -29
- data/lib/azure/service_bus/false_filter.rb +38 -38
- data/lib/azure/service_bus/filter.rb +21 -21
- data/lib/azure/service_bus/interval.rb +103 -103
- data/lib/azure/service_bus/queue.rb +229 -229
- data/lib/azure/service_bus/relay.rb +87 -87
- data/lib/azure/service_bus/resource.rb +108 -108
- data/lib/azure/service_bus/rule.rb +97 -97
- data/lib/azure/service_bus/rule_aspect.rb +34 -34
- data/lib/azure/service_bus/serialization.rb +161 -161
- data/lib/azure/service_bus/service_bus_service.rb +896 -896
- data/lib/azure/service_bus/sql_filter.rb +50 -50
- data/lib/azure/service_bus/sql_rule_action.rb +50 -50
- data/lib/azure/service_bus/subscription.rb +183 -183
- data/lib/azure/service_bus/topic.rb +186 -186
- data/lib/azure/service_bus/true_filter.rb +38 -38
- data/lib/azure/sql_database_management/serialization.rb +111 -111
- data/lib/azure/sql_database_management/sql_database.rb +31 -31
- data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -200
- data/lib/azure/storage_management/serialization.rb +184 -184
- data/lib/azure/storage_management/storage_account.rb +40 -40
- data/lib/azure/storage_management/storage_management_service.rb +166 -166
- data/lib/azure/table/auth/shared_key.rb +92 -92
- data/lib/azure/table/auth/shared_key_lite.rb +44 -44
- data/lib/azure/table/batch.rb +329 -329
- data/lib/azure/table/batch_response.rb +118 -118
- data/lib/azure/table/edmtype.rb +126 -126
- data/lib/azure/table/entity.rb +30 -30
- data/lib/azure/table/guid.rb +23 -23
- data/lib/azure/table/query.rb +111 -111
- data/lib/azure/table/serialization.rb +107 -107
- data/lib/azure/table/table_service.rb +559 -559
- data/lib/azure/version.rb +31 -31
- data/lib/azure/virtual_machine_image_management/serialization.rb +66 -66
- data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -25
- data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -25
- data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +94 -94
- data/lib/azure/virtual_machine_management/serialization.rb +462 -462
- data/lib/azure/virtual_machine_management/virtual_machine.rb +45 -45
- data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +588 -588
- data/lib/azure/virtual_network_management/serialization.rb +190 -190
- data/lib/azure/virtual_network_management/virtual_network.rb +37 -37
- data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -109
- data/test/fixtures/affinity_group.xml +33 -33
- data/test/fixtures/all_containers.xml +20 -20
- data/test/fixtures/all_tables.xml +22 -22
- data/test/fixtures/certificate.pem +21 -21
- data/test/fixtures/container_acl.xml +11 -11
- data/test/fixtures/create_sql_database_server.xml +1 -1
- data/test/fixtures/create_storage_desc_error.xml +5 -5
- data/test/fixtures/create_storage_extendedprop_error.xml +8 -8
- data/test/fixtures/create_storage_extendedpropname_error.xml +6 -6
- data/test/fixtures/create_storage_full_error.xml +6 -6
- data/test/fixtures/create_storage_label_error.xml +5 -5
- data/test/fixtures/create_storage_location_error.xml +5 -5
- data/test/fixtures/create_storage_name_error.xml +6 -6
- data/test/fixtures/create_table_response_entry.xml +15 -15
- data/test/fixtures/delete_storage_container_error.xml +5 -5
- data/test/fixtures/delete_storage_error.xml +5 -5
- data/test/fixtures/deployment_error.xml +5 -5
- data/test/fixtures/get_storage_account_error.xml +5 -5
- data/test/fixtures/get_storage_account_properties.xml +31 -31
- data/test/fixtures/get_storage_account_properties_new.xml +31 -31
- data/test/fixtures/http_error.xml +5 -5
- data/test/fixtures/insert_entity_response_entry.xml +25 -25
- data/test/fixtures/list_affinity_groups.xml +22 -22
- data/test/fixtures/list_blobs.xml +120 -120
- data/test/fixtures/list_block_all_with_none_committed.xml +21 -21
- data/test/fixtures/list_blocks_all.xml +22 -22
- data/test/fixtures/list_blocks_committed.xml +12 -12
- data/test/fixtures/list_cloud_services.xml +38 -38
- data/test/fixtures/list_containers.xml +37 -37
- data/test/fixtures/list_firewall_management_endpoint.xml +27 -27
- data/test/fixtures/list_images.xml +110 -110
- data/test/fixtures/list_locations.xml +62 -62
- data/test/fixtures/list_page_ranges.xml +10 -10
- data/test/fixtures/list_sql_database.xml +36 -36
- data/test/fixtures/list_sql_server_firewall.xml +23 -23
- data/test/fixtures/list_storage_account_single.xml +24 -24
- data/test/fixtures/list_storage_accounts.xml +45 -45
- data/test/fixtures/list_virtual_networks.xml +92 -92
- data/test/fixtures/logging.xml +11 -11
- data/test/fixtures/management_certificate.pem +55 -55
- data/test/fixtures/messages.xml +12 -12
- data/test/fixtures/metrics.xml +10 -10
- data/test/fixtures/privatekey.key +28 -28
- data/test/fixtures/query_entities_empty_response.xml +7 -7
- data/test/fixtures/query_entities_response.xml +45 -45
- data/test/fixtures/queue_service_properties.xml +22 -22
- data/test/fixtures/queue_service_properties_original.xml +19 -19
- data/test/fixtures/queues.xml +16 -16
- data/test/fixtures/retention_policy.xml +5 -5
- data/test/fixtures/sb_default_create_queue_response.xml +23 -23
- data/test/fixtures/sb_default_create_relay_response.xml +15 -15
- data/test/fixtures/sb_default_create_topic_response.xml +18 -18
- data/test/fixtures/sb_get_access_token_response.txt +1 -1
- data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -9
- data/test/fixtures/storage_service_properties.xml +54 -54
- data/test/fixtures/update_storage_account.xml +16 -16
- data/test/fixtures/update_storage_error.xml +4 -4
- data/test/fixtures/updated_storage_accounts.xml +52 -52
- data/test/fixtures/virtual_machine.xml +113 -113
- data/test/fixtures/windows_virtual_machine.xml +106 -106
- data/test/integration/affinity_group/Affinity_test.rb +55 -55
- data/test/integration/affinity_group/Create_Affinity_test.rb +63 -63
- data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -56
- data/test/integration/affinity_group/List_Affinity_test.rb +41 -41
- data/test/integration/affinity_group/Update_Affinity_test.rb +82 -82
- data/test/integration/blob/blob_gb18030_test.rb +199 -199
- data/test/integration/blob/blob_metadata_test.rb +75 -75
- data/test/integration/blob/blob_pages_test.rb +119 -119
- data/test/integration/blob/blob_properties_test.rb +77 -77
- data/test/integration/blob/block_blob_test.rb +254 -254
- data/test/integration/blob/container/container_acl_test.rb +69 -69
- data/test/integration/blob/container/container_metadata_test.rb +50 -50
- data/test/integration/blob/container/create_container_test.rb +60 -60
- data/test/integration/blob/container/delete_container_test.rb +39 -39
- data/test/integration/blob/container/get_container_properties_test.rb +48 -48
- data/test/integration/blob/container/list_containers_test.rb +79 -79
- data/test/integration/blob/container/root_container_test.rb +53 -53
- data/test/integration/blob/copy_blob_test.rb +113 -113
- data/test/integration/blob/create_blob_snapshot_test.rb +80 -80
- data/test/integration/blob/create_page_blob_test.rb +83 -83
- data/test/integration/blob/delete_blob_test.rb +159 -159
- data/test/integration/blob/get_blob_test.rb +65 -65
- data/test/integration/blob/informative_errors_test.rb +38 -38
- data/test/integration/blob/lease/acquire_lease_test.rb +36 -36
- data/test/integration/blob/lease/break_lease_test.rb +40 -40
- data/test/integration/blob/lease/release_lease_test.rb +40 -40
- data/test/integration/blob/lease/renew_lease_test.rb +42 -42
- data/test/integration/blob/list_blobs_test.rb +113 -113
- data/test/integration/cloud_service/Cloud_Create_test.rb +44 -44
- data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -44
- data/test/integration/database/create_sql_server_firewall_test.rb +86 -86
- data/test/integration/database/create_sql_server_test.rb +53 -53
- data/test/integration/database/delete_sql_server_firewall_test.rb +70 -70
- data/test/integration/database/delete_sql_server_test.rb +58 -58
- data/test/integration/database/list_sql_server_firewall_test.rb +45 -45
- data/test/integration/database/list_sql_servers_test.rb +44 -44
- data/test/integration/database/reset_password_sql_server_test.rb +55 -55
- data/test/integration/location/Location_List_test.rb +39 -39
- data/test/integration/queue/clear_messages_test.rb +42 -42
- data/test/integration/queue/create_message_test.rb +75 -75
- data/test/integration/queue/create_queue_test.rb +50 -50
- data/test/integration/queue/delete_message_test.rb +67 -67
- data/test/integration/queue/delete_queue_test.rb +45 -45
- data/test/integration/queue/informative_errors_test.rb +41 -41
- data/test/integration/queue/list_messages_encoded_test.rb +79 -79
- data/test/integration/queue/list_messages_test.rb +79 -79
- data/test/integration/queue/list_queues_test.rb +44 -44
- data/test/integration/queue/peek_messages_test.rb +59 -59
- data/test/integration/queue/queue_gb18030_test.rb +131 -131
- data/test/integration/queue/queue_metadata_test.rb +40 -40
- data/test/integration/queue/update_message_test.rb +74 -74
- data/test/integration/service_bus/informative_errors_test.rb +36 -36
- data/test/integration/service_bus/queues_scenario_test.rb +200 -200
- data/test/integration/service_bus/queues_test.rb +265 -265
- data/test/integration/service_bus/relay_test.rb +131 -131
- data/test/integration/service_bus/rules_test.rb +144 -144
- data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -182
- data/test/integration/service_bus/scenario_test.rb +101 -101
- data/test/integration/service_bus/subscriptions_test.rb +211 -211
- data/test/integration/service_bus/topics_scenario_test.rb +406 -406
- data/test/integration/service_bus/topics_test.rb +129 -129
- data/test/integration/storage_management/storage_management_test.rb +160 -160
- data/test/integration/table/create_table_test.rb +35 -35
- data/test/integration/table/delete_entity_batch_test.rb +106 -106
- data/test/integration/table/delete_entity_test.rb +93 -93
- data/test/integration/table/delete_table_test.rb +39 -39
- data/test/integration/table/get_table_test.rb +36 -36
- data/test/integration/table/informative_errors_test.rb +38 -38
- data/test/integration/table/insert_entity_batch_test.rb +99 -99
- data/test/integration/table/insert_entity_test.rb +87 -87
- data/test/integration/table/insert_or_merge_entity_batch_test.rb +158 -158
- data/test/integration/table/insert_or_merge_entity_test.rb +142 -142
- data/test/integration/table/insert_or_replace_entity_batch_test.rb +151 -151
- data/test/integration/table/insert_or_replace_entity_test.rb +136 -136
- data/test/integration/table/merge_entity_batch_test.rb +127 -127
- data/test/integration/table/merge_entity_test.rb +112 -112
- data/test/integration/table/query_entities_test.rb +194 -194
- data/test/integration/table/query_tables_test.rb +42 -42
- data/test/integration/table/query_test.rb +250 -250
- data/test/integration/table/table_acl_test.rb +51 -51
- data/test/integration/table/table_gb18030_test.rb +355 -355
- data/test/integration/table/update_entity_batch_test.rb +148 -148
- data/test/integration/table/update_entity_test.rb +130 -130
- data/test/integration/test_helper.rb +42 -42
- data/test/integration/vm/VM_Create_test.rb +260 -260
- data/test/integration/vm/VM_Delete_test.rb +55 -55
- data/test/integration/vm/VM_Operations_test.rb +173 -173
- data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -37
- data/test/integration/vm_image/virtual_machine_image_test.rb +36 -36
- data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -122
- data/test/integration/vnet/Virtual_Network_list_test.rb +53 -53
- data/test/support/env.rb +19 -19
- data/test/support/fixtures.rb +36 -36
- data/test/support/name_generator.rb +168 -168
- data/test/support/stubs.rb +42 -42
- data/test/support/virtual_machine_name_generator.rb +102 -102
- data/test/support/virtual_network_helper.rb +73 -73
- data/test/test_helper.rb +53 -53
- data/test/unit/affinity_group/affinity_group_test.rb +192 -192
- data/test/unit/affinity_group/serialization_test.rb +88 -88
- data/test/unit/base_management/location_test.rb +57 -57
- data/test/unit/blob/blob_service_test.rb +1946 -1946
- data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -94
- data/test/unit/cloud_service_management/serialization_test.rb +169 -169
- data/test/unit/core/auth/shared_key_lite_test.rb +51 -51
- data/test/unit/core/auth/shared_key_test.rb +58 -58
- data/test/unit/core/auth/signer_test.rb +30 -30
- data/test/unit/core/http/http_error_test.rb +57 -57
- data/test/unit/core/http/http_request_test.rb +66 -66
- data/test/unit/core/http/http_response_test.rb +45 -45
- data/test/unit/core/http/retry_policy_test.rb +23 -23
- data/test/unit/database/serialization_test.rb +97 -97
- data/test/unit/database/sql_database_server_service_test.rb +288 -288
- data/test/unit/service/serialization_test.rb +532 -532
- data/test/unit/service/storage_service_test.rb +292 -292
- data/test/unit/storage_management/serialization_test.rb +232 -232
- data/test/unit/storage_management/storage_management_service_test.rb +261 -261
- data/test/unit/table/edmtype_test.rb +107 -107
- data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -35
- data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -65
- data/test/unit/virtual_machine_management/serialization_test.rb +258 -258
- data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -440
- data/test/unit/vnet/serialization_test.rb +187 -187
- data/test/unit/vnet/virtual_network_management_service_test.rb +131 -131
- metadata +34 -27
@@ -1,40 +1,40 @@
|
|
1
|
-
#-------------------------------------------------------------------------
|
2
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
#--------------------------------------------------------------------------
|
15
|
-
require "integration/test_helper"
|
16
|
-
require "azure/queue/queue_service"
|
17
|
-
|
18
|
-
describe Azure::Queue::QueueService do
|
19
|
-
subject { Azure::Queue::QueueService.new }
|
20
|
-
describe '#set/get_queue_metadata' do
|
21
|
-
let(:queue_name){ QueueNameHelper.name }
|
22
|
-
before {
|
23
|
-
subject.create_queue queue_name
|
24
|
-
subject.create_message queue_name, "some random text " + QueueNameHelper.name
|
25
|
-
}
|
26
|
-
after { QueueNameHelper.clean }
|
27
|
-
|
28
|
-
it 'can set and retrieve queue metadata' do
|
29
|
-
result = subject.set_queue_metadata queue_name, {"CustomMetadataProperty" => "Custom Metadata Value"}
|
30
|
-
result.must_be_nil
|
31
|
-
|
32
|
-
message_count, metadata = subject.get_queue_metadata queue_name
|
33
|
-
message_count.must_equal 1
|
34
|
-
|
35
|
-
# note: case insensitive! even though it was sent in mixed case, it will be returned in downcase
|
36
|
-
metadata.must_include "custommetadataproperty"
|
37
|
-
metadata["custommetadataproperty"].must_equal "Custom Metadata Value"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
#--------------------------------------------------------------------------
|
15
|
+
require "integration/test_helper"
|
16
|
+
require "azure/queue/queue_service"
|
17
|
+
|
18
|
+
describe Azure::Queue::QueueService do
|
19
|
+
subject { Azure::Queue::QueueService.new }
|
20
|
+
describe '#set/get_queue_metadata' do
|
21
|
+
let(:queue_name){ QueueNameHelper.name }
|
22
|
+
before {
|
23
|
+
subject.create_queue queue_name
|
24
|
+
subject.create_message queue_name, "some random text " + QueueNameHelper.name
|
25
|
+
}
|
26
|
+
after { QueueNameHelper.clean }
|
27
|
+
|
28
|
+
it 'can set and retrieve queue metadata' do
|
29
|
+
result = subject.set_queue_metadata queue_name, {"CustomMetadataProperty" => "Custom Metadata Value"}
|
30
|
+
result.must_be_nil
|
31
|
+
|
32
|
+
message_count, metadata = subject.get_queue_metadata queue_name
|
33
|
+
message_count.must_equal 1
|
34
|
+
|
35
|
+
# note: case insensitive! even though it was sent in mixed case, it will be returned in downcase
|
36
|
+
metadata.must_include "custommetadataproperty"
|
37
|
+
metadata["custommetadataproperty"].must_equal "Custom Metadata Value"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -1,74 +1,74 @@
|
|
1
|
-
#-------------------------------------------------------------------------
|
2
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
#--------------------------------------------------------------------------
|
15
|
-
require "integration/test_helper"
|
16
|
-
require "azure/queue/queue_service"
|
17
|
-
require 'azure/core/http/http_error'
|
18
|
-
|
19
|
-
describe Azure::Queue::QueueService do
|
20
|
-
subject { Azure::Queue::QueueService.new }
|
21
|
-
|
22
|
-
describe '#update_message' do
|
23
|
-
let(:queue_name){ QueueNameHelper.name }
|
24
|
-
let(:message_text){ "some random text " + QueueNameHelper.name }
|
25
|
-
let(:new_message_text){ "this is new text!!" }
|
26
|
-
before {
|
27
|
-
subject.create_queue queue_name
|
28
|
-
subject.create_message queue_name, message_text
|
29
|
-
}
|
30
|
-
after { QueueNameHelper.clean }
|
31
|
-
|
32
|
-
it "updates a message" do
|
33
|
-
messages = subject.list_messages queue_name, 500
|
34
|
-
messages.length.must_equal 1
|
35
|
-
message = messages.first
|
36
|
-
message.message_text.must_equal message_text
|
37
|
-
|
38
|
-
pop_receipt, time_next_visible = subject.update_message queue_name, message.id, message.pop_receipt, new_message_text, 0
|
39
|
-
|
40
|
-
result = subject.peek_messages queue_name
|
41
|
-
result.wont_be_empty
|
42
|
-
|
43
|
-
message2 = result[0]
|
44
|
-
message2.id.must_equal message.id
|
45
|
-
message2.message_text.must_equal new_message_text
|
46
|
-
end
|
47
|
-
|
48
|
-
it "errors on an non-existent queue" do
|
49
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
50
|
-
subject.update_message QueueNameHelper.name, "message.id", "message.pop_receipt", new_message_text, 0
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
it "errors on an non-existent message id" do
|
55
|
-
messages = subject.list_messages queue_name, 500
|
56
|
-
messages.length.must_equal 1
|
57
|
-
message = messages.first
|
58
|
-
|
59
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
60
|
-
subject.update_message queue_name, "bad.message.id", message.pop_receipt, new_message_text, 0
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
it "errors on an non-existent pop_receipt" do
|
65
|
-
messages = subject.list_messages queue_name, 500
|
66
|
-
messages.length.must_equal 1
|
67
|
-
message = messages.first
|
68
|
-
|
69
|
-
assert_raises(Azure::Core::Http::HTTPError) do
|
70
|
-
subject.update_message queue_name, message.id, "bad.message.pop_receipt", new_message_text, 0
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
#--------------------------------------------------------------------------
|
15
|
+
require "integration/test_helper"
|
16
|
+
require "azure/queue/queue_service"
|
17
|
+
require 'azure/core/http/http_error'
|
18
|
+
|
19
|
+
describe Azure::Queue::QueueService do
|
20
|
+
subject { Azure::Queue::QueueService.new }
|
21
|
+
|
22
|
+
describe '#update_message' do
|
23
|
+
let(:queue_name){ QueueNameHelper.name }
|
24
|
+
let(:message_text){ "some random text " + QueueNameHelper.name }
|
25
|
+
let(:new_message_text){ "this is new text!!" }
|
26
|
+
before {
|
27
|
+
subject.create_queue queue_name
|
28
|
+
subject.create_message queue_name, message_text
|
29
|
+
}
|
30
|
+
after { QueueNameHelper.clean }
|
31
|
+
|
32
|
+
it "updates a message" do
|
33
|
+
messages = subject.list_messages queue_name, 500
|
34
|
+
messages.length.must_equal 1
|
35
|
+
message = messages.first
|
36
|
+
message.message_text.must_equal message_text
|
37
|
+
|
38
|
+
pop_receipt, time_next_visible = subject.update_message queue_name, message.id, message.pop_receipt, new_message_text, 0
|
39
|
+
|
40
|
+
result = subject.peek_messages queue_name
|
41
|
+
result.wont_be_empty
|
42
|
+
|
43
|
+
message2 = result[0]
|
44
|
+
message2.id.must_equal message.id
|
45
|
+
message2.message_text.must_equal new_message_text
|
46
|
+
end
|
47
|
+
|
48
|
+
it "errors on an non-existent queue" do
|
49
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
50
|
+
subject.update_message QueueNameHelper.name, "message.id", "message.pop_receipt", new_message_text, 0
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
it "errors on an non-existent message id" do
|
55
|
+
messages = subject.list_messages queue_name, 500
|
56
|
+
messages.length.must_equal 1
|
57
|
+
message = messages.first
|
58
|
+
|
59
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
60
|
+
subject.update_message queue_name, "bad.message.id", message.pop_receipt, new_message_text, 0
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it "errors on an non-existent pop_receipt" do
|
65
|
+
messages = subject.list_messages queue_name, 500
|
66
|
+
messages.length.must_equal 1
|
67
|
+
message = messages.first
|
68
|
+
|
69
|
+
assert_raises(Azure::Core::Http::HTTPError) do
|
70
|
+
subject.update_message queue_name, message.id, "bad.message.pop_receipt", new_message_text, 0
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -1,37 +1,37 @@
|
|
1
|
-
#-------------------------------------------------------------------------
|
2
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
#--------------------------------------------------------------------------
|
15
|
-
require "integration/test_helper"
|
16
|
-
require "azure/blob/blob_service"
|
17
|
-
require "azure/core/http/http_error"
|
18
|
-
|
19
|
-
describe "ServiceBus errors" do
|
20
|
-
subject { Azure::ServiceBus::ServiceBusService.new }
|
21
|
-
after { ServiceBusTopicNameHelper.clean }
|
22
|
-
let(:topic){ ServiceBusTopicNameHelper.name }
|
23
|
-
|
24
|
-
it "exception message should be valid" do
|
25
|
-
subject.create_topic topic
|
26
|
-
|
27
|
-
# creating the same topic again should throw
|
28
|
-
begin
|
29
|
-
subject.create_topic topic
|
30
|
-
flunk "No exception"
|
31
|
-
rescue Azure::Core::Http::HTTPError => error
|
32
|
-
error.status_code.must_equal 409
|
33
|
-
error.type.must_equal "409"
|
34
|
-
error.detail.wont_be_nil
|
35
|
-
end
|
36
|
-
end
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
#--------------------------------------------------------------------------
|
15
|
+
require "integration/test_helper"
|
16
|
+
require "azure/blob/blob_service"
|
17
|
+
require "azure/core/http/http_error"
|
18
|
+
|
19
|
+
describe "ServiceBus errors" do
|
20
|
+
subject { Azure::ServiceBus::ServiceBusService.new }
|
21
|
+
after { ServiceBusTopicNameHelper.clean }
|
22
|
+
let(:topic){ ServiceBusTopicNameHelper.name }
|
23
|
+
|
24
|
+
it "exception message should be valid" do
|
25
|
+
subject.create_topic topic
|
26
|
+
|
27
|
+
# creating the same topic again should throw
|
28
|
+
begin
|
29
|
+
subject.create_topic topic
|
30
|
+
flunk "No exception"
|
31
|
+
rescue Azure::Core::Http::HTTPError => error
|
32
|
+
error.status_code.must_equal 409
|
33
|
+
error.type.must_equal "409"
|
34
|
+
error.detail.wont_be_nil
|
35
|
+
end
|
36
|
+
end
|
37
37
|
end
|
@@ -1,200 +1,200 @@
|
|
1
|
-
#-------------------------------------------------------------------------
|
2
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
#--------------------------------------------------------------------------
|
15
|
-
require "integration/test_helper"
|
16
|
-
|
17
|
-
describe "ServiceBus Queues Scenario" do
|
18
|
-
let(:queue_name) { ServiceBusQueueNameHelper.name }
|
19
|
-
|
20
|
-
subject { Azure::ServiceBus::ServiceBusService.new }
|
21
|
-
after { ServiceBusQueueNameHelper.clean }
|
22
|
-
|
23
|
-
def setup_queue()
|
24
|
-
queues = subject.list_queues({ :skip => 20, :top => 2 })
|
25
|
-
queues.each { |q|
|
26
|
-
ScenarioHelper.out "Queue name is " + q.name
|
27
|
-
}
|
28
|
-
|
29
|
-
ScenarioHelper.out "checking if queue already exists " + queue_name
|
30
|
-
begin
|
31
|
-
subject.get_queue queue_name
|
32
|
-
ScenarioHelper.out "Queue already exists deleting it"
|
33
|
-
subject.delete_queue queue_name
|
34
|
-
rescue Azure::Core::Http::HTTPError => error
|
35
|
-
ScenarioHelper.out "could not get an existing queue (" + error.type + "), proceeding..."
|
36
|
-
error.status_code.must_equal 404
|
37
|
-
error.type.must_equal "ResourceNotFound"
|
38
|
-
end
|
39
|
-
|
40
|
-
q = Azure::ServiceBus::Queue.new(queue_name, {
|
41
|
-
:max_size_in_megabytes => 2048,
|
42
|
-
:requires_duplicate_detection => true,
|
43
|
-
:enable_batched_operations => true,
|
44
|
-
:max_delivery_count => 13
|
45
|
-
})
|
46
|
-
|
47
|
-
ScenarioHelper.out 'Creating queue ' + queue_name
|
48
|
-
q2 = subject.create_queue q
|
49
|
-
q2.max_size_in_megabytes.must_equal q.max_size_in_megabytes
|
50
|
-
q2.requires_duplicate_detection.must_equal q.requires_duplicate_detection
|
51
|
-
q2.enable_batched_operations.must_equal true
|
52
|
-
q2.max_delivery_count.must_equal 13
|
53
|
-
|
54
|
-
subject.get_queue queue_name
|
55
|
-
end
|
56
|
-
|
57
|
-
def send_messages()
|
58
|
-
expected_messages = []
|
59
|
-
expected_messages[0] = ScenarioHelper.create_issue_message '1', 'First message information', 'label1'
|
60
|
-
expected_messages[1] = ScenarioHelper.create_issue_message '2', 'Second message information', 'label2'
|
61
|
-
expected_messages[2] = ScenarioHelper.create_issue_message '3', 'Third message information', 'label3'
|
62
|
-
expected_messages[3] = ScenarioHelper.create_issue_message '4', 'Fourth message information', 'label4'
|
63
|
-
expected_messages.each { |message|
|
64
|
-
success = false
|
65
|
-
retry_counter = 0
|
66
|
-
while !success
|
67
|
-
begin
|
68
|
-
subject.send_queue_message queue_name, message
|
69
|
-
success = true
|
70
|
-
rescue Azure::Core::Http::HTTPError => error
|
71
|
-
ScenarioHelper.out "got error: " + error
|
72
|
-
retry_counter = retry_counter + 1
|
73
|
-
if retry_counter > 5
|
74
|
-
throw error
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
ScenarioHelper.out 'Message sent with id: ' + message.message_id + ' Body of $message ' + message.body
|
79
|
-
}
|
80
|
-
expected_messages
|
81
|
-
end
|
82
|
-
|
83
|
-
def get_message_from_queue(expected_messages, exp_custom_props = nil)
|
84
|
-
expected_count = expected_messages.length
|
85
|
-
if exp_custom_props == nil
|
86
|
-
exp_custom_props = []
|
87
|
-
for i in 1..expected_count
|
88
|
-
exp_custom_props[i-1] = nil
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
ScenarioHelper.out '=============================================='
|
93
|
-
ScenarioHelper.out 'Getting messages from ' +
|
94
|
-
'queue ' + queue_name +
|
95
|
-
', expecting ' + expected_count.to_s + ' messages'
|
96
|
-
|
97
|
-
message_count = (subject.get_queue queue_name).message_count
|
98
|
-
ScenarioHelper.out 'Before getting any messages, Message count: ' + message_count.to_s
|
99
|
-
message_count.must_equal expected_count
|
100
|
-
|
101
|
-
# Peek the first message
|
102
|
-
message1 = subject.peek_lock_queue_message queue_name, { :timeout => 20 }
|
103
|
-
ScenarioHelper.compare_messages expected_messages[0], message1, exp_custom_props[0]
|
104
|
-
|
105
|
-
message_count = (subject.get_queue queue_name).message_count
|
106
|
-
ScenarioHelper.out 'Peek locked first message, Message count: ' + message_count.to_s
|
107
|
-
message_count.must_equal expected_count # Peek locked first message, count should not change
|
108
|
-
|
109
|
-
# Get the second message
|
110
|
-
message2 = subject.read_delete_queue_message queue_name, { :timeout => 5 }
|
111
|
-
expected_count = expected_count - 1
|
112
|
-
ScenarioHelper.compare_messages expected_messages[1], message2, exp_custom_props[1]
|
113
|
-
|
114
|
-
message_count = (subject.get_queue queue_name).message_count
|
115
|
-
ScenarioHelper.out 'RECEIVE_AND_DELETE second message, Message count: ' + message_count.to_s
|
116
|
-
message_count.must_equal expected_count # RECEIVE_AND_DELETE second message, count decrements
|
117
|
-
|
118
|
-
# Unlock and get the first message
|
119
|
-
subject.unlock_queue_message message1
|
120
|
-
|
121
|
-
message_count = (subject.get_queue queue_name).message_count
|
122
|
-
ScenarioHelper.out 'Unlocked first message, Message count: ' + message_count.to_s
|
123
|
-
message_count.must_equal expected_count # Unlocked first message, count stays the same
|
124
|
-
|
125
|
-
# Get the first unlocked message
|
126
|
-
message1again = subject.read_delete_queue_message queue_name
|
127
|
-
expected_count = expected_count - 1
|
128
|
-
# Should be the original, now that it is unlocked
|
129
|
-
ScenarioHelper.compare_messages expected_messages[0], message1again, exp_custom_props[0]
|
130
|
-
|
131
|
-
message_count = (subject.get_queue queue_name).message_count
|
132
|
-
ScenarioHelper.out 'got first message again, Message count: ' + message_count.to_s
|
133
|
-
message_count.must_equal expected_count # Got message one again (destructive), count should decrease
|
134
|
-
|
135
|
-
# Negative test, make sure unlocked messages cannot be deleted.
|
136
|
-
begin
|
137
|
-
subject.delete_queue_message message1again
|
138
|
-
flunk 'Deleting a RECEIVEANDDELETE messasge should fail'
|
139
|
-
rescue Azure::Core::Http::HTTPError => error
|
140
|
-
ScenarioHelper.out "As expected, could not delete a deleted message"
|
141
|
-
error.status_code.must_equal 400
|
142
|
-
error.type.must_equal "Unknown"
|
143
|
-
end
|
144
|
-
|
145
|
-
if expected_count > 0
|
146
|
-
# Get the third
|
147
|
-
message3 = subject.peek_lock_queue_message queue_name
|
148
|
-
ScenarioHelper.compare_messages expected_messages[2], message3, exp_custom_props[2]
|
149
|
-
|
150
|
-
message_count = (subject.get_queue queue_name).message_count
|
151
|
-
ScenarioHelper.out 'Got third message, Message count: ' + message_count.to_s
|
152
|
-
message_count.must_equal expected_count # Peeked third message, count should not change
|
153
|
-
|
154
|
-
# Delete it
|
155
|
-
subject.delete_queue_message message3.location
|
156
|
-
expected_count = expected_count - 1
|
157
|
-
|
158
|
-
message_count = (subject.get_queue queue_name).message_count
|
159
|
-
ScenarioHelper.out 'Deleted third message, Message count: ' + message_count.to_s
|
160
|
-
message_count.must_equal expected_count # Deleted third message, count decrements
|
161
|
-
end
|
162
|
-
|
163
|
-
if expected_count > 0
|
164
|
-
# Get the fourth
|
165
|
-
message4 = subject.read_delete_queue_message queue_name
|
166
|
-
expected_count = expected_count - 1
|
167
|
-
ScenarioHelper.compare_messages expected_messages[3], message4, exp_custom_props[3]
|
168
|
-
|
169
|
-
message_count = (subject.get_queue queue_name).message_count
|
170
|
-
ScenarioHelper.out 'Got fourth message, Message count: ' + message_count.to_s
|
171
|
-
message_count.must_equal expected_count # Got fourth message, count decrements
|
172
|
-
end
|
173
|
-
|
174
|
-
# Get the rest of the messages
|
175
|
-
message_id = 4
|
176
|
-
while expected_count > 0 && message_count > 0
|
177
|
-
message = subject.read_delete_queue_message queue_name
|
178
|
-
expected_count = expected_count - 1
|
179
|
-
ScenarioHelper.compare_messages expected_messages[message_id], message, exp_custom_props[message_id]
|
180
|
-
|
181
|
-
message_count = (subject.get_queue queue_name).message_count
|
182
|
-
ScenarioHelper.out 'Got message #' + message_id.to_s + ' message, Message count: ' + message_count.to_s
|
183
|
-
message_count.must_equal expected_count
|
184
|
-
message_id = message_id + 1
|
185
|
-
end
|
186
|
-
|
187
|
-
message_count = (subject.get_queue queue_name).message_count
|
188
|
-
ScenarioHelper.out 'Got all messages, Message count: ' + message_count.to_s
|
189
|
-
message_count.must_equal 0
|
190
|
-
end
|
191
|
-
|
192
|
-
it "should be able to upload many messages and read them back" do
|
193
|
-
|
194
|
-
setup_queue
|
195
|
-
|
196
|
-
messages = send_messages
|
197
|
-
|
198
|
-
get_message_from_queue messages
|
199
|
-
end
|
200
|
-
end
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
#--------------------------------------------------------------------------
|
15
|
+
require "integration/test_helper"
|
16
|
+
|
17
|
+
describe "ServiceBus Queues Scenario" do
|
18
|
+
let(:queue_name) { ServiceBusQueueNameHelper.name }
|
19
|
+
|
20
|
+
subject { Azure::ServiceBus::ServiceBusService.new }
|
21
|
+
after { ServiceBusQueueNameHelper.clean }
|
22
|
+
|
23
|
+
def setup_queue()
|
24
|
+
queues = subject.list_queues({ :skip => 20, :top => 2 })
|
25
|
+
queues.each { |q|
|
26
|
+
ScenarioHelper.out "Queue name is " + q.name
|
27
|
+
}
|
28
|
+
|
29
|
+
ScenarioHelper.out "checking if queue already exists " + queue_name
|
30
|
+
begin
|
31
|
+
subject.get_queue queue_name
|
32
|
+
ScenarioHelper.out "Queue already exists deleting it"
|
33
|
+
subject.delete_queue queue_name
|
34
|
+
rescue Azure::Core::Http::HTTPError => error
|
35
|
+
ScenarioHelper.out "could not get an existing queue (" + error.type + "), proceeding..."
|
36
|
+
error.status_code.must_equal 404
|
37
|
+
error.type.must_equal "ResourceNotFound"
|
38
|
+
end
|
39
|
+
|
40
|
+
q = Azure::ServiceBus::Queue.new(queue_name, {
|
41
|
+
:max_size_in_megabytes => 2048,
|
42
|
+
:requires_duplicate_detection => true,
|
43
|
+
:enable_batched_operations => true,
|
44
|
+
:max_delivery_count => 13
|
45
|
+
})
|
46
|
+
|
47
|
+
ScenarioHelper.out 'Creating queue ' + queue_name
|
48
|
+
q2 = subject.create_queue q
|
49
|
+
q2.max_size_in_megabytes.must_equal q.max_size_in_megabytes
|
50
|
+
q2.requires_duplicate_detection.must_equal q.requires_duplicate_detection
|
51
|
+
q2.enable_batched_operations.must_equal true
|
52
|
+
q2.max_delivery_count.must_equal 13
|
53
|
+
|
54
|
+
subject.get_queue queue_name
|
55
|
+
end
|
56
|
+
|
57
|
+
def send_messages()
|
58
|
+
expected_messages = []
|
59
|
+
expected_messages[0] = ScenarioHelper.create_issue_message '1', 'First message information', 'label1'
|
60
|
+
expected_messages[1] = ScenarioHelper.create_issue_message '2', 'Second message information', 'label2'
|
61
|
+
expected_messages[2] = ScenarioHelper.create_issue_message '3', 'Third message information', 'label3'
|
62
|
+
expected_messages[3] = ScenarioHelper.create_issue_message '4', 'Fourth message information', 'label4'
|
63
|
+
expected_messages.each { |message|
|
64
|
+
success = false
|
65
|
+
retry_counter = 0
|
66
|
+
while !success
|
67
|
+
begin
|
68
|
+
subject.send_queue_message queue_name, message
|
69
|
+
success = true
|
70
|
+
rescue Azure::Core::Http::HTTPError => error
|
71
|
+
ScenarioHelper.out "got error: " + error
|
72
|
+
retry_counter = retry_counter + 1
|
73
|
+
if retry_counter > 5
|
74
|
+
throw error
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
ScenarioHelper.out 'Message sent with id: ' + message.message_id + ' Body of $message ' + message.body
|
79
|
+
}
|
80
|
+
expected_messages
|
81
|
+
end
|
82
|
+
|
83
|
+
def get_message_from_queue(expected_messages, exp_custom_props = nil)
|
84
|
+
expected_count = expected_messages.length
|
85
|
+
if exp_custom_props == nil
|
86
|
+
exp_custom_props = []
|
87
|
+
for i in 1..expected_count
|
88
|
+
exp_custom_props[i-1] = nil
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
ScenarioHelper.out '=============================================='
|
93
|
+
ScenarioHelper.out 'Getting messages from ' +
|
94
|
+
'queue ' + queue_name +
|
95
|
+
', expecting ' + expected_count.to_s + ' messages'
|
96
|
+
|
97
|
+
message_count = (subject.get_queue queue_name).message_count
|
98
|
+
ScenarioHelper.out 'Before getting any messages, Message count: ' + message_count.to_s
|
99
|
+
message_count.must_equal expected_count
|
100
|
+
|
101
|
+
# Peek the first message
|
102
|
+
message1 = subject.peek_lock_queue_message queue_name, { :timeout => 20 }
|
103
|
+
ScenarioHelper.compare_messages expected_messages[0], message1, exp_custom_props[0]
|
104
|
+
|
105
|
+
message_count = (subject.get_queue queue_name).message_count
|
106
|
+
ScenarioHelper.out 'Peek locked first message, Message count: ' + message_count.to_s
|
107
|
+
message_count.must_equal expected_count # Peek locked first message, count should not change
|
108
|
+
|
109
|
+
# Get the second message
|
110
|
+
message2 = subject.read_delete_queue_message queue_name, { :timeout => 5 }
|
111
|
+
expected_count = expected_count - 1
|
112
|
+
ScenarioHelper.compare_messages expected_messages[1], message2, exp_custom_props[1]
|
113
|
+
|
114
|
+
message_count = (subject.get_queue queue_name).message_count
|
115
|
+
ScenarioHelper.out 'RECEIVE_AND_DELETE second message, Message count: ' + message_count.to_s
|
116
|
+
message_count.must_equal expected_count # RECEIVE_AND_DELETE second message, count decrements
|
117
|
+
|
118
|
+
# Unlock and get the first message
|
119
|
+
subject.unlock_queue_message message1
|
120
|
+
|
121
|
+
message_count = (subject.get_queue queue_name).message_count
|
122
|
+
ScenarioHelper.out 'Unlocked first message, Message count: ' + message_count.to_s
|
123
|
+
message_count.must_equal expected_count # Unlocked first message, count stays the same
|
124
|
+
|
125
|
+
# Get the first unlocked message
|
126
|
+
message1again = subject.read_delete_queue_message queue_name
|
127
|
+
expected_count = expected_count - 1
|
128
|
+
# Should be the original, now that it is unlocked
|
129
|
+
ScenarioHelper.compare_messages expected_messages[0], message1again, exp_custom_props[0]
|
130
|
+
|
131
|
+
message_count = (subject.get_queue queue_name).message_count
|
132
|
+
ScenarioHelper.out 'got first message again, Message count: ' + message_count.to_s
|
133
|
+
message_count.must_equal expected_count # Got message one again (destructive), count should decrease
|
134
|
+
|
135
|
+
# Negative test, make sure unlocked messages cannot be deleted.
|
136
|
+
begin
|
137
|
+
subject.delete_queue_message message1again
|
138
|
+
flunk 'Deleting a RECEIVEANDDELETE messasge should fail'
|
139
|
+
rescue Azure::Core::Http::HTTPError => error
|
140
|
+
ScenarioHelper.out "As expected, could not delete a deleted message"
|
141
|
+
error.status_code.must_equal 400
|
142
|
+
error.type.must_equal "Unknown"
|
143
|
+
end
|
144
|
+
|
145
|
+
if expected_count > 0
|
146
|
+
# Get the third
|
147
|
+
message3 = subject.peek_lock_queue_message queue_name
|
148
|
+
ScenarioHelper.compare_messages expected_messages[2], message3, exp_custom_props[2]
|
149
|
+
|
150
|
+
message_count = (subject.get_queue queue_name).message_count
|
151
|
+
ScenarioHelper.out 'Got third message, Message count: ' + message_count.to_s
|
152
|
+
message_count.must_equal expected_count # Peeked third message, count should not change
|
153
|
+
|
154
|
+
# Delete it
|
155
|
+
subject.delete_queue_message message3.location
|
156
|
+
expected_count = expected_count - 1
|
157
|
+
|
158
|
+
message_count = (subject.get_queue queue_name).message_count
|
159
|
+
ScenarioHelper.out 'Deleted third message, Message count: ' + message_count.to_s
|
160
|
+
message_count.must_equal expected_count # Deleted third message, count decrements
|
161
|
+
end
|
162
|
+
|
163
|
+
if expected_count > 0
|
164
|
+
# Get the fourth
|
165
|
+
message4 = subject.read_delete_queue_message queue_name
|
166
|
+
expected_count = expected_count - 1
|
167
|
+
ScenarioHelper.compare_messages expected_messages[3], message4, exp_custom_props[3]
|
168
|
+
|
169
|
+
message_count = (subject.get_queue queue_name).message_count
|
170
|
+
ScenarioHelper.out 'Got fourth message, Message count: ' + message_count.to_s
|
171
|
+
message_count.must_equal expected_count # Got fourth message, count decrements
|
172
|
+
end
|
173
|
+
|
174
|
+
# Get the rest of the messages
|
175
|
+
message_id = 4
|
176
|
+
while expected_count > 0 && message_count > 0
|
177
|
+
message = subject.read_delete_queue_message queue_name
|
178
|
+
expected_count = expected_count - 1
|
179
|
+
ScenarioHelper.compare_messages expected_messages[message_id], message, exp_custom_props[message_id]
|
180
|
+
|
181
|
+
message_count = (subject.get_queue queue_name).message_count
|
182
|
+
ScenarioHelper.out 'Got message #' + message_id.to_s + ' message, Message count: ' + message_count.to_s
|
183
|
+
message_count.must_equal expected_count
|
184
|
+
message_id = message_id + 1
|
185
|
+
end
|
186
|
+
|
187
|
+
message_count = (subject.get_queue queue_name).message_count
|
188
|
+
ScenarioHelper.out 'Got all messages, Message count: ' + message_count.to_s
|
189
|
+
message_count.must_equal 0
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should be able to upload many messages and read them back" do
|
193
|
+
|
194
|
+
setup_queue
|
195
|
+
|
196
|
+
messages = send_messages
|
197
|
+
|
198
|
+
get_message_from_queue messages
|
199
|
+
end
|
200
|
+
end
|