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,108 +1,108 @@
|
|
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 "test_helper"
|
16
|
-
require "azure/table/edmtype"
|
17
|
-
|
18
|
-
require "azure/table/guid"
|
19
|
-
|
20
|
-
describe Azure::Table::EdmType do
|
21
|
-
describe "#serialize_query_value" do
|
22
|
-
it "correctly serializes int64 query values" do
|
23
|
-
value = 2**128 + 1256231
|
24
|
-
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
25
|
-
serializedValue.must_equal value.to_s + "L"
|
26
|
-
end
|
27
|
-
|
28
|
-
it "correctly serializes int32 query values" do
|
29
|
-
value = 2
|
30
|
-
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
31
|
-
serializedValue.must_equal "2"
|
32
|
-
end
|
33
|
-
|
34
|
-
it "correctly serializes datetime query values" do
|
35
|
-
value = DateTime.new(2001,2,3,4,5,6)
|
36
|
-
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
37
|
-
serializedValue.must_equal "datetime'2001-02-03T04:05:06+00:00'"
|
38
|
-
end
|
39
|
-
|
40
|
-
it "correctly serializes guid query values" do
|
41
|
-
value = Azure::Table::GUID.new("81425519-6394-43e4-ac6e-28d91f5c3921")
|
42
|
-
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
43
|
-
serializedValue.must_equal "guid'81425519-6394-43e4-ac6e-28d91f5c3921'"
|
44
|
-
end
|
45
|
-
|
46
|
-
it "correctly serializes float query values" do
|
47
|
-
value = 1.2
|
48
|
-
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
49
|
-
serializedValue.must_equal "1.2"
|
50
|
-
end
|
51
|
-
|
52
|
-
it "correctly serializes string query values" do
|
53
|
-
value = "string"
|
54
|
-
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
55
|
-
serializedValue.must_equal "string"
|
56
|
-
end
|
57
|
-
|
58
|
-
it "correctly serializes binary query values" do
|
59
|
-
value = "1".force_encoding("BINARY")
|
60
|
-
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
61
|
-
serializedValue.must_equal "X'31'"
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "#unserialize_query_value" do
|
66
|
-
it "correctly unserializes int64 query values" do
|
67
|
-
value = "340282366920938463463374607431769467687"
|
68
|
-
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Int64")
|
69
|
-
unserializedValue.must_equal (2**128 + 1256231)
|
70
|
-
end
|
71
|
-
|
72
|
-
it "correctly unserializes int32 query values" do
|
73
|
-
value = "2"
|
74
|
-
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Int32")
|
75
|
-
unserializedValue.must_equal 2
|
76
|
-
end
|
77
|
-
|
78
|
-
it "correctly unserializes datetime query values" do
|
79
|
-
value = "2001-02-03T04:05:06+00:00"
|
80
|
-
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.DateTime")
|
81
|
-
unserializedValue.must_equal Time.new(2001, 2, 3, 4, 5, 6, "+00:00")
|
82
|
-
end
|
83
|
-
|
84
|
-
it "correctly unserializes guid query values" do
|
85
|
-
value = "81425519-6394-43e4-ac6e-28d91f5c3921"
|
86
|
-
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Guid")
|
87
|
-
unserializedValue.must_equal Azure::Table::GUID.new("81425519-6394-43e4-ac6e-28d91f5c3921")
|
88
|
-
end
|
89
|
-
|
90
|
-
it "correctly unserializes float query values" do
|
91
|
-
value = "1.2"
|
92
|
-
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Double")
|
93
|
-
unserializedValue.must_equal 1.2
|
94
|
-
end
|
95
|
-
|
96
|
-
it "correctly unserializes string query values" do
|
97
|
-
value = "string"
|
98
|
-
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.String")
|
99
|
-
unserializedValue.must_equal "string"
|
100
|
-
end
|
101
|
-
|
102
|
-
it "correctly unserializes binary query values" do
|
103
|
-
value = "MTIzNDU=".force_encoding("BINARY")
|
104
|
-
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Binary")
|
105
|
-
unserializedValue.must_equal "12345"
|
106
|
-
end
|
107
|
-
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 "test_helper"
|
16
|
+
require "azure/table/edmtype"
|
17
|
+
|
18
|
+
require "azure/table/guid"
|
19
|
+
|
20
|
+
describe Azure::Table::EdmType do
|
21
|
+
describe "#serialize_query_value" do
|
22
|
+
it "correctly serializes int64 query values" do
|
23
|
+
value = 2**128 + 1256231
|
24
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
25
|
+
serializedValue.must_equal value.to_s + "L"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "correctly serializes int32 query values" do
|
29
|
+
value = 2
|
30
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
31
|
+
serializedValue.must_equal "2"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "correctly serializes datetime query values" do
|
35
|
+
value = DateTime.new(2001,2,3,4,5,6)
|
36
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
37
|
+
serializedValue.must_equal "datetime'2001-02-03T04:05:06+00:00'"
|
38
|
+
end
|
39
|
+
|
40
|
+
it "correctly serializes guid query values" do
|
41
|
+
value = Azure::Table::GUID.new("81425519-6394-43e4-ac6e-28d91f5c3921")
|
42
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
43
|
+
serializedValue.must_equal "guid'81425519-6394-43e4-ac6e-28d91f5c3921'"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "correctly serializes float query values" do
|
47
|
+
value = 1.2
|
48
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
49
|
+
serializedValue.must_equal "1.2"
|
50
|
+
end
|
51
|
+
|
52
|
+
it "correctly serializes string query values" do
|
53
|
+
value = "string"
|
54
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
55
|
+
serializedValue.must_equal "string"
|
56
|
+
end
|
57
|
+
|
58
|
+
it "correctly serializes binary query values" do
|
59
|
+
value = "1".force_encoding("BINARY")
|
60
|
+
serializedValue = Azure::Table::EdmType.serialize_query_value(value)
|
61
|
+
serializedValue.must_equal "X'31'"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "#unserialize_query_value" do
|
66
|
+
it "correctly unserializes int64 query values" do
|
67
|
+
value = "340282366920938463463374607431769467687"
|
68
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Int64")
|
69
|
+
unserializedValue.must_equal (2**128 + 1256231)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "correctly unserializes int32 query values" do
|
73
|
+
value = "2"
|
74
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Int32")
|
75
|
+
unserializedValue.must_equal 2
|
76
|
+
end
|
77
|
+
|
78
|
+
it "correctly unserializes datetime query values" do
|
79
|
+
value = "2001-02-03T04:05:06+00:00"
|
80
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.DateTime")
|
81
|
+
unserializedValue.must_equal Time.new(2001, 2, 3, 4, 5, 6, "+00:00")
|
82
|
+
end
|
83
|
+
|
84
|
+
it "correctly unserializes guid query values" do
|
85
|
+
value = "81425519-6394-43e4-ac6e-28d91f5c3921"
|
86
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Guid")
|
87
|
+
unserializedValue.must_equal Azure::Table::GUID.new("81425519-6394-43e4-ac6e-28d91f5c3921")
|
88
|
+
end
|
89
|
+
|
90
|
+
it "correctly unserializes float query values" do
|
91
|
+
value = "1.2"
|
92
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Double")
|
93
|
+
unserializedValue.must_equal 1.2
|
94
|
+
end
|
95
|
+
|
96
|
+
it "correctly unserializes string query values" do
|
97
|
+
value = "string"
|
98
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.String")
|
99
|
+
unserializedValue.must_equal "string"
|
100
|
+
end
|
101
|
+
|
102
|
+
it "correctly unserializes binary query values" do
|
103
|
+
value = "MTIzNDU=".force_encoding("BINARY")
|
104
|
+
unserializedValue = Azure::Table::EdmType.unserialize_query_value(value, "Edm.Binary")
|
105
|
+
unserializedValue.must_equal "12345"
|
106
|
+
end
|
107
|
+
end
|
108
108
|
end
|
@@ -1,35 +1,35 @@
|
|
1
|
-
#-------------------------------------------------------------------------
|
2
|
-
# Copyright 2013 Microsoft Open Technologies, Inc.
|
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 'test_helper'
|
16
|
-
|
17
|
-
describe Azure::VirtualMachineImageManagement::Serialization do
|
18
|
-
subject { Azure::VirtualMachineImageManagement::Serialization }
|
19
|
-
|
20
|
-
let(:virtual_machine_images_from_xml) { Fixtures['list_images'] }
|
21
|
-
|
22
|
-
describe '#virtual_machine_images_from_xml' do
|
23
|
-
|
24
|
-
it 'accepts an XML string' do
|
25
|
-
subject.virtual_machine_images_from_xml Nokogiri::XML(virtual_machine_images_from_xml)
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'returns an Array of VirtualMachineImageService instances' do
|
29
|
-
results = subject.virtual_machine_images_from_xml Nokogiri::XML(virtual_machine_images_from_xml)
|
30
|
-
results.must_be_kind_of Array
|
31
|
-
results[0].must_be_kind_of Azure::VirtualMachineImageManagement::VirtualMachineImage
|
32
|
-
results.count.must_equal 12
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# Copyright 2013 Microsoft Open Technologies, Inc.
|
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 'test_helper'
|
16
|
+
|
17
|
+
describe Azure::VirtualMachineImageManagement::Serialization do
|
18
|
+
subject { Azure::VirtualMachineImageManagement::Serialization }
|
19
|
+
|
20
|
+
let(:virtual_machine_images_from_xml) { Fixtures['list_images'] }
|
21
|
+
|
22
|
+
describe '#virtual_machine_images_from_xml' do
|
23
|
+
|
24
|
+
it 'accepts an XML string' do
|
25
|
+
subject.virtual_machine_images_from_xml Nokogiri::XML(virtual_machine_images_from_xml)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'returns an Array of VirtualMachineImageService instances' do
|
29
|
+
results = subject.virtual_machine_images_from_xml Nokogiri::XML(virtual_machine_images_from_xml)
|
30
|
+
results.must_be_kind_of Array
|
31
|
+
results[0].must_be_kind_of Azure::VirtualMachineImageManagement::VirtualMachineImage
|
32
|
+
results.count.must_equal 12
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb
CHANGED
@@ -1,65 +1,65 @@
|
|
1
|
-
#-------------------------------------------------------------------------
|
2
|
-
# Copyright 2013 Microsoft Open Technologies, Inc.
|
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 'test_helper'
|
16
|
-
|
17
|
-
describe Azure::VirtualMachineImageManagementService do
|
18
|
-
|
19
|
-
subject { Azure::VirtualMachineImageManagementService.new }
|
20
|
-
|
21
|
-
let(:request_path) { '/services/images' }
|
22
|
-
let(:images_xml) { Fixtures['list_images'] }
|
23
|
-
let(:method) { :get }
|
24
|
-
let(:mock_request) { mock }
|
25
|
-
let(:response) do
|
26
|
-
response = mock
|
27
|
-
response.stubs(:body).returns(images_xml)
|
28
|
-
response
|
29
|
-
end
|
30
|
-
let(:response_body) { Nokogiri::XML response.body }
|
31
|
-
|
32
|
-
before do
|
33
|
-
Loggerx.expects(:puts).returns(nil).at_least(0)
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '#list_virtual_machine_images' do
|
37
|
-
|
38
|
-
before do
|
39
|
-
ManagementHttpRequest.stubs(:new).with(
|
40
|
-
method,
|
41
|
-
request_path,
|
42
|
-
nil
|
43
|
-
).returns(mock_request)
|
44
|
-
mock_request.expects(:call).returns(response_body)
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'assembles a URI for the request' do
|
48
|
-
subject.list_virtual_machine_images
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'sets the properties of the virtual machine images' do
|
52
|
-
virtual_machine_image = subject.list_virtual_machine_images.first
|
53
|
-
virtual_machine_image.name.must_equal 'RightImage-CentOS-6.2-x64-v5.8.8.1'
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'returns a list of virtual machine images from server' do
|
57
|
-
results = subject.list_virtual_machine_images
|
58
|
-
results.must_be_kind_of Array
|
59
|
-
results.length.must_equal 12
|
60
|
-
image_klass = Azure::VirtualMachineImageManagement::VirtualMachineImage
|
61
|
-
results.first.must_be_kind_of image_klass
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# Copyright 2013 Microsoft Open Technologies, Inc.
|
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 'test_helper'
|
16
|
+
|
17
|
+
describe Azure::VirtualMachineImageManagementService do
|
18
|
+
|
19
|
+
subject { Azure::VirtualMachineImageManagementService.new }
|
20
|
+
|
21
|
+
let(:request_path) { '/services/images' }
|
22
|
+
let(:images_xml) { Fixtures['list_images'] }
|
23
|
+
let(:method) { :get }
|
24
|
+
let(:mock_request) { mock }
|
25
|
+
let(:response) do
|
26
|
+
response = mock
|
27
|
+
response.stubs(:body).returns(images_xml)
|
28
|
+
response
|
29
|
+
end
|
30
|
+
let(:response_body) { Nokogiri::XML response.body }
|
31
|
+
|
32
|
+
before do
|
33
|
+
Loggerx.expects(:puts).returns(nil).at_least(0)
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#list_virtual_machine_images' do
|
37
|
+
|
38
|
+
before do
|
39
|
+
ManagementHttpRequest.stubs(:new).with(
|
40
|
+
method,
|
41
|
+
request_path,
|
42
|
+
nil
|
43
|
+
).returns(mock_request)
|
44
|
+
mock_request.expects(:call).returns(response_body)
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'assembles a URI for the request' do
|
48
|
+
subject.list_virtual_machine_images
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'sets the properties of the virtual machine images' do
|
52
|
+
virtual_machine_image = subject.list_virtual_machine_images.first
|
53
|
+
virtual_machine_image.name.must_equal 'RightImage-CentOS-6.2-x64-v5.8.8.1'
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'returns a list of virtual machine images from server' do
|
57
|
+
results = subject.list_virtual_machine_images
|
58
|
+
results.must_be_kind_of Array
|
59
|
+
results.length.must_equal 12
|
60
|
+
image_klass = Azure::VirtualMachineImageManagement::VirtualMachineImage
|
61
|
+
results.first.must_be_kind_of image_klass
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
@@ -1,258 +1,258 @@
|
|
1
|
-
#-------------------------------------------------------------------------
|
2
|
-
# Copyright 2013 Microsoft Open Technologies, Inc.
|
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 'test_helper'
|
16
|
-
|
17
|
-
describe Azure::VirtualMachineManagement::Serialization do
|
18
|
-
subject { Azure::VirtualMachineManagement::Serialization }
|
19
|
-
|
20
|
-
let(:vm_xml) { Nokogiri::XML(Fixtures['virtual_machine']) }
|
21
|
-
let(:csn) { 'cloud-service-1' }
|
22
|
-
|
23
|
-
describe '#virtual_machines_from_xml' do
|
24
|
-
|
25
|
-
it 'accepts an XML string' do
|
26
|
-
subject.virtual_machines_from_xml(vm_xml, csn)
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'returns an Array of VirtualMachine instances' do
|
30
|
-
result = subject.virtual_machines_from_xml(vm_xml, csn).first
|
31
|
-
result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
|
32
|
-
end
|
33
|
-
|
34
|
-
it "returns a virtual_machine, with it's attribute populated" do
|
35
|
-
virtual_machine = subject.virtual_machines_from_xml(vm_xml, csn).first
|
36
|
-
virtual_machine.vm_name.must_equal 'instance-name'
|
37
|
-
virtual_machine.role_size.must_equal 'Small'
|
38
|
-
virtual_machine.hostname.must_equal 'host-name'
|
39
|
-
virtual_machine.cloud_service_name.must_equal 'cloud-service-1'
|
40
|
-
virtual_machine.deployment_name.must_equal 'deployment-name'
|
41
|
-
virtual_machine.ipaddress.must_equal '137.116.17.187'
|
42
|
-
virtual_machine.availability_set_name.must_equal 'vm-availability'
|
43
|
-
end
|
44
|
-
|
45
|
-
it "returns a virtual_machine, with it's tcp_endpoints attribute" do
|
46
|
-
virtual_machine = subject.virtual_machines_from_xml(vm_xml, csn).first
|
47
|
-
virtual_machine.tcp_endpoints.must_be_kind_of Array
|
48
|
-
virtual_machine.tcp_endpoints.must_include(
|
49
|
-
name: 'SSH',
|
50
|
-
vip: '137.116.17.187',
|
51
|
-
public_port: '22',
|
52
|
-
local_port: '22',
|
53
|
-
protocol: 'tcp'
|
54
|
-
)
|
55
|
-
virtual_machine.tcp_endpoints.must_include(
|
56
|
-
name: 'tcp-port-80',
|
57
|
-
vip: '137.117.17.187',
|
58
|
-
public_port: '80',
|
59
|
-
local_port: '80',
|
60
|
-
protocol: 'tcp'
|
61
|
-
)
|
62
|
-
virtual_machine.tcp_endpoints.must_include(
|
63
|
-
name: 'tcp-port-3889',
|
64
|
-
vip: '137.116.17.187',
|
65
|
-
public_port: '3889',
|
66
|
-
local_port: '3889',
|
67
|
-
protocol: 'tcp'
|
68
|
-
)
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
|
-
describe '#shutdown_virtual_machine_to_xml' do
|
74
|
-
|
75
|
-
it 'returns an xml for virtual machine shutdown' do
|
76
|
-
result = subject.shutdown_virtual_machine_to_xml
|
77
|
-
result.must_be_kind_of String
|
78
|
-
doc = Nokogiri::XML(result)
|
79
|
-
doc.css('OperationType').text.must_equal 'ShutdownRoleOperation'
|
80
|
-
doc.css('PostShutdownAction').text.must_equal 'StoppedDeallocated'
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|
84
|
-
|
85
|
-
describe '#start_virtual_machine_to_xml' do
|
86
|
-
|
87
|
-
it 'returns an xml for start virtual machine' do
|
88
|
-
result = subject.start_virtual_machine_to_xml
|
89
|
-
result.must_be_kind_of String
|
90
|
-
doc = Nokogiri::XML(result)
|
91
|
-
doc.css('OperationType').text.must_equal 'StartRoleOperation'
|
92
|
-
end
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
describe '#restart_virtual_machine_to_xml' do
|
97
|
-
|
98
|
-
it 'returns an xml for restart virtual machine' do
|
99
|
-
result = subject.restart_virtual_machine_to_xml
|
100
|
-
result.must_be_kind_of String
|
101
|
-
doc = Nokogiri::XML(result)
|
102
|
-
doc.css('OperationType').text.must_equal 'RestartRoleOperation'
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
describe '#deployment_to_xml' do
|
108
|
-
let(:params) do
|
109
|
-
{
|
110
|
-
vm_name: 'virtual-machine-name',
|
111
|
-
vm_user: 'username',
|
112
|
-
image: 'linux_image',
|
113
|
-
password: 'password',
|
114
|
-
location: 'West US',
|
115
|
-
certificate: {fingerprint: 'CFB8C256D2986559C630547F2D0'}
|
116
|
-
}
|
117
|
-
end
|
118
|
-
|
119
|
-
let(:options) do
|
120
|
-
{
|
121
|
-
storage_account_name: 'storageaccountname',
|
122
|
-
cloud_service_name: 'cloud-service-name',
|
123
|
-
tcp_endpoints: '80,3389:3390,85:85',
|
124
|
-
availability_set_name: 'aval-set',
|
125
|
-
winrm_https_port: '5988',
|
126
|
-
winrm_transport: ['http','https'],
|
127
|
-
os_type: 'Windows',
|
128
|
-
existing_ports: ['5985']
|
129
|
-
}
|
130
|
-
end
|
131
|
-
|
132
|
-
it 'returns an VirtualMachine object with correct tcp endpoints' do
|
133
|
-
result = subject.deployment_to_xml params, options
|
134
|
-
doc = Nokogiri::XML(result)
|
135
|
-
endpoints = doc.css('Deployment RoleList ConfigurationSet InputEndpoints InputEndpoint')
|
136
|
-
tcp_endpoints = []
|
137
|
-
endpoints.each do |endpoint|
|
138
|
-
ep = {}
|
139
|
-
ep[:name] = xml_content(endpoint, 'Name')
|
140
|
-
ep[:public_port] = xml_content(endpoint, 'Port')
|
141
|
-
ep[:local_port] = xml_content(endpoint, 'LocalPort')
|
142
|
-
tcp_endpoints << ep
|
143
|
-
end
|
144
|
-
doc.css('Deployment RoleList AvailabilitySetName').text.must_equal 'aval-set'
|
145
|
-
result.must_be_kind_of String
|
146
|
-
tcp_endpoints.must_include(
|
147
|
-
name: 'TCP-PORT-80',
|
148
|
-
public_port: '80',
|
149
|
-
local_port: '80'
|
150
|
-
)
|
151
|
-
tcp_endpoints.must_include(
|
152
|
-
name: 'TCP-PORT-3390',
|
153
|
-
public_port: '3390',
|
154
|
-
local_port: '3389'
|
155
|
-
)
|
156
|
-
tcp_endpoints.must_include(
|
157
|
-
name: 'TCP-PORT-85',
|
158
|
-
public_port: '85',
|
159
|
-
local_port: '85'
|
160
|
-
)
|
161
|
-
tcp_endpoints.must_include(
|
162
|
-
name: 'PowerShell',
|
163
|
-
public_port: '5988',
|
164
|
-
local_port: '5986'
|
165
|
-
)
|
166
|
-
end
|
167
|
-
|
168
|
-
it 'returns a VirtualMachine object with it the vhds media_link that includes seconds and milliseconds' do
|
169
|
-
now = Time.now
|
170
|
-
Timecop.freeze(now) do
|
171
|
-
result = subject.deployment_to_xml params, options
|
172
|
-
doc = Nokogiri::XML(result)
|
173
|
-
media_link_uri = URI.parse(doc.css('Deployment RoleList OSVirtualHardDisk MediaLink').text)
|
174
|
-
disk_time_name = /disk_(.*?)\.vhd/.match(media_link_uri.path).captures.first
|
175
|
-
disk_time_name.must_equal now.strftime('%Y_%m_%d_%H_%M_%S_%L')
|
176
|
-
end
|
177
|
-
end
|
178
|
-
end
|
179
|
-
|
180
|
-
describe '#add_data_disk_to_xml' do
|
181
|
-
|
182
|
-
let(:options) do
|
183
|
-
{
|
184
|
-
disk_size: 100,
|
185
|
-
}
|
186
|
-
end
|
187
|
-
let(:media_link) { 'https://sta.blob.managment.core.net/vhds/1234.vhd' }
|
188
|
-
|
189
|
-
before do
|
190
|
-
Loggerx.expects(:puts).returns(nil).at_least(0)
|
191
|
-
@vm = Azure::VirtualMachineManagement::VirtualMachine.new
|
192
|
-
@vm.data_disks = []
|
193
|
-
@vm.media_link = media_link
|
194
|
-
end
|
195
|
-
|
196
|
-
it 'returns an xml for newly created data disk' do
|
197
|
-
result = subject.add_data_disk_to_xml(@vm, options)
|
198
|
-
doc = Nokogiri::XML(result)
|
199
|
-
disk_size = doc.css('DataVirtualHardDisk LogicalDiskSizeInGB').text
|
200
|
-
media_link = doc.css('DataVirtualHardDisk MediaLink').text
|
201
|
-
disk_name = doc.css('DataVirtualHardDisk DiskName').text
|
202
|
-
result.must_be_kind_of String
|
203
|
-
disk_size.must_equal options[:disk_size].to_s
|
204
|
-
media_link.wont_be_empty
|
205
|
-
disk_name.must_be_empty
|
206
|
-
end
|
207
|
-
|
208
|
-
it 'returns an xml for existing data disk' do
|
209
|
-
options[:import] = true
|
210
|
-
options[:disk_name] = 'disk_name'
|
211
|
-
result = subject.add_data_disk_to_xml(@vm, options)
|
212
|
-
doc = Nokogiri::XML(result)
|
213
|
-
media_link = doc.css('DataVirtualHardDisk MediaLink').text
|
214
|
-
disk_name = doc.css('DataVirtualHardDisk DiskName').text
|
215
|
-
result.must_be_kind_of String
|
216
|
-
media_link.must_be_empty
|
217
|
-
disk_name.wont_be_empty
|
218
|
-
end
|
219
|
-
|
220
|
-
it 'raise error when disk name is empty' do
|
221
|
-
options[:import] = true
|
222
|
-
exception = assert_raises(RuntimeError) do
|
223
|
-
subject.add_data_disk_to_xml(@vm, options)
|
224
|
-
end
|
225
|
-
assert_match(/The data disk name is not valid/i, exception.message)
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
describe '#assign_random_port' do
|
230
|
-
let(:preferred_port) { '22' }
|
231
|
-
before do
|
232
|
-
subject.class.send(:public, *subject.class.private_instance_methods)
|
233
|
-
Loggerx.expects(:puts).returns(nil).at_least(0)
|
234
|
-
end
|
235
|
-
|
236
|
-
it 'returns random port number when preferred port is in use' do
|
237
|
-
result = subject.assign_random_port(preferred_port, [preferred_port])
|
238
|
-
assert_operator result.to_i, :>=, 10000
|
239
|
-
assert_operator result.to_i, :<=, 65535
|
240
|
-
end
|
241
|
-
|
242
|
-
it 'returns preferred port number when used ports is nil' do
|
243
|
-
result = subject.assign_random_port(preferred_port, nil)
|
244
|
-
result.must_equal preferred_port
|
245
|
-
end
|
246
|
-
|
247
|
-
it 'returns preferred port number when used ports is empty' do
|
248
|
-
result = subject.assign_random_port(preferred_port, [])
|
249
|
-
result.must_equal preferred_port
|
250
|
-
end
|
251
|
-
|
252
|
-
it 'returns random port number when preferred port is in use' do
|
253
|
-
result = subject.assign_random_port(preferred_port, ['1', preferred_port])
|
254
|
-
assert_operator result.to_i, :>=, 10000
|
255
|
-
assert_operator result.to_i, :<=, 65535
|
256
|
-
end
|
257
|
-
end
|
258
|
-
end
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# Copyright 2013 Microsoft Open Technologies, Inc.
|
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 'test_helper'
|
16
|
+
|
17
|
+
describe Azure::VirtualMachineManagement::Serialization do
|
18
|
+
subject { Azure::VirtualMachineManagement::Serialization }
|
19
|
+
|
20
|
+
let(:vm_xml) { Nokogiri::XML(Fixtures['virtual_machine']) }
|
21
|
+
let(:csn) { 'cloud-service-1' }
|
22
|
+
|
23
|
+
describe '#virtual_machines_from_xml' do
|
24
|
+
|
25
|
+
it 'accepts an XML string' do
|
26
|
+
subject.virtual_machines_from_xml(vm_xml, csn)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'returns an Array of VirtualMachine instances' do
|
30
|
+
result = subject.virtual_machines_from_xml(vm_xml, csn).first
|
31
|
+
result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
|
32
|
+
end
|
33
|
+
|
34
|
+
it "returns a virtual_machine, with it's attribute populated" do
|
35
|
+
virtual_machine = subject.virtual_machines_from_xml(vm_xml, csn).first
|
36
|
+
virtual_machine.vm_name.must_equal 'instance-name'
|
37
|
+
virtual_machine.role_size.must_equal 'Small'
|
38
|
+
virtual_machine.hostname.must_equal 'host-name'
|
39
|
+
virtual_machine.cloud_service_name.must_equal 'cloud-service-1'
|
40
|
+
virtual_machine.deployment_name.must_equal 'deployment-name'
|
41
|
+
virtual_machine.ipaddress.must_equal '137.116.17.187'
|
42
|
+
virtual_machine.availability_set_name.must_equal 'vm-availability'
|
43
|
+
end
|
44
|
+
|
45
|
+
it "returns a virtual_machine, with it's tcp_endpoints attribute" do
|
46
|
+
virtual_machine = subject.virtual_machines_from_xml(vm_xml, csn).first
|
47
|
+
virtual_machine.tcp_endpoints.must_be_kind_of Array
|
48
|
+
virtual_machine.tcp_endpoints.must_include(
|
49
|
+
name: 'SSH',
|
50
|
+
vip: '137.116.17.187',
|
51
|
+
public_port: '22',
|
52
|
+
local_port: '22',
|
53
|
+
protocol: 'tcp'
|
54
|
+
)
|
55
|
+
virtual_machine.tcp_endpoints.must_include(
|
56
|
+
name: 'tcp-port-80',
|
57
|
+
vip: '137.117.17.187',
|
58
|
+
public_port: '80',
|
59
|
+
local_port: '80',
|
60
|
+
protocol: 'tcp'
|
61
|
+
)
|
62
|
+
virtual_machine.tcp_endpoints.must_include(
|
63
|
+
name: 'tcp-port-3889',
|
64
|
+
vip: '137.116.17.187',
|
65
|
+
public_port: '3889',
|
66
|
+
local_port: '3889',
|
67
|
+
protocol: 'tcp'
|
68
|
+
)
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '#shutdown_virtual_machine_to_xml' do
|
74
|
+
|
75
|
+
it 'returns an xml for virtual machine shutdown' do
|
76
|
+
result = subject.shutdown_virtual_machine_to_xml
|
77
|
+
result.must_be_kind_of String
|
78
|
+
doc = Nokogiri::XML(result)
|
79
|
+
doc.css('OperationType').text.must_equal 'ShutdownRoleOperation'
|
80
|
+
doc.css('PostShutdownAction').text.must_equal 'StoppedDeallocated'
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
describe '#start_virtual_machine_to_xml' do
|
86
|
+
|
87
|
+
it 'returns an xml for start virtual machine' do
|
88
|
+
result = subject.start_virtual_machine_to_xml
|
89
|
+
result.must_be_kind_of String
|
90
|
+
doc = Nokogiri::XML(result)
|
91
|
+
doc.css('OperationType').text.must_equal 'StartRoleOperation'
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
describe '#restart_virtual_machine_to_xml' do
|
97
|
+
|
98
|
+
it 'returns an xml for restart virtual machine' do
|
99
|
+
result = subject.restart_virtual_machine_to_xml
|
100
|
+
result.must_be_kind_of String
|
101
|
+
doc = Nokogiri::XML(result)
|
102
|
+
doc.css('OperationType').text.must_equal 'RestartRoleOperation'
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
describe '#deployment_to_xml' do
|
108
|
+
let(:params) do
|
109
|
+
{
|
110
|
+
vm_name: 'virtual-machine-name',
|
111
|
+
vm_user: 'username',
|
112
|
+
image: 'linux_image',
|
113
|
+
password: 'password',
|
114
|
+
location: 'West US',
|
115
|
+
certificate: {fingerprint: 'CFB8C256D2986559C630547F2D0'}
|
116
|
+
}
|
117
|
+
end
|
118
|
+
|
119
|
+
let(:options) do
|
120
|
+
{
|
121
|
+
storage_account_name: 'storageaccountname',
|
122
|
+
cloud_service_name: 'cloud-service-name',
|
123
|
+
tcp_endpoints: '80,3389:3390,85:85',
|
124
|
+
availability_set_name: 'aval-set',
|
125
|
+
winrm_https_port: '5988',
|
126
|
+
winrm_transport: ['http','https'],
|
127
|
+
os_type: 'Windows',
|
128
|
+
existing_ports: ['5985']
|
129
|
+
}
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'returns an VirtualMachine object with correct tcp endpoints' do
|
133
|
+
result = subject.deployment_to_xml params, options
|
134
|
+
doc = Nokogiri::XML(result)
|
135
|
+
endpoints = doc.css('Deployment RoleList ConfigurationSet InputEndpoints InputEndpoint')
|
136
|
+
tcp_endpoints = []
|
137
|
+
endpoints.each do |endpoint|
|
138
|
+
ep = {}
|
139
|
+
ep[:name] = xml_content(endpoint, 'Name')
|
140
|
+
ep[:public_port] = xml_content(endpoint, 'Port')
|
141
|
+
ep[:local_port] = xml_content(endpoint, 'LocalPort')
|
142
|
+
tcp_endpoints << ep
|
143
|
+
end
|
144
|
+
doc.css('Deployment RoleList AvailabilitySetName').text.must_equal 'aval-set'
|
145
|
+
result.must_be_kind_of String
|
146
|
+
tcp_endpoints.must_include(
|
147
|
+
name: 'TCP-PORT-80',
|
148
|
+
public_port: '80',
|
149
|
+
local_port: '80'
|
150
|
+
)
|
151
|
+
tcp_endpoints.must_include(
|
152
|
+
name: 'TCP-PORT-3390',
|
153
|
+
public_port: '3390',
|
154
|
+
local_port: '3389'
|
155
|
+
)
|
156
|
+
tcp_endpoints.must_include(
|
157
|
+
name: 'TCP-PORT-85',
|
158
|
+
public_port: '85',
|
159
|
+
local_port: '85'
|
160
|
+
)
|
161
|
+
tcp_endpoints.must_include(
|
162
|
+
name: 'PowerShell',
|
163
|
+
public_port: '5988',
|
164
|
+
local_port: '5986'
|
165
|
+
)
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'returns a VirtualMachine object with it the vhds media_link that includes seconds and milliseconds' do
|
169
|
+
now = Time.now
|
170
|
+
Timecop.freeze(now) do
|
171
|
+
result = subject.deployment_to_xml params, options
|
172
|
+
doc = Nokogiri::XML(result)
|
173
|
+
media_link_uri = URI.parse(doc.css('Deployment RoleList OSVirtualHardDisk MediaLink').text)
|
174
|
+
disk_time_name = /disk_(.*?)\.vhd/.match(media_link_uri.path).captures.first
|
175
|
+
disk_time_name.must_equal now.strftime('%Y_%m_%d_%H_%M_%S_%L')
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
describe '#add_data_disk_to_xml' do
|
181
|
+
|
182
|
+
let(:options) do
|
183
|
+
{
|
184
|
+
disk_size: 100,
|
185
|
+
}
|
186
|
+
end
|
187
|
+
let(:media_link) { 'https://sta.blob.managment.core.net/vhds/1234.vhd' }
|
188
|
+
|
189
|
+
before do
|
190
|
+
Loggerx.expects(:puts).returns(nil).at_least(0)
|
191
|
+
@vm = Azure::VirtualMachineManagement::VirtualMachine.new
|
192
|
+
@vm.data_disks = []
|
193
|
+
@vm.media_link = media_link
|
194
|
+
end
|
195
|
+
|
196
|
+
it 'returns an xml for newly created data disk' do
|
197
|
+
result = subject.add_data_disk_to_xml(@vm, options)
|
198
|
+
doc = Nokogiri::XML(result)
|
199
|
+
disk_size = doc.css('DataVirtualHardDisk LogicalDiskSizeInGB').text
|
200
|
+
media_link = doc.css('DataVirtualHardDisk MediaLink').text
|
201
|
+
disk_name = doc.css('DataVirtualHardDisk DiskName').text
|
202
|
+
result.must_be_kind_of String
|
203
|
+
disk_size.must_equal options[:disk_size].to_s
|
204
|
+
media_link.wont_be_empty
|
205
|
+
disk_name.must_be_empty
|
206
|
+
end
|
207
|
+
|
208
|
+
it 'returns an xml for existing data disk' do
|
209
|
+
options[:import] = true
|
210
|
+
options[:disk_name] = 'disk_name'
|
211
|
+
result = subject.add_data_disk_to_xml(@vm, options)
|
212
|
+
doc = Nokogiri::XML(result)
|
213
|
+
media_link = doc.css('DataVirtualHardDisk MediaLink').text
|
214
|
+
disk_name = doc.css('DataVirtualHardDisk DiskName').text
|
215
|
+
result.must_be_kind_of String
|
216
|
+
media_link.must_be_empty
|
217
|
+
disk_name.wont_be_empty
|
218
|
+
end
|
219
|
+
|
220
|
+
it 'raise error when disk name is empty' do
|
221
|
+
options[:import] = true
|
222
|
+
exception = assert_raises(RuntimeError) do
|
223
|
+
subject.add_data_disk_to_xml(@vm, options)
|
224
|
+
end
|
225
|
+
assert_match(/The data disk name is not valid/i, exception.message)
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
describe '#assign_random_port' do
|
230
|
+
let(:preferred_port) { '22' }
|
231
|
+
before do
|
232
|
+
subject.class.send(:public, *subject.class.private_instance_methods)
|
233
|
+
Loggerx.expects(:puts).returns(nil).at_least(0)
|
234
|
+
end
|
235
|
+
|
236
|
+
it 'returns random port number when preferred port is in use' do
|
237
|
+
result = subject.assign_random_port(preferred_port, [preferred_port])
|
238
|
+
assert_operator result.to_i, :>=, 10000
|
239
|
+
assert_operator result.to_i, :<=, 65535
|
240
|
+
end
|
241
|
+
|
242
|
+
it 'returns preferred port number when used ports is nil' do
|
243
|
+
result = subject.assign_random_port(preferred_port, nil)
|
244
|
+
result.must_equal preferred_port
|
245
|
+
end
|
246
|
+
|
247
|
+
it 'returns preferred port number when used ports is empty' do
|
248
|
+
result = subject.assign_random_port(preferred_port, [])
|
249
|
+
result.must_equal preferred_port
|
250
|
+
end
|
251
|
+
|
252
|
+
it 'returns random port number when preferred port is in use' do
|
253
|
+
result = subject.assign_random_port(preferred_port, ['1', preferred_port])
|
254
|
+
assert_operator result.to_i, :>=, 10000
|
255
|
+
assert_operator result.to_i, :<=, 65535
|
256
|
+
end
|
257
|
+
end
|
258
|
+
end
|