modesty 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. data/Gemfile +13 -0
  2. data/Gemfile.lock +18 -0
  3. data/LICENSE +21 -0
  4. data/README.md +121 -0
  5. data/Rakefile +29 -0
  6. data/VERSION +1 -0
  7. data/init.rb +1 -0
  8. data/lib/modesty.rb +26 -0
  9. data/lib/modesty/api.rb +14 -0
  10. data/lib/modesty/core_ext.rb +5 -0
  11. data/lib/modesty/core_ext/array.rb +21 -0
  12. data/lib/modesty/core_ext/fixnum.rb +5 -0
  13. data/lib/modesty/core_ext/hash.rb +39 -0
  14. data/lib/modesty/core_ext/string.rb +9 -0
  15. data/lib/modesty/core_ext/symbol.rb +33 -0
  16. data/lib/modesty/datastore.rb +51 -0
  17. data/lib/modesty/datastore/redis.rb +180 -0
  18. data/lib/modesty/experiment.rb +87 -0
  19. data/lib/modesty/experiment/base.rb +47 -0
  20. data/lib/modesty/experiment/builder.rb +48 -0
  21. data/lib/modesty/experiment/console.rb +4 -0
  22. data/lib/modesty/experiment/data.rb +75 -0
  23. data/lib/modesty/experiment/interface.rb +29 -0
  24. data/lib/modesty/experiment/significance.rb +376 -0
  25. data/lib/modesty/experiment/stats.rb +163 -0
  26. data/lib/modesty/frameworks/rails.rb +27 -0
  27. data/lib/modesty/identity.rb +32 -0
  28. data/lib/modesty/load.rb +80 -0
  29. data/lib/modesty/load/load_experiments.rb +14 -0
  30. data/lib/modesty/load/load_metrics.rb +17 -0
  31. data/lib/modesty/metric.rb +56 -0
  32. data/lib/modesty/metric/base.rb +38 -0
  33. data/lib/modesty/metric/builder.rb +23 -0
  34. data/lib/modesty/metric/data.rb +133 -0
  35. data/modesty.gemspec +192 -0
  36. data/spec/core_ext_spec.rb +17 -0
  37. data/spec/experiment_spec.rb +239 -0
  38. data/spec/identity_spec.rb +161 -0
  39. data/spec/load_spec.rb +87 -0
  40. data/spec/metric_spec.rb +176 -0
  41. data/spec/rails_spec.rb +48 -0
  42. data/spec/redis_spec.rb +29 -0
  43. data/spec/significance_spec.rb +147 -0
  44. data/spec/spec.opts +1 -0
  45. data/test/myapp/config/modesty.yml +9 -0
  46. data/test/myapp/modesty/experiments/cookbook.rb +4 -0
  47. data/test/myapp/modesty/metrics/kitchen_metrics.rb +9 -0
  48. data/test/myapp/modesty/metrics/stove/burner_metrics.rb +2 -0
  49. data/vendor/.piston.yml +8 -0
  50. data/vendor/mock_redis/.gitignore +2 -0
  51. data/vendor/mock_redis/README +8 -0
  52. data/vendor/mock_redis/lib/mock_redis.rb +10 -0
  53. data/vendor/mock_redis/lib/mock_redis/hash.rb +61 -0
  54. data/vendor/mock_redis/lib/mock_redis/list.rb +6 -0
  55. data/vendor/mock_redis/lib/mock_redis/misc.rb +69 -0
  56. data/vendor/mock_redis/lib/mock_redis/set.rb +108 -0
  57. data/vendor/mock_redis/lib/mock_redis/string.rb +32 -0
  58. data/vendor/redis-rb/.gitignore +8 -0
  59. data/vendor/redis-rb/LICENSE +20 -0
  60. data/vendor/redis-rb/README.markdown +129 -0
  61. data/vendor/redis-rb/Rakefile +155 -0
  62. data/vendor/redis-rb/benchmarking/logging.rb +62 -0
  63. data/vendor/redis-rb/benchmarking/pipeline.rb +51 -0
  64. data/vendor/redis-rb/benchmarking/speed.rb +21 -0
  65. data/vendor/redis-rb/benchmarking/suite.rb +24 -0
  66. data/vendor/redis-rb/benchmarking/thread_safety.rb +38 -0
  67. data/vendor/redis-rb/benchmarking/worker.rb +71 -0
  68. data/vendor/redis-rb/examples/basic.rb +15 -0
  69. data/vendor/redis-rb/examples/dist_redis.rb +43 -0
  70. data/vendor/redis-rb/examples/incr-decr.rb +17 -0
  71. data/vendor/redis-rb/examples/list.rb +26 -0
  72. data/vendor/redis-rb/examples/pubsub.rb +31 -0
  73. data/vendor/redis-rb/examples/sets.rb +36 -0
  74. data/vendor/redis-rb/examples/unicorn/config.ru +3 -0
  75. data/vendor/redis-rb/examples/unicorn/unicorn.rb +20 -0
  76. data/vendor/redis-rb/lib/redis.rb +676 -0
  77. data/vendor/redis-rb/lib/redis/client.rb +201 -0
  78. data/vendor/redis-rb/lib/redis/compat.rb +21 -0
  79. data/vendor/redis-rb/lib/redis/connection.rb +134 -0
  80. data/vendor/redis-rb/lib/redis/distributed.rb +526 -0
  81. data/vendor/redis-rb/lib/redis/hash_ring.rb +131 -0
  82. data/vendor/redis-rb/lib/redis/pipeline.rb +13 -0
  83. data/vendor/redis-rb/lib/redis/subscribe.rb +79 -0
  84. data/vendor/redis-rb/redis.gemspec +29 -0
  85. data/vendor/redis-rb/test/commands_on_hashes_test.rb +46 -0
  86. data/vendor/redis-rb/test/commands_on_lists_test.rb +50 -0
  87. data/vendor/redis-rb/test/commands_on_sets_test.rb +78 -0
  88. data/vendor/redis-rb/test/commands_on_sorted_sets_test.rb +109 -0
  89. data/vendor/redis-rb/test/commands_on_strings_test.rb +70 -0
  90. data/vendor/redis-rb/test/commands_on_value_types_test.rb +88 -0
  91. data/vendor/redis-rb/test/connection_handling_test.rb +87 -0
  92. data/vendor/redis-rb/test/db/.gitignore +1 -0
  93. data/vendor/redis-rb/test/distributd_key_tags_test.rb +53 -0
  94. data/vendor/redis-rb/test/distributed_blocking_commands_test.rb +54 -0
  95. data/vendor/redis-rb/test/distributed_commands_on_hashes_test.rb +12 -0
  96. data/vendor/redis-rb/test/distributed_commands_on_lists_test.rb +18 -0
  97. data/vendor/redis-rb/test/distributed_commands_on_sets_test.rb +85 -0
  98. data/vendor/redis-rb/test/distributed_commands_on_strings_test.rb +50 -0
  99. data/vendor/redis-rb/test/distributed_commands_on_value_types_test.rb +73 -0
  100. data/vendor/redis-rb/test/distributed_commands_requiring_clustering_test.rb +141 -0
  101. data/vendor/redis-rb/test/distributed_connection_handling_test.rb +25 -0
  102. data/vendor/redis-rb/test/distributed_internals_test.rb +18 -0
  103. data/vendor/redis-rb/test/distributed_persistence_control_commands_test.rb +24 -0
  104. data/vendor/redis-rb/test/distributed_publish_subscribe_test.rb +90 -0
  105. data/vendor/redis-rb/test/distributed_remote_server_control_commands_test.rb +31 -0
  106. data/vendor/redis-rb/test/distributed_sorting_test.rb +21 -0
  107. data/vendor/redis-rb/test/distributed_test.rb +60 -0
  108. data/vendor/redis-rb/test/distributed_transactions_test.rb +34 -0
  109. data/vendor/redis-rb/test/encoding_test.rb +16 -0
  110. data/vendor/redis-rb/test/helper.rb +86 -0
  111. data/vendor/redis-rb/test/internals_test.rb +27 -0
  112. data/vendor/redis-rb/test/lint/hashes.rb +90 -0
  113. data/vendor/redis-rb/test/lint/internals.rb +53 -0
  114. data/vendor/redis-rb/test/lint/lists.rb +93 -0
  115. data/vendor/redis-rb/test/lint/sets.rb +66 -0
  116. data/vendor/redis-rb/test/lint/sorted_sets.rb +132 -0
  117. data/vendor/redis-rb/test/lint/strings.rb +98 -0
  118. data/vendor/redis-rb/test/lint/value_types.rb +84 -0
  119. data/vendor/redis-rb/test/persistence_control_commands_test.rb +22 -0
  120. data/vendor/redis-rb/test/pipelining_commands_test.rb +78 -0
  121. data/vendor/redis-rb/test/publish_subscribe_test.rb +151 -0
  122. data/vendor/redis-rb/test/redis_mock.rb +64 -0
  123. data/vendor/redis-rb/test/remote_server_control_commands_test.rb +56 -0
  124. data/vendor/redis-rb/test/sorting_test.rb +44 -0
  125. data/vendor/redis-rb/test/test.conf +8 -0
  126. data/vendor/redis-rb/test/thread_safety_test.rb +34 -0
  127. data/vendor/redis-rb/test/transactions_test.rb +91 -0
  128. data/vendor/redis-rb/test/unknown_commands_test.rb +14 -0
  129. data/vendor/redis-rb/test/url_param_test.rb +52 -0
  130. metadata +277 -0
