cloudwow-not_relational 0.1.0

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 (78) hide show
  1. data/README.rdoc +7 -0
  2. data/VERSION.yml +4 -0
  3. data/lib/not_relational/acts_as_not_relational_application.rb +11 -0
  4. data/lib/not_relational/and_condition.rb +10 -0
  5. data/lib/not_relational/attribute_range.rb +57 -0
  6. data/lib/not_relational/berkeley_repository.rb +48 -0
  7. data/lib/not_relational/configuration.rb +111 -0
  8. data/lib/not_relational/crypto.rb +58 -0
  9. data/lib/not_relational/domain_model.rb +855 -0
  10. data/lib/not_relational/domain_model_cache_item.rb +14 -0
  11. data/lib/not_relational/equals_condition.rb +18 -0
  12. data/lib/not_relational/geo.rb +188 -0
  13. data/lib/not_relational/index_description.rb +41 -0
  14. data/lib/not_relational/is_null_transform.rb +16 -0
  15. data/lib/not_relational/lazy_loading_text.rb +29 -0
  16. data/lib/not_relational/local_storage.rb +38 -0
  17. data/lib/not_relational/memcache_repository.rb +91 -0
  18. data/lib/not_relational/memory_repository.rb +273 -0
  19. data/lib/not_relational/memory_storage.rb +33 -0
  20. data/lib/not_relational/or_condition.rb +53 -0
  21. data/lib/not_relational/property_description.rb +102 -0
  22. data/lib/not_relational/query_string_auth_generator.rb +166 -0
  23. data/lib/not_relational/reference.rb +28 -0
  24. data/lib/not_relational/repository.rb +419 -0
  25. data/lib/not_relational/repository_factory.rb +67 -0
  26. data/lib/not_relational/repository_interface.rb +48 -0
  27. data/lib/not_relational/s3.rb +581 -0
  28. data/lib/not_relational/sdb_formatter.rb +119 -0
  29. data/lib/not_relational/sdb_monkey_patch.rb +47 -0
  30. data/lib/not_relational/starts_with_condition.rb +21 -0
  31. data/lib/not_relational/storage.rb +223 -0
  32. data/lib/not_relational/tag_cloud.rb +56 -0
  33. data/lib/not_relational/tracker_description.rb +26 -0
  34. data/lib/not_relational/uuid.rb +285 -0
  35. data/lib/not_relational.rb +17 -0
  36. data/test/models/album.rb +206 -0
  37. data/test/models/blurb.rb +65 -0
  38. data/test/models/blurb_wording.rb +18 -0
  39. data/test/models/comment.rb +27 -0
  40. data/test/models/error.rb +14 -0
  41. data/test/models/friend.rb +27 -0
  42. data/test/models/friend_request.rb +34 -0
  43. data/test/models/geo.rb +186 -0
  44. data/test/models/group.rb +283 -0
  45. data/test/models/language.rb +16 -0
  46. data/test/models/media_file.rb +32 -0
  47. data/test/models/media_item.rb +258 -0
  48. data/test/models/message.rb +26 -0
  49. data/test/models/node.rb +282 -0
  50. data/test/models/outgoing_email.rb +26 -0
  51. data/test/models/page_view_detail.rb +15 -0
  52. data/test/models/page_view_summary.rb +15 -0
  53. data/test/models/place.rb +103 -0
  54. data/test/models/rating.rb +21 -0
  55. data/test/models/tag.rb +89 -0
  56. data/test/models/user.rb +289 -0
  57. data/test/models/user_event.rb +67 -0
  58. data/test/models/weblab.rb +17 -0
  59. data/test/unit_tests/album_test.rb +181 -0
  60. data/test/unit_tests/bdb_test.rb +34 -0
  61. data/test/unit_tests/blurb_test.rb +110 -0
  62. data/test/unit_tests/comment_test.rb +42 -0
  63. data/test/unit_tests/composite_key_test.rb +75 -0
  64. data/test/unit_tests/enum_test.rb +32 -0
  65. data/test/unit_tests/group_test.rb +214 -0
  66. data/test/unit_tests/mediaitem_test.rb +412 -0
  67. data/test/unit_tests/memcache_repository_test.rb +40 -0
  68. data/test/unit_tests/memory_repository_test.rb +69 -0
  69. data/test/unit_tests/node_test.rb +490 -0
  70. data/test/unit_tests/place_test.rb +219 -0
  71. data/test/unit_tests/reference_set_test.rb +66 -0
  72. data/test/unit_tests/repository_factory_test.rb +16 -0
  73. data/test/unit_tests/tag_test.rb +86 -0
  74. data/test/unit_tests/user_test.rb +102 -0
  75. data/test/unit_tests/uuid.state +3 -0
  76. data/test/utils/create_sdb_domains.rb +44 -0
  77. data/test/utils/whack_domains.rb +32 -0
  78. metadata +134 -0
