ruby-atmos-pure 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,167 @@
1
+ require 'credentials'
2
+ require 'test/unit'
3
+ require 'atmos'
4
+
5
+
6
+ class AtmosObjectCreateTest < Test::Unit::TestCase
7
+
8
+ def initialize(id)
9
+ super(id)
10
+ @cleanup = []
11
+ end
12
+
13
+ def setup
14
+ @s = Atmos::Test::Util.static_store
15
+ end
16
+
17
+
18
+ def teardown
19
+ @cleanup.each do |obj|
20
+ obj.delete
21
+ end
22
+ $stdout.flush
23
+ end
24
+
25
+ def test_create_empty_object_via_object_interface
26
+ obj = @s.create
27
+ @cleanup.push(obj)
28
+
29
+ assert_not_nil(obj)
30
+ assert_equal({}, obj.metadata)
31
+ assert_equal({}, obj.listable_metadata)
32
+ assert_equal({Atmos::Test::Util.user => :full}, obj.user_acl)
33
+ assert_equal({Atmos::Test::Util.group => :none}, obj.group_acl)
34
+ end
35
+
36
+ def test_create_empty_object_via_namespace_interface
37
+ time = Time.now()
38
+ time = time.to_i
39
+ ns = "/foo/bar#{time}"
40
+
41
+ obj = @s.create(:namespace => ns)
42
+ @cleanup.push(obj)
43
+
44
+ assert_not_nil(obj)
45
+ assert_equal({}, obj.metadata)
46
+ assert_equal({}, obj.listable_metadata)
47
+ assert_equal({Atmos::Test::Util.user => :full}, obj.user_acl)
48
+ assert_equal({Atmos::Test::Util.group => :none}, obj.group_acl)
49
+ end
50
+
51
+ def test_create_object_with_bad_option
52
+ assert_raise Atmos::Exceptions::ArgumentException do
53
+ @cleanup.push(@s.create(:tag => ['testtag']))
54
+ end
55
+ end
56
+
57
+ def test_create_object_with_md_as_string
58
+ assert_raise Atmos::Exceptions::ArgumentException do
59
+ @cleanup.push(@s.create(:metadata => 'testtag'))
60
+ end
61
+ end
62
+
63
+ def test_create_object_with_md_as_array
64
+ assert_raise Atmos::Exceptions::ArgumentException do
65
+ @cleanup.push(@s.create(:metadata => ['testtag']))
66
+ end
67
+ end
68
+
69
+ def test_create_object_with_metadata
70
+ md = {'non' => 'listable', 'user' => 'metadata', 'a' => 'b'}
71
+ obj = @s.create(:metadata => md)
72
+ @cleanup.push(obj)
73
+ assert_not_nil(obj)
74
+
75
+ assert(obj.metadata.non_listable?)
76
+ assert(!obj.metadata.listable?)
77
+ assert_not_equal({}, obj.metadata)
78
+ assert_equal(md, obj.metadata)
79
+
80
+ assert_equal({}, obj.listable_metadata)
81
+ assert_equal({Atmos::Test::Util.user => :full}, obj.user_acl)
82
+ assert_equal({Atmos::Test::Util.group => :none}, obj.group_acl)
83
+ end
84
+
85
+ def test_create_object_with_listable_metadata
86
+ lmd = {'x' => 'a', 'y' => 'b', 'z' => 'c'}
87
+ obj = @s.create(:listable_metadata => lmd)
88
+ @cleanup.push(obj)
89
+ assert_not_nil(obj)
90
+ assert_equal({}, obj.metadata)
91
+ assert_equal({Atmos::Test::Util.user => :full}, obj.user_acl)
92
+ assert_equal({Atmos::Test::Util.group => :none}, obj.group_acl)
93
+
94
+ assert_not_equal({}, obj.listable_metadata)
95
+ assert_equal(lmd, obj.listable_metadata)
96
+ assert(!obj.listable_metadata.non_listable?)
97
+ assert(obj.listable_metadata.listable?)
98
+ end
99
+
100
+ def test_create_object_with_mixed_metadata
101
+ md = {'non' => 'listable', 'user' => 'metadata', 'a' => 'b'}
102
+ lmd = {'x' => 'a', 'y' => 'b', 'z' => 'c'}
103
+ obj = @s.create(:metadata => md, :listable_metadata => lmd)
104
+ @cleanup.push(obj)
105
+ assert_not_nil(obj)
106
+ assert_equal({Atmos::Test::Util.user => :full}, obj.user_acl)
107
+ assert_equal({Atmos::Test::Util.group => :none}, obj.group_acl)
108
+
109
+ assert(!obj.listable_metadata.non_listable?)
110
+ assert(obj.listable_metadata.listable?)
111
+ assert_not_equal({}, obj.listable_metadata)
112
+ assert_equal(lmd, obj.listable_metadata)
113
+
114
+ assert(obj.metadata.non_listable?)
115
+ assert(!obj.metadata.listable?)
116
+ assert_not_equal({}, obj.metadata)
117
+ assert_equal(md, obj.metadata)
118
+ end
119
+
120
+ # def test_create_object_with_acl
121
+ # end
122
+
123
+ def test_create_object_with_data_as_string_with_length
124
+ data = "some stupid blob content"
125
+ obj = @s.create(:data => data, :length => data.length)
126
+ @cleanup.push(obj)
127
+ assert_equal(data, obj.data)
128
+ end
129
+
130
+ def test_create_object_with_data_as_string_without_length
131
+ data = "some stupid blob content"
132
+ obj = @s.create(:data => data)
133
+ @cleanup.push(obj)
134
+ assert_equal(data, obj.data)
135
+ end
136
+
137
+ def test_create_object_with_data_as_stream_with_length
138
+ contents = open(Atmos::Test::Util.small_text_filename).read
139
+ data = open(Atmos::Test::Util.small_text_filename)
140
+ obj = @s.create(:data => data, :length => data.stat.size)
141
+ @cleanup.push(obj)
142
+ assert_equal(contents, obj.data)
143
+ end
144
+
145
+ def test_create_object_with_data_as_stream_without_length
146
+ file = open(Atmos::Test::Util.small_text_filename)
147
+ contents = file.read
148
+ file.close
149
+ data = open(Atmos::Test::Util.small_text_filename)
150
+ obj = @s.create(:data => data)
151
+ @cleanup.push(obj)
152
+ assert_equal(contents, obj.data)
153
+ end
154
+
155
+ def donttest_create_with_IO_as_data
156
+ @s = Atmos::Test::Util.static_store
157
+ @md = {'non' => 'listable', 'user' => 'metadata', 'a' => 'b'}
158
+ @lmd = {'x' => 'a', 'y' => 'b', 'z' => 'c'}
159
+ data = open(Atmos::Test::Util.small_binary_filename)
160
+ obj = @s.create(:metadata => @md,
161
+ :listable_metadata => @lmd,
162
+ :data => File.new(Atmos::Test::Util.small_binary_filename, "rb"))
163
+ @cleanup.push(obj)
164
+ @aoid = obj.aoid
165
+ end
166
+
167
+ end
@@ -0,0 +1,55 @@
1
+ require 'credentials'
2
+ require 'test/unit'
3
+ require 'atmos'
4
+
5
+
6
+ class AtmosObjectGetTest < Test::Unit::TestCase
7
+
8
+ def initialize(id)
9
+ super(id)
10
+ @cleanup = []
11
+
12
+ end
13
+
14
+ def setup
15
+ @s = Atmos::Test::Util.static_store
16
+ end
17
+
18
+
19
+ def teardown
20
+ @cleanup.each do |obj|
21
+ obj.delete
22
+ end
23
+ $stdout.flush
24
+ end
25
+
26
+ def test_get_object_via_object_interface
27
+ obj = @s.create
28
+ @cleanup.push(obj)
29
+
30
+ obj = @s.get(:id => obj.aoid)
31
+ assert_not_nil(obj)
32
+ assert_equal({}, obj.metadata)
33
+ assert_equal({}, obj.listable_metadata)
34
+ assert_equal({Atmos::Test::Util.user => :full}, obj.user_acl)
35
+ assert_equal({Atmos::Test::Util.group => :none}, obj.group_acl)
36
+ end
37
+
38
+ def test_get_object_via_namespace_interface
39
+ time = Time.now()
40
+ time = time.to_i#{}"%.6f" % a.to_f #=> "1195480202.282373"
41
+
42
+ ns = "/foo/bar#{time}"
43
+ obj = @s.create(:namespace => ns)
44
+ obj = @s.get(:namespace => ns)
45
+
46
+ assert_not_nil(obj)
47
+ assert_equal({}, obj.metadata)
48
+ assert_equal({}, obj.listable_metadata)
49
+ assert_equal({Atmos::Test::Util.user => :full}, obj.user_acl)
50
+ assert_equal({Atmos::Test::Util.group => :none}, obj.group_acl)
51
+
52
+ obj.delete()
53
+ end
54
+
55
+ end
@@ -0,0 +1,80 @@
1
+ require 'credentials'
2
+ require 'test/unit'
3
+ require 'atmos'
4
+
5
+
6
+ class AtmosObjectMiscTest < Test::Unit::TestCase
7
+
8
+ def initialize(id)
9
+ super(id)
10
+ @cleanup = []
11
+ end
12
+
13
+ def setup
14
+ @s = Atmos::Test::Util.static_store
15
+ end
16
+
17
+
18
+ def teardown
19
+ @cleanup.each do |obj|
20
+ obj.delete
21
+ end
22
+ end
23
+
24
+
25
+ def test_delete_existing_object
26
+ end
27
+
28
+ def test_exists_on_existant_object
29
+ obj = @s.create()
30
+ @cleanup.push(obj)
31
+ assert(obj.exists?)
32
+ end
33
+
34
+ def test_exists_on_non_existant_object
35
+ obj = @s.create()
36
+ obj.delete
37
+ assert(!obj.exists?)
38
+ end
39
+
40
+ def test_delete_nonexisting_object
41
+ first = @s.create
42
+ assert_not_nil(first)
43
+ second = @s.get(:id => first.aoid)
44
+ assert_not_nil(second)
45
+ first.delete
46
+ assert_raise Atmos::Exceptions::NoSuchObjectException do
47
+ second.delete
48
+ end
49
+ end
50
+
51
+ def test_truncate_text_object
52
+ file = open(Atmos::Test::Util.small_text_filename)
53
+ contents = file.read
54
+ file.close
55
+ data = open(Atmos::Test::Util.small_text_filename)
56
+ obj = @s.create(:data => data)
57
+ @cleanup.push(obj)
58
+ assert_equal(contents, obj.data)
59
+
60
+ obj.truncate
61
+ assert_equal("", obj.data)
62
+ end
63
+
64
+
65
+ def test_truncate_binary_object
66
+ file = open(Atmos::Test::Util.small_binary_filename)
67
+ contents = file.read
68
+ file.close
69
+ data = open(Atmos::Test::Util.small_binary_filename)
70
+ obj = @s.create(:data => data)
71
+ @cleanup.push(obj)
72
+
73
+ # assert_equal(contents, obj.data)
74
+
75
+ obj.truncate
76
+ assert_equal("", obj.data)
77
+ end
78
+
79
+
80
+ end
@@ -0,0 +1,98 @@
1
+ require 'credentials'
2
+ require 'test/unit'
3
+ require 'atmos'
4
+
5
+
6
+ class AtmosObjectReadTest < Test::Unit::TestCase
7
+
8
+ def initialize(id)
9
+ super(id)
10
+ @cleanup = []
11
+ end
12
+
13
+ def setup
14
+ @s = Atmos::Test::Util.static_store
15
+ @md = {'non' => 'listable', 'user' => 'metadata', 'a' => 'b'}
16
+ @lmd = {'x' => 'a', 'y' => 'b', 'z' => 'c'}
17
+ data = open(Atmos::Test::Util.small_binary_filename)
18
+ obj = @s.create(:metadata => @md,
19
+ :listable_metadata => @lmd,
20
+ :data => File.new(Atmos::Test::Util.small_binary_filename, "rb"))
21
+ @cleanup.push(obj)
22
+ @aoid = obj.aoid
23
+ end
24
+
25
+
26
+ def teardown
27
+ @cleanup.each do |obj|
28
+ obj.delete
29
+ end
30
+ end
31
+
32
+
33
+ def test_read_partial_data_as_stream
34
+ obj = @s.get(:id => @aoid)
35
+
36
+ file = open(Atmos::Test::Util.small_binary_filename)
37
+ contents = file.read
38
+ assert_equal(contents, obj.data)
39
+
40
+ f = File.new(Atmos::Test::Util.small_binary_filename, "rb")
41
+ contents = f.read(61)
42
+ data = obj.data(0...60)
43
+
44
+ readin = ""
45
+ obj.data_as_stream(0...60) do |chunk|
46
+ readin.concat(chunk)
47
+ end
48
+
49
+ assert_equal(61, readin.length)
50
+ assert_equal(contents.length, readin.length)
51
+ assert_equal(contents, readin)
52
+ end
53
+
54
+ def test_read_data_as_stream
55
+
56
+ file = open(Atmos::Test::Util.small_binary_filename)
57
+ contents = file.read
58
+ obj = @s.get(:id => @aoid)
59
+ obj.update(contents)
60
+ assert_equal(contents, obj.data)
61
+
62
+ readin = ""
63
+ obj.data_as_stream do |chunk|
64
+ readin.concat(chunk)
65
+ end
66
+
67
+ assert_equal(contents, readin)
68
+ end
69
+
70
+ def test_read_partial_data_as_string
71
+
72
+ file = open(Atmos::Test::Util.small_binary_filename)
73
+ contents = file.read
74
+ obj = @s.get(:id => @aoid)
75
+ obj.update(contents)
76
+ assert_equal(contents, obj.data)
77
+
78
+
79
+ f = File.new(Atmos::Test::Util.small_binary_filename, "rb")
80
+ contents = f.read(61)
81
+ data = obj.data(0...60)
82
+ len = data.length
83
+ assert_equal(61, obj.data(0...60).length)
84
+ assert_equal(contents, obj.data(0...60))
85
+ end
86
+
87
+ def test_read_data_as_string
88
+ file = open(Atmos::Test::Util.small_binary_filename)
89
+ contents = file.read
90
+ obj = @s.get(:id => @aoid)
91
+ obj.update(contents)
92
+ assert_equal(contents, obj.data)
93
+
94
+ assert_equal(contents, obj.data)
95
+ assert(obj.data.length > 0)
96
+ end
97
+
98
+ end
@@ -0,0 +1,59 @@
1
+ require 'credentials'
2
+ require 'test/unit'
3
+ require 'atmos'
4
+
5
+
6
+ class AtmosObjectUpdateTest < Test::Unit::TestCase
7
+
8
+ def initialize(id)
9
+ super(id)
10
+ @cleanup = []
11
+ end
12
+
13
+ def setup
14
+ @s = Atmos::Test::Util.static_store
15
+ @obj = @s.create
16
+ @cleanup.push(@obj)
17
+ #print "test_object_update.setup(): obj: #{@obj}; objid: #{@obj.aoid}\n"
18
+ end
19
+
20
+
21
+ def teardown
22
+ @cleanup.each do |obj|
23
+ obj.delete
24
+ end
25
+ $stdout.flush
26
+ end
27
+
28
+ def test_object_ok
29
+ assert_not_nil(@obj)
30
+ assert_equal({}, @obj.metadata)
31
+ assert_equal({}, @obj.listable_metadata)
32
+ assert_equal({Atmos::Test::Util.user => :full}, @obj.user_acl)
33
+ assert_equal({Atmos::Test::Util.group => :none}, @obj.group_acl)
34
+ end
35
+
36
+ def test_update_empty_obj
37
+ data = "Hello World"
38
+ @obj.update(data)
39
+ assert_equal(data, @obj.data)
40
+ end
41
+
42
+ # def test_append_non_empty_object
43
+ # data = @obj.data
44
+ # @obj.append("!")
45
+ # assert_equal(data+"!", @obj.data)
46
+ # print "appended hello world object with !: #{@obj.data}\n"
47
+ # end
48
+
49
+ def test_update_object_in_place
50
+ data = "Hello World!"
51
+ @obj.update(data)
52
+ assert_equal(data, @obj.data)
53
+
54
+ range = 0..4
55
+ @obj.update("Mad ", range)
56
+ assert_equal("Mad World!", @obj.data)
57
+ end
58
+
59
+ end