Skip to content

Commit 87e6969

Browse files
chushenmeshilexiaozhu36
authored andcommitted
blobstore test
1 parent 8d302d5 commit 87e6969

File tree

4 files changed

+112
-4
lines changed

4 files changed

+112
-4
lines changed

lib/fog/aliyun/models/storage/directories.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ def get(key, options = {})
7575
directory.files.merge_attributes(options)
7676
if data.key?('Contents') && !data['Contents'].nil?
7777
directory.files.load(data['Contents'])
78+
else
79+
directory.files.load([])
7880
end
7981
directory
8082
end

spec/fog/blobstore_spec.rb

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
require 'spec_helper'
2+
require 'find'
3+
4+
describe 'blobstore tests', :blobstore => true do
5+
6+
before(:all) do
7+
@conn = Fog::Storage[:aliyun]
8+
Fog::Logger.debug('Initializing Aliyun CLI for blobstore test population...')
9+
system("aliyun configure set --language en --region #{@conn.aliyun_region_id} --access-key-id #{@conn.aliyun_accesskey_id} --access-key-secret #{@conn.aliyun_accesskey_secret}")
10+
end
11+
12+
before(:each) do
13+
Fog::Logger.debug("Initializing oss bucket for tests: #{@conn.aliyun_oss_bucket}")
14+
system("aliyun oss rm --bucket oss://#{@conn.aliyun_oss_bucket} -r -f > /dev/null || exit 0")
15+
system("aliyun oss mb oss://#{@conn.aliyun_oss_bucket} > /dev/null")
16+
end
17+
18+
it 'blobstore cp_to_blobstore' do
19+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
20+
expect(files.size).to eq(0)
21+
files.create :key=>"file1",:body=>"hello"
22+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
23+
expect(files.size).to eq(1)
24+
files.create :key=>"file2",:body=>::File.open("spec/fog/lorem.txt","r")
25+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
26+
expect(files.size).to eq(2)
27+
end
28+
29+
it 'blobstore exists' do
30+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
31+
expect(files.head("file1")).to eq(nil)
32+
files.create :key=>"file1",:body=>"hello"
33+
expect(files.head("file1")).not_to eq(nil)
34+
end
35+
36+
it 'blobstore download_from_blobstore' do
37+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
38+
expect(files.size).to eq(0)
39+
files.create :key=>"file1",:body=>"hello"
40+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
41+
expect(files.size).to eq(1)
42+
File.open("1.txt","wb") do |file|
43+
files.get("file1") do |*chunk|
44+
file.write(chunk[0])
45+
end
46+
end
47+
end
48+
49+
it 'blobstore cp_r_to_blobstore' do
50+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
51+
Find.find("spec/fog").each do |path|
52+
next unless File.file? path
53+
next unless path.include? ".txt"
54+
files.create :key=>path,:body=>File.open(path,"r") unless files.head(path)
55+
end
56+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
57+
expect(files.size).to eq(2)
58+
end
59+
60+
it 'blobstore cp_file_between_keys' do
61+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
62+
expect(files.size).to eq(0)
63+
files.create :key=>"file1",:body=>"hello"
64+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
65+
expect(files.size).to eq(1)
66+
files.get("file1").copy(@conn.aliyun_oss_bucket,"file2")
67+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
68+
expect(files.size).to eq(2)
69+
end
70+
71+
it 'blobstore delete_all' do
72+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
73+
expect(files.size).to eq(0)
74+
files.create :key=>"file1",:body=>"hello"
75+
files.create :key=>"file2",:body=>"hello2"
76+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
77+
expect(files.size).to eq(2)
78+
files.each { |file| file.destroy }
79+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
80+
expect(files.size).to eq(0)
81+
end
82+
83+
it 'blobstore delete part' do
84+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
85+
expect(files.size).to eq(0)
86+
files.create :key=>"dir1/file1",:body=>"hello"
87+
files.create :key=>"dir1/file2",:body=>"hello2"
88+
files.create :key=>"dir2/file1",:body=>"hello"
89+
files.create :key=>"dir2/file2",:body=>"hello2"
90+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
91+
expect(files.size).to eq(4)
92+
files=@conn.directories.get(@conn.aliyun_oss_bucket,prefix:"dir1").files
93+
files.each { |file| file.destroy }
94+
files=@conn.directories.get(@conn.aliyun_oss_bucket).files
95+
expect(files.size).to eq(2)
96+
end
97+
98+
end

spec/fog/integration_spec.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@
384384
bucket = @conn.directories.get(@conn.aliyun_oss_bucket, prefix: 'test_dir1/')
385385
expect(bucket.files.size).to eq(3)
386386
bucket = @conn.directories.get(@conn.aliyun_oss_bucket, prefix: 'test_dir1', delimiter: '/')
387-
expect(bucket.files.size).to eq(2)
387+
expect(bucket.files.size).to eq(0)
388388
bucket = @conn.directories.get(@conn.aliyun_oss_bucket, prefix: 'test_dir1/', delimiter: '/')
389389
expect(bucket.files.size).to eq(1)
390390
ensure
@@ -412,12 +412,14 @@
412412
expect(files[1].key).to eq("b_test_file2")
413413

414414
# filtered by marker
415+
files = @conn.directories.get(@conn.aliyun_oss_bucket).files
415416
expect(files.all(marker:'b_test').length).to eq(4)
416417
expect(files.empty?).to eq(false)
417418
expect(files[0].key).to eq("b_test_file1")
418419
expect(files[2].key).to eq("c_test_file1")
419420

420421
# filtered by max_keys
422+
files = @conn.directories.get(@conn.aliyun_oss_bucket).files
421423
expect(files.all(max_keys:2).length).to eq(2)
422424
expect(files.empty?).to eq(false)
423425
expect(files[0].key).to eq("a_test_file1")
@@ -429,9 +431,9 @@
429431
system("aliyun oss appendfromfile #{file.path} oss://#{@conn.aliyun_oss_bucket}/test_dir1/test_file1 > /dev/null")
430432
system("aliyun oss appendfromfile #{file.path} oss://#{@conn.aliyun_oss_bucket}/test_dir1/test_sub_dir/test_file2 > /dev/null")
431433
files = @conn.directories.get(@conn.aliyun_oss_bucket).files
432-
expect(files.all(prefix:'test_dir1').length).to eq(2)
433-
expect(files.all(prefix:'test_dir1/').length).to eq(2)
434-
expect(files.all(prefix:'test_dir1', delimiter: '/')).to eq(nil)
434+
expect(files.all(prefix:'test_dir1').length).to eq(3)
435+
expect(files.all(prefix:'test_dir1/').length).to eq(3)
436+
expect(files.all(prefix:'test_dir1', delimiter: '/')).to eq([])
435437
expect(files.all(prefix:'test_dir1/', delimiter: '/').length).to eq(1)
436438
expect(files.empty?).to eq(false)
437439
expect(files[0].key).to eq("test_dir1/test_file1")

spec/spec_helper.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,11 @@
1919
end
2020
end
2121

22+
if !ENV['BLOBSTORE']
23+
RSpec.configure do |c|
24+
c.filter_run_excluding :blobstore => true
25+
end
26+
end
27+
2228
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2329
require 'fog/aliyun'

0 commit comments

Comments
 (0)