PageRenderTime 69ms CodeModel.GetById 40ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/rackspace/requests/compute_v2/server_tests.rb

https://bitbucket.org/dievssoftware/fog
Ruby | 144 lines | 121 code | 23 blank | 0 comment | 1 complexity | 0ac0c0d764b546622456267b64eebe2c MD5 | raw file
  1. Shindo.tests('Fog::Compute::RackspaceV2 | server_tests', ['rackspace']) do
  2. service = Fog::Compute.new(:provider => 'Rackspace', :version => 'V2')
  3. image_id = Fog.credentials[:rackspace_image_id]
  4. image_id ||= Fog.mocking? ? service.images.first.id : service.images.find {|image| image.name =~ /Ubuntu/}.id # use the first Ubuntu image
  5. flavor_id = Fog.credentials[:rackspace_flavor_id] || service.flavors.first.id
  6. link_format = {
  7. 'href' => String,
  8. 'rel' => String
  9. }
  10. server_format = {
  11. 'id' => String,
  12. 'name' => String,
  13. 'hostId' => Fog::Nullable::String,
  14. 'created' => Fog::Nullable::String,
  15. 'updated' => Fog::Nullable::String,
  16. 'status' => Fog::Nullable::String,
  17. 'progress' => Fog::Nullable::Integer,
  18. 'user_id' => Fog::Nullable::String,
  19. 'tenant_id' => Fog::Nullable::String,
  20. 'links' => [link_format],
  21. 'metadata' => Fog::Nullable::Hash
  22. }
  23. list_servers_format = {
  24. 'servers' => [server_format]
  25. }
  26. get_server_format = {
  27. 'server' => server_format.merge({
  28. 'accessIPv4' => String,
  29. 'accessIPv6' => String,
  30. 'OS-DCF:diskConfig' => String,
  31. 'rax-bandwidth:bandwidth' => Fog::Nullable::Array,
  32. 'addresses' => Fog::Nullable::Hash,
  33. 'flavor' => {
  34. 'id' => String,
  35. 'links' => [link_format]
  36. },
  37. 'image' => {
  38. 'id' => String,
  39. 'links' => [link_format]
  40. }
  41. })
  42. }
  43. create_server_format = {
  44. 'server' => {
  45. 'id' => String,
  46. 'adminPass' => String,
  47. 'links' => [link_format],
  48. 'OS-DCF:diskConfig' => String
  49. }
  50. }
  51. rescue_server_format = {
  52. 'adminPass' => Fog::Nullable::String
  53. }
  54. tests('success') do
  55. server_id = nil
  56. server_name = "fog#{Time.now.to_i.to_s}"
  57. image_id = image_id
  58. flavor_id = flavor_id
  59. tests("#create_server(#{server_name}, #{image_id}, #{flavor_id}, 1, 1)").formats(create_server_format) do
  60. body = service.create_server(server_name, image_id, flavor_id, 1, 1).body
  61. server_id = body['server']['id']
  62. body
  63. end
  64. wait_for_server_state(service, server_id, 'ACTIVE', 'ERROR')
  65. tests('#list_servers').formats(list_servers_format, false) do
  66. service.list_servers.body
  67. end
  68. tests('#get_server').formats(get_server_format, false) do
  69. service.get_server(server_id).body
  70. end
  71. tests("#update_server(#{server_id}, #{server_name}_update) LEGACY").formats(get_server_format) do
  72. service.update_server(server_id, "#{server_name}_update").body
  73. end
  74. tests("#update_server(#{server_id}, { 'name' => #{server_name}_update)} ").formats(get_server_format) do
  75. service.update_server(server_id, 'name' => "#{server_name}_update").body
  76. end
  77. tests('#change_server_password').succeeds do
  78. service.change_server_password(server_id, 'some_server_password')
  79. end
  80. wait_for_server_state(service, server_id, 'ACTIVE', 'ERROR')
  81. tests('#reboot_server').succeeds do
  82. service.reboot_server(server_id, 'SOFT')
  83. end
  84. wait_for_server_state(service, server_id, 'ACTIVE')
  85. tests('#rebuild_server').succeeds do
  86. rebuild_image_id = image_id
  87. service.rebuild_server(server_id, rebuild_image_id)
  88. end
  89. wait_for_server_state(service, server_id, 'ACTIVE', 'ERROR')
  90. sleep 120 unless Fog.mocking?
  91. tests('#resize_server').succeeds do
  92. resize_flavor_id = flavor_id
  93. service.resize_server(server_id, resize_flavor_id)
  94. end
  95. wait_for_server_state(service, server_id, 'VERIFY_RESIZE', 'ACTIVE')
  96. tests('#confirm_resize_server').succeeds do
  97. service.confirm_resize_server(server_id)
  98. end
  99. wait_for_server_state(service, server_id, 'ACTIVE', 'ERROR')
  100. tests('#resize_server').succeeds do
  101. resize_flavor_id = flavor_id
  102. service.resize_server(server_id, resize_flavor_id)
  103. end
  104. wait_for_server_state(service, server_id, 'VERIFY_RESIZE', 'ACTIVE')
  105. tests('#revert_resize_server').succeeds do
  106. service.revert_resize_server(server_id)
  107. end
  108. wait_for_server_state(service, server_id, 'ACTIVE', 'ERROR')
  109. tests('#rescue_server').formats(rescue_server_format, false) do
  110. service.rescue_server(server_id)
  111. end
  112. wait_for_server_state(service, server_id, 'RESCUE', 'ACTIVE')
  113. tests('#unrescue_server').succeeds do
  114. service.unrescue_server(server_id)
  115. end
  116. wait_for_server_state(service, server_id, 'ACTIVE', 'ERROR')
  117. tests('#delete_server').succeeds do
  118. service.delete_server(server_id)
  119. end
  120. end
  121. end