fog 0.0.3

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.
Files changed (171) hide show
  1. data/.document +5 -0
  2. data/.gitignore +6 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +7 -0
  5. data/Rakefile +98 -0
  6. data/VERSION +1 -0
  7. data/benchs/fog_vs.rb +135 -0
  8. data/benchs/headers_split_vs_match.rb +18 -0
  9. data/benchs/params.rb +43 -0
  10. data/benchs/parse_vs_push.rb +60 -0
  11. data/benchs/stripping.rb +26 -0
  12. data/lib/fog.rb +21 -0
  13. data/lib/fog/aws.rb +145 -0
  14. data/lib/fog/aws/ec2.rb +173 -0
  15. data/lib/fog/aws/models/ec2/address.rb +31 -0
  16. data/lib/fog/aws/models/ec2/addresses.rb +36 -0
  17. data/lib/fog/aws/models/ec2/key_pair.rb +35 -0
  18. data/lib/fog/aws/models/ec2/key_pairs.rb +36 -0
  19. data/lib/fog/aws/models/ec2/volume.rb +47 -0
  20. data/lib/fog/aws/models/ec2/volumes.rb +36 -0
  21. data/lib/fog/aws/models/s3/bucket.rb +77 -0
  22. data/lib/fog/aws/models/s3/buckets.rb +83 -0
  23. data/lib/fog/aws/models/s3/object.rb +76 -0
  24. data/lib/fog/aws/models/s3/objects.rb +97 -0
  25. data/lib/fog/aws/models/s3/owner.rb +18 -0
  26. data/lib/fog/aws/parsers/ec2/allocate_address.rb +19 -0
  27. data/lib/fog/aws/parsers/ec2/attach_volume.rb +22 -0
  28. data/lib/fog/aws/parsers/ec2/basic.rb +25 -0
  29. data/lib/fog/aws/parsers/ec2/create_key_pair.rb +20 -0
  30. data/lib/fog/aws/parsers/ec2/create_snapshot.rb +22 -0
  31. data/lib/fog/aws/parsers/ec2/create_volume.rb +24 -0
  32. data/lib/fog/aws/parsers/ec2/describe_addresses.rb +30 -0
  33. data/lib/fog/aws/parsers/ec2/describe_availability_zones.rb +30 -0
  34. data/lib/fog/aws/parsers/ec2/describe_images.rb +49 -0
  35. data/lib/fog/aws/parsers/ec2/describe_instances.rb +73 -0
  36. data/lib/fog/aws/parsers/ec2/describe_key_pairs.rb +30 -0
  37. data/lib/fog/aws/parsers/ec2/describe_regions.rb +30 -0
  38. data/lib/fog/aws/parsers/ec2/describe_security_groups.rb +75 -0
  39. data/lib/fog/aws/parsers/ec2/describe_snapshots.rb +30 -0
  40. data/lib/fog/aws/parsers/ec2/describe_volumes.rb +57 -0
  41. data/lib/fog/aws/parsers/ec2/detach_volume.rb +22 -0
  42. data/lib/fog/aws/parsers/ec2/get_console_output.rb +28 -0
  43. data/lib/fog/aws/parsers/ec2/run_instances.rb +65 -0
  44. data/lib/fog/aws/parsers/ec2/terminate_instances.rb +55 -0
  45. data/lib/fog/aws/parsers/s3/copy_object.rb +22 -0
  46. data/lib/fog/aws/parsers/s3/get_bucket.rb +46 -0
  47. data/lib/fog/aws/parsers/s3/get_bucket_location.rb +20 -0
  48. data/lib/fog/aws/parsers/s3/get_request_payment.rb +20 -0
  49. data/lib/fog/aws/parsers/s3/get_service.rb +32 -0
  50. data/lib/fog/aws/parsers/simpledb/basic.rb +31 -0
  51. data/lib/fog/aws/parsers/simpledb/domain_metadata.rb +30 -0
  52. data/lib/fog/aws/parsers/simpledb/get_attributes.rb +34 -0
  53. data/lib/fog/aws/parsers/simpledb/list_domains.rb +28 -0
  54. data/lib/fog/aws/parsers/simpledb/select.rb +39 -0
  55. data/lib/fog/aws/requests/ec2/allocate_address.rb +50 -0
  56. data/lib/fog/aws/requests/ec2/associate_address.rb +59 -0
  57. data/lib/fog/aws/requests/ec2/attach_volume.rb +71 -0
  58. data/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb +32 -0
  59. data/lib/fog/aws/requests/ec2/create_key_pair.rb +60 -0
  60. data/lib/fog/aws/requests/ec2/create_security_group.rb +61 -0
  61. data/lib/fog/aws/requests/ec2/create_snapshot.rb +65 -0
  62. data/lib/fog/aws/requests/ec2/create_volume.rb +66 -0
  63. data/lib/fog/aws/requests/ec2/delete_key_pair.rb +49 -0
  64. data/lib/fog/aws/requests/ec2/delete_security_group.rb +52 -0
  65. data/lib/fog/aws/requests/ec2/delete_snapshot.rb +53 -0
  66. data/lib/fog/aws/requests/ec2/delete_volume.rb +55 -0
  67. data/lib/fog/aws/requests/ec2/describe_addresses.rb +61 -0
  68. data/lib/fog/aws/requests/ec2/describe_availability_zones.rb +64 -0
  69. data/lib/fog/aws/requests/ec2/describe_images.rb +41 -0
  70. data/lib/fog/aws/requests/ec2/describe_instances.rb +114 -0
  71. data/lib/fog/aws/requests/ec2/describe_key_pairs.rb +63 -0
  72. data/lib/fog/aws/requests/ec2/describe_regions.rb +61 -0
  73. data/lib/fog/aws/requests/ec2/describe_security_groups.rb +71 -0
  74. data/lib/fog/aws/requests/ec2/describe_snapshots.rb +78 -0
  75. data/lib/fog/aws/requests/ec2/describe_volumes.rb +85 -0
  76. data/lib/fog/aws/requests/ec2/detach_volume.rb +62 -0
  77. data/lib/fog/aws/requests/ec2/disassociate_address.rb +55 -0
  78. data/lib/fog/aws/requests/ec2/get_console_output.rb +26 -0
  79. data/lib/fog/aws/requests/ec2/reboot_instances.rb +24 -0
  80. data/lib/fog/aws/requests/ec2/release_address.rb +50 -0
  81. data/lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb +32 -0
  82. data/lib/fog/aws/requests/ec2/run_instances.rb +134 -0
  83. data/lib/fog/aws/requests/ec2/terminate_instances.rb +80 -0
  84. data/lib/fog/aws/requests/s3/copy_object.rb +79 -0
  85. data/lib/fog/aws/requests/s3/delete_bucket.rb +53 -0
  86. data/lib/fog/aws/requests/s3/delete_object.rb +52 -0
  87. data/lib/fog/aws/requests/s3/get_bucket.rb +100 -0
  88. data/lib/fog/aws/requests/s3/get_bucket_location.rb +53 -0
  89. data/lib/fog/aws/requests/s3/get_object.rb +82 -0
  90. data/lib/fog/aws/requests/s3/get_request_payment.rb +53 -0
  91. data/lib/fog/aws/requests/s3/get_service.rb +58 -0
  92. data/lib/fog/aws/requests/s3/head_object.rb +61 -0
  93. data/lib/fog/aws/requests/s3/put_bucket.rb +69 -0
  94. data/lib/fog/aws/requests/s3/put_object.rb +76 -0
  95. data/lib/fog/aws/requests/s3/put_request_payment.rb +56 -0
  96. data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +31 -0
  97. data/lib/fog/aws/requests/simpledb/create_domain.rb +25 -0
  98. data/lib/fog/aws/requests/simpledb/delete_attributes.rb +34 -0
  99. data/lib/fog/aws/requests/simpledb/delete_domain.rb +25 -0
  100. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +30 -0
  101. data/lib/fog/aws/requests/simpledb/get_attributes.rb +35 -0
  102. data/lib/fog/aws/requests/simpledb/list_domains.rb +30 -0
  103. data/lib/fog/aws/requests/simpledb/put_attributes.rb +29 -0
  104. data/lib/fog/aws/requests/simpledb/select.rb +29 -0
  105. data/lib/fog/aws/s3.rb +157 -0
  106. data/lib/fog/aws/simpledb.rb +157 -0
  107. data/lib/fog/collection.rb +77 -0
  108. data/lib/fog/connection.rb +130 -0
  109. data/lib/fog/errors.rb +145 -0
  110. data/lib/fog/model.rb +72 -0
  111. data/lib/fog/parser.rb +30 -0
  112. data/lib/fog/response.rb +12 -0
  113. data/spec/aws/models/s3/bucket_spec.rb +130 -0
  114. data/spec/aws/models/s3/buckets_spec.rb +79 -0
  115. data/spec/aws/models/s3/object_spec.rb +121 -0
  116. data/spec/aws/models/s3/objects_spec.rb +112 -0
  117. data/spec/aws/models/s3/owner_spec.rb +18 -0
  118. data/spec/aws/requests/ec2/allocate_address_spec.rb +18 -0
  119. data/spec/aws/requests/ec2/associate_address_spec.rb +42 -0
  120. data/spec/aws/requests/ec2/attach_volume_spec.rb +53 -0
  121. data/spec/aws/requests/ec2/authorize_security_group_ingress_spec.rb +26 -0
  122. data/spec/aws/requests/ec2/create_key_pair_spec.rb +36 -0
  123. data/spec/aws/requests/ec2/create_security_group_spec.rb +34 -0
  124. data/spec/aws/requests/ec2/create_snapshot_spec.rb +37 -0
  125. data/spec/aws/requests/ec2/create_volume_spec.rb +23 -0
  126. data/spec/aws/requests/ec2/delete_key_pair_spec.rb +21 -0
  127. data/spec/aws/requests/ec2/delete_security_group_spec.rb +26 -0
  128. data/spec/aws/requests/ec2/delete_snapshot_spec.rb +35 -0
  129. data/spec/aws/requests/ec2/delete_volume_spec.rb +26 -0
  130. data/spec/aws/requests/ec2/describe_addresses_spec.rb +38 -0
  131. data/spec/aws/requests/ec2/describe_availability_zones_spec.rb +23 -0
  132. data/spec/aws/requests/ec2/describe_images_spec.rb +39 -0
  133. data/spec/aws/requests/ec2/describe_instances_spec.rb +86 -0
  134. data/spec/aws/requests/ec2/describe_key_pairs_spec.rb +42 -0
  135. data/spec/aws/requests/ec2/describe_regions_spec.rb +21 -0
  136. data/spec/aws/requests/ec2/describe_security_groups_spec.rb +51 -0
  137. data/spec/aws/requests/ec2/describe_snapshots_spec.rb +54 -0
  138. data/spec/aws/requests/ec2/describe_volumes_spec.rb +50 -0
  139. data/spec/aws/requests/ec2/detach_volume_spec.rb +43 -0
  140. data/spec/aws/requests/ec2/disassociate_address_spec.rb +35 -0
  141. data/spec/aws/requests/ec2/get_console_output_spec.rb +23 -0
  142. data/spec/aws/requests/ec2/reboot_instances_spec.rb +21 -0
  143. data/spec/aws/requests/ec2/release_address_spec.rb +26 -0
  144. data/spec/aws/requests/ec2/revoke_security_group_ingress_spec.rb +32 -0
  145. data/spec/aws/requests/ec2/run_instances_spec.rb +41 -0
  146. data/spec/aws/requests/ec2/terminate_instances_spec.rb +35 -0
  147. data/spec/aws/requests/s3/copy_object_spec.rb +62 -0
  148. data/spec/aws/requests/s3/delete_bucket_spec.rb +36 -0
  149. data/spec/aws/requests/s3/delete_object_spec.rb +37 -0
  150. data/spec/aws/requests/s3/get_bucket_location_spec.rb +30 -0
  151. data/spec/aws/requests/s3/get_bucket_spec.rb +110 -0
  152. data/spec/aws/requests/s3/get_object_spec.rb +45 -0
  153. data/spec/aws/requests/s3/get_request_payment_spec.rb +30 -0
  154. data/spec/aws/requests/s3/get_service_spec.rb +33 -0
  155. data/spec/aws/requests/s3/head_object_spec.rb +28 -0
  156. data/spec/aws/requests/s3/put_bucket_spec.rb +19 -0
  157. data/spec/aws/requests/s3/put_object_spec.rb +38 -0
  158. data/spec/aws/requests/s3/put_request_payment_spec.rb +29 -0
  159. data/spec/aws/requests/simpledb/batch_put_attributes_spec.rb +22 -0
  160. data/spec/aws/requests/simpledb/create_domain_spec.rb +21 -0
  161. data/spec/aws/requests/simpledb/delete_attributes_spec.rb +22 -0
  162. data/spec/aws/requests/simpledb/delete_domain_spec.rb +21 -0
  163. data/spec/aws/requests/simpledb/domain_metadata_spec.rb +43 -0
  164. data/spec/aws/requests/simpledb/get_attributes_spec.rb +31 -0
  165. data/spec/aws/requests/simpledb/list_domains_spec.rb +30 -0
  166. data/spec/aws/requests/simpledb/put_attributes_spec.rb +22 -0
  167. data/spec/aws/requests/simpledb/select_spec.rb +9 -0
  168. data/spec/lorem.txt +1 -0
  169. data/spec/spec.opts +1 -0
  170. data/spec/spec_helper.rb +66 -0
  171. metadata +309 -0
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
@@ -0,0 +1,6 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
6
+ spec/credentials.yml
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Wesley Beary
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,7 @@
1
+ = fog
2
+
3
+ Description goes here.
4
+
5
+ == Copyright
6
+
7
+ Copyright (c) 2009 Wesley Beary. See LICENSE for details.
@@ -0,0 +1,98 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ current_directory = File.dirname(__FILE__)
5
+ require "#{current_directory}/lib/fog"
6
+
7
+ begin
8
+ require 'jeweler'
9
+ Jeweler::Tasks.new do |gem|
10
+ gem.add_dependency('mime-types')
11
+ gem.add_dependency('nokogiri')
12
+ gem.add_dependency('ruby-hmac')
13
+ gem.name = "fog"
14
+ gem.description = %Q{brings clouds to you}
15
+ gem.summary = %Q{fog = clouds + you}
16
+ gem.email = "me@geemus.com"
17
+ gem.homepage = "http://github.com/geemus/fog"
18
+ gem.authors = ["Wesley Beary"]
19
+ gem.rubyforge_project = "fog"
20
+
21
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
22
+ end
23
+ rescue LoadError
24
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
25
+ end
26
+
27
+ require 'spec/rake/spectask'
28
+ Spec::Rake::SpecTask.new(:spec) do |spec|
29
+ spec.libs << 'lib' << 'spec'
30
+ spec.spec_opts = ['-c']
31
+ spec.spec_files = FileList['spec/**/*_spec.rb']
32
+ end
33
+
34
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
35
+ spec.libs << 'lib' << 'spec'
36
+ spec.pattern = 'spec/**/*_spec.rb'
37
+ spec.rcov = true
38
+ end
39
+
40
+ namespace :specs do
41
+
42
+ task :with_mocking do
43
+ Fog.mocking = true
44
+ Rake::Task[:spec].invoke
45
+ end
46
+
47
+ task :without_mocking do
48
+ Fog.mocking = true
49
+ Rake::Task[:spec].invoke
50
+ end
51
+
52
+ end
53
+
54
+ desc 'Run specs with and without mocking'
55
+ task :specs => %w[ specs:with_mocking specs:without_mocking ]
56
+
57
+ task :default => :specs
58
+
59
+ require 'rake/rdoctask'
60
+ Rake::RDocTask.new do |rdoc|
61
+ if File.exist?('VERSION.yml')
62
+ config = YAML.load(File.read('VERSION.yml'))
63
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
64
+ else
65
+ version = ""
66
+ end
67
+
68
+ rdoc.rdoc_dir = 'rdoc'
69
+ rdoc.title = "fog #{version}"
70
+ rdoc.rdoc_files.include('README*')
71
+ rdoc.rdoc_files.include('lib/**/*.rb')
72
+ end
73
+
74
+ begin
75
+ require 'rake/contrib/sshpublisher'
76
+ namespace :rubyforge do
77
+
78
+ desc "Release gem and RDoc documentation to RubyForge"
79
+ task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
80
+
81
+ namespace :release do
82
+ desc "Publish RDoc to RubyForge."
83
+ task :docs => [:rdoc] do
84
+ config = YAML.load(
85
+ File.read(File.expand_path('~/.rubyforge/user-config.yml'))
86
+ )
87
+
88
+ host = "#{config['username']}@rubyforge.org"
89
+ remote_dir = "/var/www/gforge-projects/fog/"
90
+ local_dir = 'rdoc'
91
+
92
+ Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
93
+ end
94
+ end
95
+ end
96
+ rescue LoadError
97
+ puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
98
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.3
@@ -0,0 +1,135 @@
1
+ require 'rubygems'
2
+ require 'aws/s3'
3
+ require 'benchmark'
4
+ require 'right_aws'
5
+
6
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'fog')
7
+
8
+ data = File.open(File.join(File.dirname(__FILE__), '..', 'spec', 'credentials.yml')).read
9
+ config = YAML.load(data)
10
+ fog = Fog::AWS::S3.new(
11
+ :aws_access_key_id => config['aws_access_key_id'],
12
+ :aws_secret_access_key => config['aws_secret_access_key']
13
+ )
14
+ raws = RightAws::S3Interface.new(
15
+ config['aws_access_key_id'],
16
+ config['aws_secret_access_key']
17
+ )
18
+ raws.logger.level = 3 # ERROR
19
+ awss3 = AWS::S3::Base.establish_connection!(
20
+ :access_key_id => config['aws_access_key_id'],
21
+ :secret_access_key => config['aws_secret_access_key'],
22
+ :persistent => true
23
+ )
24
+
25
+ TIMES = 10
26
+
27
+ Benchmark.bmbm(25) do |bench|
28
+ bench.report('fog.put_bucket') do
29
+ TIMES.times do |x|
30
+ fog.put_bucket("fogbench#{x}")
31
+ end
32
+ end
33
+ bench.report('raws.create_bucket') do
34
+ TIMES.times do |x|
35
+ raws.create_bucket("rawsbench#{x}")
36
+ end
37
+ end
38
+ bench.report('awss3::Bucket.create') do
39
+ TIMES.times do |x|
40
+ AWS::S3::Bucket.create("awss3bench#{x}")
41
+ end
42
+ end
43
+
44
+ bench.report('fog.put_object') do
45
+ TIMES.times do |x|
46
+ TIMES.times do |y|
47
+ file = File.open(File.dirname(__FILE__) + '/../spec/lorem.txt', 'r')
48
+ fog.put_object("fogbench#{x}", "lorem_#{y}", file)
49
+ end
50
+ end
51
+ end
52
+ bench.report('raws.put') do
53
+ TIMES.times do |x|
54
+ TIMES.times do |y|
55
+ file = File.open(File.dirname(__FILE__) + '/../spec/lorem.txt', 'r')
56
+ raws.put("rawsbench#{x}", "lorem_#{y}", file)
57
+ end
58
+ end
59
+ end
60
+ bench.report('awss3::S3Object.create') do
61
+ TIMES.times do |x|
62
+ TIMES.times do |y|
63
+ file = File.open(File.dirname(__FILE__) + '/../spec/lorem.txt', 'r')
64
+ AWS::S3::S3Object.create("lorem_#{y}", file, "awss3bench#{x}")
65
+ end
66
+ end
67
+ end
68
+
69
+ bench.report('fog.delete_object') do
70
+ TIMES.times do |x|
71
+ TIMES.times do |y|
72
+ fog.delete_object("fogbench#{x}", "lorem_#{y}")
73
+ end
74
+ end
75
+ end
76
+ bench.report('raws.delete') do
77
+ TIMES.times do |x|
78
+ TIMES.times do |y|
79
+ raws.delete("rawsbench#{x}", "lorem_#{y}")
80
+ end
81
+ end
82
+ end
83
+ bench.report('awss3::S3Object.delete') do
84
+ TIMES.times do |x|
85
+ TIMES.times do |y|
86
+ AWS::S3::S3Object.delete("lorem_#{y}", "awss3bench#{x}")
87
+ end
88
+ end
89
+ end
90
+
91
+ bench.report('fog.delete_bucket') do
92
+ TIMES.times do |x|
93
+ fog.delete_bucket("fogbench#{x}")
94
+ end
95
+ end
96
+ bench.report('raws.delete_bucket') do
97
+ TIMES.times do |x|
98
+ raws.delete_bucket("rawsbench#{x}")
99
+ end
100
+ end
101
+ bench.report('awss3::Bucket.delete') do
102
+ TIMES.times do |x|
103
+ AWS::S3::Bucket.delete("awss3bench#{x}")
104
+ end
105
+ end
106
+ end
107
+
108
+ # Rehearsal ------------------------------------------------------------
109
+ # fog.put_bucket 0.010000 0.000000 0.010000 ( 4.981517)
110
+ # raws.create_bucket 0.030000 0.040000 0.070000 ( 10.035029)
111
+ # awss3::Bucket.create 0.020000 0.020000 0.040000 ( 7.402162)
112
+ # fog.put_object 0.080000 0.080000 0.160000 ( 8.757062)
113
+ # raws.put 0.180000 0.080000 0.260000 ( 12.307371)
114
+ # awss3::S3Object.create 0.170000 0.070000 0.240000 ( 14.028887)
115
+ # fog.delete_object 0.080000 0.050000 0.130000 ( 5.481744)
116
+ # raws.delete 0.140000 0.070000 0.210000 ( 7.709116)
117
+ # awss3::S3Object.delete 0.100000 0.040000 0.140000 ( 5.533884)
118
+ # fog.delete_bucket 0.010000 0.010000 0.020000 ( 1.861061)
119
+ # raws.delete_bucket 0.030000 0.020000 0.050000 ( 3.146836)
120
+ # awss3::Bucket.delete 0.050000 0.010000 0.060000 ( 1.877064)
121
+ # --------------------------------------------------- total: 1.390000sec
122
+ #
123
+ # user system total real
124
+ # fog.put_bucket 0.010000 0.020000 0.030000 ( 1.949933)
125
+ # raws.create_bucket 0.030000 0.020000 0.050000 ( 4.766058)
126
+ # awss3::Bucket.create 0.010000 0.010000 0.020000 ( 2.093764)
127
+ # fog.put_object 0.090000 0.080000 0.170000 ( 9.352868)
128
+ # raws.put 0.150000 0.080000 0.230000 ( 12.981112)
129
+ # awss3::S3Object.create 0.130000 0.070000 0.200000 ( 14.442972)
130
+ # fog.delete_object 0.060000 0.060000 0.120000 ( 5.657752)
131
+ # raws.delete 0.130000 0.050000 0.180000 ( 6.598221)
132
+ # awss3::S3Object.delete 0.110000 0.030000 0.140000 ( 5.709799)
133
+ # fog.delete_bucket 0.010000 0.010000 0.020000 ( 1.864573)
134
+ # raws.delete_bucket 0.040000 0.030000 0.070000 ( 4.120572)
135
+ # awss3::Bucket.delete 0.020000 0.000000 0.020000 ( 1.947711)
@@ -0,0 +1,18 @@
1
+ require 'benchmark'
2
+
3
+ COUNT = 1000
4
+ data = "Content-Length: 100"
5
+ Benchmark.bmbm(25) do |bench|
6
+ bench.report('regex') do
7
+ COUNT.times do
8
+ header = data.match(/(.*):\s(.*)/)
9
+ "#{header[1]}: #{header[2]}"
10
+ end
11
+ end
12
+ bench.report('split') do
13
+ COUNT.times do
14
+ header = data.split(': ')
15
+ "#{header[0]}: #{header[1]}"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,43 @@
1
+ require 'benchmark'
2
+
3
+ def hash(options)
4
+ result = "#{options.delete(:name)}"
5
+ for key, value in options
6
+ result << " #{key} => #{value} "
7
+ end
8
+ result
9
+ end
10
+
11
+ def optional(name, a = nil, b = nil, c = nil)
12
+ result = "#{name}"
13
+ options = { :a => a, :b => b, :c => c }
14
+ for key, value in options
15
+ result << " #{key} => #{value} "
16
+ end
17
+ result
18
+ end
19
+
20
+ COUNT = 100_000
21
+ data = "Content-Length: 100"
22
+ Benchmark.bmbm(25) do |bench|
23
+ bench.report('hash') do
24
+ COUNT.times do
25
+ hash({:name => 'name'})
26
+ end
27
+ end
28
+ bench.report('optional') do
29
+ COUNT.times do
30
+ optional('name')
31
+ end
32
+ end
33
+ bench.report('hash_with_option') do
34
+ COUNT.times do
35
+ hash({:name => 'name', :a => 'a', :b => 'b', :c => 'c'})
36
+ end
37
+ end
38
+ bench.report('optional_with_option') do
39
+ COUNT.times do
40
+ optional('name', :a => 'a', :b => 'b', :c => 'c')
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,60 @@
1
+ require 'benchmark'
2
+ require 'rubygems'
3
+ require 'nokogiri'
4
+
5
+ class Parser < Nokogiri::XML::SAX::Document
6
+
7
+ attr_reader :response
8
+
9
+ def initialize
10
+ reset
11
+ end
12
+
13
+ def reset
14
+ @item = {}
15
+ @response = { :items => [] }
16
+ end
17
+
18
+ def characters(string)
19
+ @value << string.strip
20
+ end
21
+
22
+ def start_element(name, attrs = [])
23
+ @value = ''
24
+ end
25
+
26
+ def end_element(name)
27
+ case name
28
+ when 'item'
29
+ @response[:items] << @item
30
+ @item = {}
31
+ when 'key'
32
+ @item[:key] = @value
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ data = <<-DATA
39
+ <items>
40
+ <item>
41
+ <key>value</key>
42
+ </item>
43
+ </items>
44
+ DATA
45
+
46
+ COUNT = 100
47
+
48
+ Benchmark.bmbm(25) do |bench|
49
+ bench.report('parse') do
50
+ parser = Parser.new
51
+ Nokogiri::XML::SAX::Parser.new(parser).parse(data)
52
+ parser.response
53
+ end
54
+
55
+ bench.report('push') do
56
+ parser = Parser.new
57
+ Nokogiri::XML::SAX::PushParser.new(parser).write(data, true)
58
+ parser.response
59
+ end
60
+ end
@@ -0,0 +1,26 @@
1
+ require 'benchmark'
2
+
3
+ COUNT = 1_000_000
4
+ data = "Content-Length: 100\r\n"
5
+ Benchmark.bmbm(25) do |bench|
6
+ bench.report('chomp') do
7
+ COUNT.times do
8
+ data.chomp
9
+ end
10
+ end
11
+ bench.report('chop') do
12
+ COUNT.times do
13
+ data.chop
14
+ end
15
+ end
16
+ bench.report('strip') do
17
+ COUNT.times do
18
+ data.strip
19
+ end
20
+ end
21
+ bench.report('index') do
22
+ COUNT.times do
23
+ data[0..-3]
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,21 @@
1
+ module Fog
2
+
3
+ def self.mocking=(new_mocking)
4
+ old_mocking = @mocking
5
+ @mocking = new_mocking
6
+ unless old_mocking == new_mocking
7
+ self.reload
8
+ end
9
+ end
10
+
11
+ def self.mocking?
12
+ !!@mocking
13
+ end
14
+
15
+ def self.reload
16
+ load "#{File.dirname(__FILE__)}/fog/aws.rb"
17
+ end
18
+
19
+ end
20
+
21
+ Fog.reload