@@ -0,0 +1,412 @@
1
+
2
+ require 'rubygems'
3
+ require 'test/unit'
4
+ $:.push(File.dirname(__FILE__) +'/../../test/models')
5
+ $:.push(File.dirname(__FILE__) +'/../../lib/not_relational')
6
+ require File.dirname(__FILE__) +'/../../lib/not_relational/domain_model.rb'
7
+ require File.dirname(__FILE__) +'/../../lib/not_relational/attribute_range.rb'
8
+ require File.dirname(__FILE__) +'/../../lib/not_relational/repository.rb'
9
+ require File.dirname(__FILE__) +'/../../lib/not_relational/memory_repository.rb'
10
+ require File.dirname(__FILE__) +'/../../test/models/node.rb'
11
+ require File.dirname(__FILE__) +'/../../test/models/user.rb'
12
+ require File.dirname(__FILE__) +'/../../test/models/place.rb'
13
+ require File.dirname(__FILE__) +'/../../test/models/album.rb'
14
+ require File.dirname(__FILE__) +'/../../test/models/media_item.rb'
15
+ require File.dirname(__FILE__) +'/../../test/models/media_file.rb'
16
+ require File.dirname(__FILE__) +'/../../test/models/tag.rb'
17
+ require File.dirname(__FILE__) +'/../../test/models/rating.rb'
18
+ require File.dirname(__FILE__) +'/../../test/models/comment.rb'
19
+
20
+ ENV['not_relational_ENV']='testing'
21
+
22
+ class MediaItemTest < Test::Unit::TestCase
23
+ def MediaItemTest.set_up
24
+ Node.find(:all).each do |node|
25
+ node.destroy
26
+ end
27
+ Place.find(:all).each do |node|
28
+ node.destroy
29
+ end
30
+ Album.find(:all).each do |node|
31
+ node.destroy
32
+ end
33
+ Mediaitem.find(:all).each do |node|
34
+ node.destroy
35
+ end
36
+ Mediafile.find(:all).each do |node|
37
+ node.destroy
38
+ end
39
+ User.find(:all).each do |node|
40
+ node.destroy
41
+ end
42
+ Tag.find(:all).each do |node|
43
+ node.destroy
44
+ end
45
+ Rating.find(:all).each do |node|
46
+ node.destroy
47
+ end
48
+ Comment.find(:all).each do |node|
49
+ node.destroy
50
+ end
51
+
52
+ end
53
+ # def test_destroy_dependent_tags
54
+ # MediaItemTest.set_up
55
+ # item=Mediaitem.new
56
+ # item.save
57
+ # tag=Tag.new
58
+ # tag.created_time=Time.now.gmtime
59
+ # tag.mediaitem_id=item.id
60
+ # tag.save
61
+ #
62
+ # tag=Tag.new
63
+ # tag.mediaitem_id=item.id
64
+ # tag.created_time=Time.now.gmtime
65
+ # tag.save
66
+ #
67
+ # tag=Tag.new
68
+ # tag.save
69
+ #
70
+ # NotRelational::RepositoryFactory.instance.pause()
71
+ # all_tags=Tag.find(:all)
72
+ # assert(all_tags.length==3)
73
+ # item.destroy
74
+ # NotRelational::RepositoryFactory.instance.pause()
75
+ # all_tags=Tag.find(:all)
76
+ # assert(all_tags.length==1)
77
+ # end
78
+ # def test_destroy_dependent_ratings
79
+ # MediaItemTest.set_up
80
+ # item=Mediaitem.new
81
+ # item.save
82
+ # tag=Rating.new
83
+ # tag.mediaitem_id=item.id
84
+ # tag.save
85
+ #
86
+ # tag=Rating.new
87
+ # tag.mediaitem_id=item.id
88
+ # tag.save
89
+ #
90
+ # tag=Rating.new
91
+ # tag.save
92
+ # NotRelational::RepositoryFactory.instance.pause()
93
+ #
94
+ # all_tags=Rating.find(:all)
95
+ # assert(all_tags.length==3)
96
+ # item.destroy
97
+ # NotRelational::RepositoryFactory.instance.pause()
98
+ # all_tags=Rating.find(:all)
99
+ # assert(all_tags.length==1)
100
+ # end
101
+ # def test_destroy_dependent_comments
102
+ # MediaItemTest.set_up
103
+ # item=Mediaitem.new
104
+ # item.save
105
+ # tag=Comment.new
106
+ # tag.mediaitem_id=item.id
107
+ # tag.save
108
+ #
109
+ # tag=Comment.new
110
+ # tag.mediaitem_id=item.id
111
+ # tag.save
112
+ #
113
+ # tag=Comment.new
114
+ # tag.save
115
+ #
116
+ # NotRelational::RepositoryFactory.instance.pause()
117
+ # all_tags=Comment.find(:all)
118
+ # assert_equal(3,all_tags.length)
119
+ # item.destroy
120
+ # NotRelational::RepositoryFactory.instance.pause()
121
+ # all_tags=Comment.find(:all)
122
+ # assert_equal(1,all_tags.length)
123
+ # end
124
+ # def test_recent
125
+ # MediaItemTest.set_up
126
+ # items=[]
127
+ # (0..5).each do |i|
128
+ # item=Mediaitem.new
129
+ # item.created_time=Time.now+i*100
130
+ # item.save
131
+ # items<<item
132
+ # end
133
+ #
134
+ # found=Mediaitem.recent(3)
135
+ # assert_equal(3,found.length)
136
+ # assert_equal(items[5].id,found[0].id)
137
+ # assert_equal(items[4].id,found[1].id)
138
+ # assert_equal(items[3].id,found[2].id)
139
+ #
140
+ # found=Mediaitem.recent(20)
141
+ #
142
+ # assert_equal(6,found.length)
143
+ # assert_equal(items[5].id,found[0].id)
144
+ # assert_equal(items[4].id,found[1].id)
145
+ # assert_equal(items[3].id,found[2].id)
146
+ #
147
+ # end
148
+ def test_recent_video
149
+ MediaItemTest.set_up
150
+ items=[]
151
+ (0..5).each do |i|
152
+ item=Mediaitem.new
153
+ item.created_time=Time.now+i*100
154
+ item.HasVideo=true
155
+ item.is_private=false
156
+ assert(item.is_private==false)
157
+ item.save
158
+ items<<item
159
+
160
+ item=Mediaitem.new
161
+ item.created_time=Time.now+i*100
162
+ item.HasAudio=true
163
+ item.is_private=false
164
+ item.save
165
+ items<<item
166
+
167
+ item=Mediaitem.new
168
+ item.created_time=Time.now+i*100
169
+ item.HasImage=true
170
+ item.is_private=false
171
+ item.save
172
+ items<<item
173
+ end
174
+
175
+ found=Mediaitem.recent_video(3)
176
+ assert_equal(3,found.length)
177
+ assert_equal(items[15].id,found[0].id)
178
+ assert_equal(items[12].id,found[1].id)
179
+ assert_equal(items[9].id,found[2].id)
180
+
181
+ found=Mediaitem.recent_audio(3)
182
+ assert_equal(3,found.length)
183
+ assert_equal(items[16].id,found[0].id)
184
+ assert_equal(items[13].id,found[1].id)
185
+ assert_equal(items[10].id,found[2].id)
186
+ NotRelational::RepositoryFactory.instance.pause()
187
+ found=Mediaitem.recent_images(3)
188
+ assert_equal(3,found.length)
189
+ assert_equal(items[17].id,found[0].id)
190
+ assert_equal(items[14].id,found[1].id)
191
+ assert_equal(items[11].id,found[2].id)
192
+
193
+ end
194
+ # def test_mediafiles
195
+ # MediaItemTest.set_up
196
+ # item=Mediaitem.new
197
+ # item.save
198
+ #
199
+ # thumb_file=Mediafile.new
200
+ # thumb_file.mediaitem_id=item.id
201
+ # thumb_file.width=100
202
+ # thumb_file.height=80
203
+ # thumb_file.save
204
+ #
205
+ # big_file=Mediafile.new
206
+ # big_file.mediaitem_id=item.id
207
+ # big_file.width=1200
208
+ # big_file.height=1000
209
+ # big_file.save
210
+ #
211
+ # found=item.mediafiles
212
+ #
213
+ # assert_not_nil found
214
+ # assert_equal(2,found.length)
215
+ # end
216
+ #
217
+ #
218
+ # def test_thumbfile
219
+ # MediaItemTest.set_up
220
+ # item=Mediaitem.new
221
+ # item.save
222
+ #
223
+ # tiny_thumb_file=Mediafile.new
224
+ # tiny_thumb_file.mediaitem_id=item.id
225
+ # tiny_thumb_file.width=50
226
+ # tiny_thumb_file.height=60
227
+ # tiny_thumb_file.mimeType="image/gif"
228
+ # tiny_thumb_file.save
229
+ #
230
+ # thumb_file=Mediafile.new
231
+ # thumb_file.mediaitem_id=item.id
232
+ # thumb_file.width=120
233
+ # thumb_file.height=80
234
+ # thumb_file.mimeType="image/gif"
235
+ # thumb_file.save
236
+ #
237
+ # square_thumbfile=Mediafile.new
238
+ # square_thumbfile.mediaitem_id=item.id
239
+ # square_thumbfile.width=100
240
+ # square_thumbfile.height=100
241
+ # square_thumbfile.mimeType="image/png"
242
+ # square_thumbfile.save
243
+ #
244
+ # big_thumbfile=Mediafile.new
245
+ # big_thumbfile.mediaitem_id=item.id
246
+ # big_thumbfile.width=200
247
+ # big_thumbfile.height=200
248
+ # big_thumbfile.mimeType="image/png"
249
+ # big_thumbfile.save
250
+ #
251
+ # big_file=Mediafile.new
252
+ # big_file.mediaitem_id=item.id
253
+ # big_file.width=1200
254
+ # big_file.height=1000
255
+ # big_file.mimeType="image/jpeg"
256
+ # big_file.save
257
+ #
258
+ # big640_file=Mediafile.new
259
+ # big640_file.mediaitem_id=item.id
260
+ # big640_file.width=640
261
+ # big640_file.height=480
262
+ # big640_file.mimeType="image/jpeg"
263
+ # big640_file.save
264
+ #
265
+ # found=item.thumbfile
266
+ # assert_not_nil found
267
+ # assert_equal(thumb_file.id,found.id)
268
+ #
269
+ # found=item.square_thumbfile
270
+ # assert_not_nil found
271
+ # assert_equal(square_thumbfile.id,found.id)
272
+ #
273
+ # found=item.tiny_thumbfile
274
+ # assert_not_nil found
275
+ # assert_equal(tiny_thumb_file.id,found.id)
276
+ #
277
+ # found=item.big_thumbfile
278
+ # assert_not_nil found
279
+ # assert_equal(big_thumbfile.id,found.id)
280
+ #
281
+ # found=item.file640
282
+ # assert_not_nil found
283
+ # assert_equal(big640_file.id,found.id)
284
+ #
285
+ # found=item.fileMaxSize
286
+ # assert_not_nil found
287
+ # assert_equal(big_file.id,found.id)
288
+ #
289
+ #
290
+ # found=item.large_files
291
+ # assert_not_nil found
292
+ # assert_equal(2,found.length)
293
+ #
294
+ # found=item.get_file_by_size_string('640x480')
295
+ # assert_not_nil found
296
+ # assert_equal(big640_file.id,found.id)
297
+ #
298
+ # found=item.get_file_by_size_string('1200x1000')
299
+ # assert_not_nil found
300
+ # assert_equal(big_file.id,found.id)
301
+ #
302
+ # end
303
+ #
304
+ #
305
+ #
306
+ # def test_get_tag_cloud
307
+ # MediaItemTest.set_up
308
+ # item=Mediaitem.new
309
+ # item.save
310
+ #
311
+ # tag=Tag.new
312
+ # tag.tag_name='duh'
313
+ # tag.mediaitem_id=item.id
314
+ # tag.save
315
+ #
316
+ #
317
+ # tag=Tag.new
318
+ # tag.tag_name='duh2'
319
+ # tag.mediaitem_id=item.id
320
+ # tag.save
321
+ #
322
+ # tag=Tag.new
323
+ # tag.tag_name='duh2'
324
+ # tag.mediaitem_id=item.id
325
+ # tag.save
326
+ #
327
+ #
328
+ # tag=Tag.new
329
+ # tag.tag_name='duhnot'
330
+ # tag.save
331
+ #
332
+ # found=item.get_tag_cloud
333
+ # assert_not_nil found
334
+ # assert_equal(2,found.length)
335
+ # assert_equal('duh2',found[0])
336
+ # assert_equal('duh',found[1])
337
+ #
338
+ # end
339
+ #
340
+ # def test_kill
341
+ #
342
+ # end
343
+ # def test_add_rating
344
+ #
345
+ # end
346
+ #
347
+ # def test_rating
348
+ # MediaItemTest.set_up
349
+ # item=Mediaitem.new
350
+ # item.save
351
+ #
352
+ #
353
+ # tag=Rating.new
354
+ # tag.rating=3
355
+ # tag.mediaitem_id=item.id
356
+ # tag.save
357
+ #
358
+ # tag=Rating.new
359
+ # tag.rating=4
360
+ # tag.mediaitem_id=item.id
361
+ # tag.save
362
+ # rating=item.rating
363
+ # assert_equal(3.5,rating)
364
+ #
365
+ #
366
+ #
367
+ # end
368
+ #
369
+ # def test_rated_by_user
370
+ # MediaItemTest.set_up
371
+ # item=Mediaitem.new
372
+ # item.save
373
+ #
374
+ # assert(!item.rated_by_user?('david'))
375
+ #
376
+ # tag=Rating.new
377
+ # tag.rating=3
378
+ # tag.user_name='david'
379
+ # tag.mediaitem_id=item.id
380
+ # tag.save
381
+ # NotRelational::RepositoryFactory.instance.pause(3)
382
+ # assert(item.rated_by_user?('david'))
383
+ #
384
+ # end
385
+ # def test_get_rating_by_user_name
386
+ # MediaItemTest.set_up
387
+ # item=Mediaitem.new
388
+ # item.save
389
+ #
390
+ #
391
+ # tag=Rating.new
392
+ # tag.rating=2
393
+ # tag.user_name='joe'
394
+ # tag.mediaitem_id=item.id
395
+ # tag.save
396
+ #
397
+ # tag1=Rating.new
398
+ # tag1.rating=3
399
+ # tag1.user_name='david'
400
+ # tag1.mediaitem_id=item.id
401
+ # tag1.save
402
+ #
403
+ # tag=Rating.new
404
+ # tag.rating=4
405
+ # tag.user_name='ed'
406
+ # tag.mediaitem_id=item.id
407
+ # tag.save
408
+ #
409
+ # found=item.get_rating_by_user_name('david')
410
+ # assert_equal(3,found)
411
+ # end
412
+ end
@@ -0,0 +1,40 @@
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+
4
+
5
+ require 'test/unit'
6
+ $:.push(File.dirname(__FILE__) +'/../../test/models')
7
+ $:.push(File.dirname(__FILE__) +'/../../lib/not_relational')
8
+
9
+ require File.dirname(__FILE__) +'/../../lib/not_relational/memcache_repository.rb'
10
+ require File.dirname(__FILE__) +'/../../test/models/node.rb'
11
+
12
+ class MemcacheRepositoryTest < Test::Unit::TestCase
13
+
14
+ def test_foo
15
+ # NotRelational::RepositoryFactory.clear
16
+ # ENV['not_relational_ENV']='memcache_s3_testing'
17
+ # begin
18
+ # nodes=[]
19
+ # #500 nodes: with s3 =138 secs without s3 99 secs
20
+ # (0..50).each do |i|
21
+ # node= Node.fill_new_node('david', "test node #{i}", 'hello world {i}')
22
+ # node.publicRead= ((i%30)==0)
23
+ # node.isChannel=((i%20)==0)
24
+ #
25
+ # node.save
26
+ # nodes<<node
27
+ # end
28
+ # nodes.each do |n|
29
+ # found= Node.find(n.id)
30
+ # assert_not_nil(found)
31
+ # assert_equal(n.id,found.id)
32
+ # end
33
+ # ensure
34
+ #NotRelational::RepositoryFactory.clear
35
+ # ENV['not_relational_ENV']='testing'
36
+ # end
37
+
38
+
39
+ end
40
+ end
@@ -0,0 +1,69 @@
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+
4
+
5
+ require 'test/unit'
6
+ $:.push(File.dirname(__FILE__) +'/../../test/models')
7
+ $:.push(File.dirname(__FILE__) +'/../../lib/not_relational')
8
+
9
+ require File.dirname(__FILE__) +'/../../lib/not_relational/memory_repository.rb'
10
+ require File.dirname(__FILE__) +'/../../test/models/node.rb'
11
+ ENV['not_relational_ENV']='testing'
12
+
13
+ class MemoryRepositoryTest < Test::Unit::TestCase
14
+
15
+ # 500=2.64 seconds
16
+ # 500=2.9 sav index seconds
17
+ # 1.7
18
+ def test_foo
19
+ return
20
+ #repo=NotRelational::MemoryRepository.new
21
+ (0..500).each do |i|
22
+ node= Node.fill_new_node('david', "test node #{i}", 'hello world {i}')
23
+ node.publicRead= ((i%30)==0)
24
+ node.isChannel=((i%20)==0)
25
+
26
+ node.save
27
+
28
+ end
29
+ (0..500).each do |i|
30
+ found= Node.find_by_public_channel(true,true)
31
+ assert_equal(9,found.length)
32
+
33
+ end
34
+
35
+ NotRelational::RepositoryFactory.instance.clear
36
+ end
37
+
38
+ # def test_foo2
39
+ # #repo=NotRelational::MemoryRepository.new
40
+ # nodes=[]
41
+ # (0..100).each do |i|
42
+ # node= Node.fill_new_node('david', "test node #{i}", 'hello world {i}')
43
+ # node.publicRead= ((i%3)==0)
44
+ # node.isChannel=((i%2)==0)
45
+ #
46
+ # node.save
47
+ # nodes<<node
48
+ # end
49
+ #
50
+ # nodes.each do |n|
51
+ #
52
+ # found= Node.find(n.id)
53
+ # index_found=Node.find_by_public_channel(n.publicRead,n.isChannel)
54
+ #
55
+ # assert_not_nil(found)
56
+ # found.destroy
57
+ # found= Node.find(n.id)
58
+ # assert_nil(found)
59
+ # index_found_after=Node.find_by_public_channel(n.publicRead,n.isChannel)
60
+ # assert_equal(index_found.length-1,index_found_after.length)
61
+ # end
62
+ #
63
+ #
64
+ #
65
+ #
66
+ # NotRelational::RepositoryFactory.instance.clear
67
+ # end
68
+
69
+ end