ruby-atmos-pure 1.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.
@@ -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