@@ -0,0 +1,14 @@
1
+ # encoding: UTF-8
2
+
3
+ require File.expand_path("./helper", File.dirname(__FILE__))
4
+
5
+ setup do
6
+ init Redis.new(OPTIONS)
7
+ end
8
+
9
+ test "should try to work" do |r|
10
+ assert_raise RuntimeError do
11
+ r.not_yet_implemented_command
12
+ end
13
+ end
14
+
@@ -0,0 +1,52 @@
1
+ # encoding: UTF-8
2
+
3
+ require File.expand_path("./helper", File.dirname(__FILE__))
4
+
5
+ test "URL defaults to 127.0.0.1:6379" do
6
+ redis = Redis.connect
7
+
8
+ assert "127.0.0.1" == redis.client.host
9
+ assert 6379 == redis.client.port
10
+ assert 0 == redis.client.db
11
+ assert nil == redis.client.password
12
+ end
13
+
14
+ test "allows to pass in a URL" do
15
+ redis = Redis.connect :url => "redis://:secr3t@foo.com:999/2"
16
+
17
+ assert "foo.com" == redis.client.host
18
+ assert 999 == redis.client.port
19
+ assert 2 == redis.client.db
20
+ assert "secr3t" == redis.client.password
21
+ end
22
+
23
+ test "overrides URL if another connection option is passed" do
24
+ redis = Redis.connect :url => "redis://:secr3t@foo.com:999/2", :port => 1000
25
+
26
+ assert "foo.com" == redis.client.host
27
+ assert 1000 == redis.client.port
28
+ assert 2 == redis.client.db
29
+ assert "secr3t" == redis.client.password
30
+ end
31
+
32
+ test "does not modify the passed options" do
33
+ options = { :url => "redis://:secr3t@foo.com:999/2" }
34
+
35
+ redis = Redis.connect(options)
36
+
37
+ assert({ :url => "redis://:secr3t@foo.com:999/2" } == options)
38
+ end
39
+
40
+ test "uses REDIS_URL over default if available" do
41
+ ENV["REDIS_URL"] = "redis://:secr3t@foo.com:999/2"
42
+
43
+ redis = Redis.connect
44
+
45
+ assert "foo.com" == redis.client.host
46
+ assert 999 == redis.client.port
47
+ assert 2 == redis.client.db
48
+ assert "secr3t" == redis.client.password
49
+
50
+ ENV.delete("REDIS_URL")
51
+ end
52
+
metadata ADDED
@@ -0,0 +1,277 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: modesty
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Jay Adkisson
14
+ - Kevin Ball
15
+ - "Kristj\xC3\xA1n P\xC3\xA9tursson"
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain: []
19
+
20
+ date: 2011-04-26 00:00:00 -05:00
21
+ default_executable:
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
24
+ type: :runtime
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 3
31
+ segments:
32
+ - 0
33
+ version: "0"
34
+ name: redis
35
+ version_requirements: *id001
36
+ prerelease: false
37
+ - !ruby/object:Gem::Dependency
38
+ type: :development
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
48
+ name: rake
49
+ version_requirements: *id002
50
+ prerelease: false
51
+ - !ruby/object:Gem::Dependency
52
+ type: :development
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ name: jeweler
63
+ version_requirements: *id003
64
+ prerelease: false
65
+ - !ruby/object:Gem::Dependency
66
+ type: :development
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ name: rspec
77
+ version_requirements: *id004
78
+ prerelease: false
79
+ - !ruby/object:Gem::Dependency
80
+ type: :runtime
81
+ requirement: &id005 !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 0
89
+ version: "0"
90
+ name: redis
91
+ version_requirements: *id005
92
+ prerelease: false
93
+ description: Modesty is simple and scalable split testing and event tracking framework. It was inspired by assaf's Vanity (github.com/assaf/vanity).
94
+ email: jay@causes.com
95
+ executables: []
96
+
97
+ extensions: []
98
+
99
+ extra_rdoc_files:
100
+ - LICENSE
101
+ - README.md
102
+ files:
103
+ - Gemfile
104
+ - Gemfile.lock
105
+ - LICENSE
106
+ - README.md
107
+ - Rakefile
108
+ - VERSION
109
+ - init.rb
110
+ - lib/modesty.rb
111
+ - lib/modesty/api.rb
112
+ - lib/modesty/core_ext.rb
113
+ - lib/modesty/core_ext/array.rb
114
+ - lib/modesty/core_ext/fixnum.rb
115
+ - lib/modesty/core_ext/hash.rb
116
+ - lib/modesty/core_ext/string.rb
117
+ - lib/modesty/core_ext/symbol.rb
118
+ - lib/modesty/datastore.rb
119
+ - lib/modesty/datastore/redis.rb
120
+ - lib/modesty/experiment.rb
121
+ - lib/modesty/experiment/base.rb
122
+ - lib/modesty/experiment/builder.rb
123
+ - lib/modesty/experiment/console.rb
124
+ - lib/modesty/experiment/data.rb
125
+ - lib/modesty/experiment/interface.rb
126
+ - lib/modesty/experiment/significance.rb
127
+ - lib/modesty/experiment/stats.rb
128
+ - lib/modesty/frameworks/rails.rb
129
+ - lib/modesty/identity.rb
130
+ - lib/modesty/load.rb
131
+ - lib/modesty/load/load_experiments.rb
132
+ - lib/modesty/load/load_metrics.rb
133
+ - lib/modesty/metric.rb
134
+ - lib/modesty/metric/base.rb
135
+ - lib/modesty/metric/builder.rb
136
+ - lib/modesty/metric/data.rb
137
+ - modesty.gemspec
138
+ - spec/core_ext_spec.rb
139
+ - spec/experiment_spec.rb
140
+ - spec/identity_spec.rb
141
+ - spec/load_spec.rb
142
+ - spec/metric_spec.rb
143
+ - spec/rails_spec.rb
144
+ - spec/redis_spec.rb
145
+ - spec/significance_spec.rb
146
+ - spec/spec.opts
147
+ - test/myapp/config/modesty.yml
148
+ - test/myapp/modesty/experiments/cookbook.rb
149
+ - test/myapp/modesty/metrics/kitchen_metrics.rb
150
+ - test/myapp/modesty/metrics/stove/burner_metrics.rb
151
+ - vendor/.piston.yml
152
+ - vendor/mock_redis/.gitignore
153
+ - vendor/mock_redis/README
154
+ - vendor/mock_redis/lib/mock_redis.rb
155
+ - vendor/mock_redis/lib/mock_redis/hash.rb
156
+ - vendor/mock_redis/lib/mock_redis/list.rb
157
+ - vendor/mock_redis/lib/mock_redis/misc.rb
158
+ - vendor/mock_redis/lib/mock_redis/set.rb
159
+ - vendor/mock_redis/lib/mock_redis/string.rb
160
+ - vendor/redis-rb/.gitignore
161
+ - vendor/redis-rb/LICENSE
162
+ - vendor/redis-rb/README.markdown
163
+ - vendor/redis-rb/Rakefile
164
+ - vendor/redis-rb/benchmarking/logging.rb
165
+ - vendor/redis-rb/benchmarking/pipeline.rb
166
+ - vendor/redis-rb/benchmarking/speed.rb
167
+ - vendor/redis-rb/benchmarking/suite.rb
168
+ - vendor/redis-rb/benchmarking/thread_safety.rb
169
+ - vendor/redis-rb/benchmarking/worker.rb
170
+ - vendor/redis-rb/examples/basic.rb
171
+ - vendor/redis-rb/examples/dist_redis.rb
172
+ - vendor/redis-rb/examples/incr-decr.rb
173
+ - vendor/redis-rb/examples/list.rb
174
+ - vendor/redis-rb/examples/pubsub.rb
175
+ - vendor/redis-rb/examples/sets.rb
176
+ - vendor/redis-rb/examples/unicorn/config.ru
177
+ - vendor/redis-rb/examples/unicorn/unicorn.rb
178
+ - vendor/redis-rb/lib/redis.rb
179
+ - vendor/redis-rb/lib/redis/client.rb
180
+ - vendor/redis-rb/lib/redis/compat.rb
181
+ - vendor/redis-rb/lib/redis/connection.rb
182
+ - vendor/redis-rb/lib/redis/distributed.rb
183
+ - vendor/redis-rb/lib/redis/hash_ring.rb
184
+ - vendor/redis-rb/lib/redis/pipeline.rb
185
+ - vendor/redis-rb/lib/redis/subscribe.rb
186
+ - vendor/redis-rb/redis.gemspec
187
+ - vendor/redis-rb/test/commands_on_hashes_test.rb
188
+ - vendor/redis-rb/test/commands_on_lists_test.rb
189
+ - vendor/redis-rb/test/commands_on_sets_test.rb
190
+ - vendor/redis-rb/test/commands_on_sorted_sets_test.rb
191
+ - vendor/redis-rb/test/commands_on_strings_test.rb
192
+ - vendor/redis-rb/test/commands_on_value_types_test.rb
193
+ - vendor/redis-rb/test/connection_handling_test.rb
194
+ - vendor/redis-rb/test/db/.gitignore
195
+ - vendor/redis-rb/test/distributd_key_tags_test.rb
196
+ - vendor/redis-rb/test/distributed_blocking_commands_test.rb
197
+ - vendor/redis-rb/test/distributed_commands_on_hashes_test.rb
198
+ - vendor/redis-rb/test/distributed_commands_on_lists_test.rb
199
+ - vendor/redis-rb/test/distributed_commands_on_sets_test.rb
200
+ - vendor/redis-rb/test/distributed_commands_on_strings_test.rb
201
+ - vendor/redis-rb/test/distributed_commands_on_value_types_test.rb
202
+ - vendor/redis-rb/test/distributed_commands_requiring_clustering_test.rb
203
+ - vendor/redis-rb/test/distributed_connection_handling_test.rb
204
+ - vendor/redis-rb/test/distributed_internals_test.rb
205
+ - vendor/redis-rb/test/distributed_persistence_control_commands_test.rb
206
+ - vendor/redis-rb/test/distributed_publish_subscribe_test.rb
207
+ - vendor/redis-rb/test/distributed_remote_server_control_commands_test.rb
208
+ - vendor/redis-rb/test/distributed_sorting_test.rb
209
+ - vendor/redis-rb/test/distributed_test.rb
210
+ - vendor/redis-rb/test/distributed_transactions_test.rb
211
+ - vendor/redis-rb/test/encoding_test.rb
212
+ - vendor/redis-rb/test/helper.rb
213
+ - vendor/redis-rb/test/internals_test.rb
214
+ - vendor/redis-rb/test/lint/hashes.rb
215
+ - vendor/redis-rb/test/lint/internals.rb
216
+ - vendor/redis-rb/test/lint/lists.rb
217
+ - vendor/redis-rb/test/lint/sets.rb
218
+ - vendor/redis-rb/test/lint/sorted_sets.rb
219
+ - vendor/redis-rb/test/lint/strings.rb
220
+ - vendor/redis-rb/test/lint/value_types.rb
221
+ - vendor/redis-rb/test/persistence_control_commands_test.rb
222
+ - vendor/redis-rb/test/pipelining_commands_test.rb
223
+ - vendor/redis-rb/test/publish_subscribe_test.rb
224
+ - vendor/redis-rb/test/redis_mock.rb
225
+ - vendor/redis-rb/test/remote_server_control_commands_test.rb
226
+ - vendor/redis-rb/test/sorting_test.rb
227
+ - vendor/redis-rb/test/test.conf
228
+ - vendor/redis-rb/test/thread_safety_test.rb
229
+ - vendor/redis-rb/test/transactions_test.rb
230
+ - vendor/redis-rb/test/unknown_commands_test.rb
231
+ - vendor/redis-rb/test/url_param_test.rb
232
+ has_rdoc: true
233
+ homepage: http://github.com/causes/modesty
234
+ licenses: []
235
+
236
+ post_install_message:
237
+ rdoc_options: []
238
+
239
+ require_paths:
240
+ - lib
241
+ required_ruby_version: !ruby/object:Gem::Requirement
242
+ none: false
243
+ requirements:
244
+ - - ">="
245
+ - !ruby/object:Gem::Version
246
+ hash: 3
247
+ segments:
248
+ - 0
249
+ version: "0"
250
+ required_rubygems_version: !ruby/object:Gem::Requirement
251
+ none: false
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ hash: 3
256
+ segments:
257
+ - 0
258
+ version: "0"
259
+ requirements: []
260
+
261
+ rubyforge_project:
262
+ rubygems_version: 1.6.2
263
+ signing_key:
264
+ specification_version: 3
265
+ summary: Modesty is simple and scalable split testing and event tracking framework.
266
+ test_files:
267
+ - spec/core_ext_spec.rb
268
+ - spec/experiment_spec.rb
269
+ - spec/identity_spec.rb
270
+ - spec/load_spec.rb
271
+ - spec/metric_spec.rb
272
+ - spec/rails_spec.rb
273
+ - spec/redis_spec.rb
274
+ - spec/significance_spec.rb
275
+ - test/myapp/modesty/experiments/cookbook.rb
276
+ - test/myapp/modesty/metrics/kitchen_metrics.rb
277
+ - test/myapp/modesty/metrics/stove/burner_metrics.rb