tinkit 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +176 -0
- data/README +11 -0
- data/Rakefile +75 -0
- data/lib/glue_envs/couchrest/couchrest_attachment_handler.rb +260 -0
- data/lib/glue_envs/couchrest/couchrest_files_mgr.rb +198 -0
- data/lib/glue_envs/couchrest_glue_env.rb +536 -0
- data/lib/glue_envs/files_mgr_base.rb +51 -0
- data/lib/glue_envs/filesystem/filesystem_files_mgr.rb +187 -0
- data/lib/glue_envs/filesystem_glue_env.rb +395 -0
- data/lib/glue_envs/mysql/mysql_files_mgr.rb +175 -0
- data/lib/glue_envs/mysql_glue_env.rb +428 -0
- data/lib/glue_envs/sdb_s3/sdb_s3_files_mgr.rb +314 -0
- data/lib/glue_envs/sdb_s3_glue_env.rb +248 -0
- data/lib/helpers/camel.rb +21 -0
- data/lib/helpers/filesystem_helpers.rb +27 -0
- data/lib/helpers/hash_helpers.rb +74 -0
- data/lib/helpers/log_helper.rb +34 -0
- data/lib/helpers/mime_types_new.rb +126 -0
- data/lib/helpers/old_more_open_struct.rb +28 -0
- data/lib/helpers/require_helper.rb +45 -0
- data/lib/helpers/tk_escape.rb +17 -0
- data/lib/midas/bufs_data_structure.rb +84 -0
- data/lib/midas/node_element_operations.rb +264 -0
- data/lib/tinkit.rb +38 -0
- data/lib/tinkit_base_node.rb +733 -0
- data/lib/tinkit_node_factory.rb +47 -0
- data/spec/couchrest_files_mgr_spec.rb +551 -0
- data/spec/couchrest_glue_spec.rb +246 -0
- data/spec/filesystem_files_mgr_spec.rb +236 -0
- data/spec/filesystem_glue_spec.rb +243 -0
- data/spec/filesystem_helpers_spec.rb +42 -0
- data/spec/helpers/bufs_node_builder.rb +17 -0
- data/spec/helpers/bufs_sample_dataset.rb +160 -0
- data/spec/helpers/bufs_test_environments.rb +81 -0
- data/spec/helpers/tmp_view_cleaner.rb +15 -0
- data/spec/lib_helpers/tk_escape_spec.rb +45 -0
- data/spec/mysql_files_mgr_spec.rb +250 -0
- data/spec/mysql_glue_spec.rb +214 -0
- data/spec/node_element_operations_spec.rb +392 -0
- data/spec/sdb_s3_files_mgr_spec/sdb_s3_files_mgr_spec1.rb +82 -0
- data/spec/sdb_s3_files_mgr_spec/sdb_s3_files_mgr_spec2.rb +68 -0
- data/spec/sdb_s3_files_mgr_spec/sdb_s3_files_mgr_spec3.rb +80 -0
- data/spec/sdb_s3_files_mgr_spec/sdb_s3_files_mgr_spec4.rb +110 -0
- data/spec/sdb_s3_files_mgr_spec/sdb_s3_files_mgr_spec5.rb +84 -0
- data/spec/sdb_s3_files_mgr_spec/sdb_s3_files_mgr_spec6.rb +83 -0
- data/spec/sdb_s3_files_mgr_spec/sdb_s3_files_mgr_spec7.rb +101 -0
- data/spec/sdb_s3_files_mgr_spec/sdb_s3_files_mgr_spec8.rb +92 -0
- data/spec/sdb_s3_files_mgr_spec/sdb_s3_files_mgr_spec_all.rb +266 -0
- data/spec/sdb_s3_glue_spec.rb +230 -0
- data/spec/tinkit_node_factory_spec.rb +1108 -0
- metadata +114 -0
@@ -0,0 +1,68 @@
|
|
1
|
+
#require helper for cleaner require statements
|
2
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), '../../lib/helpers/require_helper')
|
3
|
+
require Tinkit.glue 'sdb_s3/sdb_s3_files_mgr'
|
4
|
+
|
5
|
+
include SdbS3Interface
|
6
|
+
GlueEnvMock = Struct.new(:user_datastore_location)
|
7
|
+
|
8
|
+
describe FilesMgr, "Setup and intializatoin" do
|
9
|
+
before(:all) do
|
10
|
+
|
11
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
12
|
+
@node_key = :_id
|
13
|
+
|
14
|
+
file1_data = "Example File1\nJust some text"
|
15
|
+
file2_data = "Example File2\nJust some more text"
|
16
|
+
file1_fname = "/tmp/example_file1.txt"
|
17
|
+
file2_fname = "/tmp/example_file2.txt"
|
18
|
+
files = {file1_fname => file1_data, file2_fname => file2_data}
|
19
|
+
files.each do |fname, data|
|
20
|
+
File.open(fname, 'w'){|f| f.write(data)}
|
21
|
+
end
|
22
|
+
@file_datas = [{:src_filename => file1_fname}, {:src_filename => file2_fname}]
|
23
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should initialize" do
|
27
|
+
node_key_value = @node1_data[@node_key]
|
28
|
+
attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
29
|
+
buck_prefix = FilesMgr::BucketNamespacePrefix
|
30
|
+
node_loc = @glue_env_mock.user_datastore_location
|
31
|
+
check_bucket_location = "#{buck_prefix}_#{node_loc}"
|
32
|
+
#the below will sometimes fail due to AWS
|
33
|
+
attach_handler.bucket_name.should == check_bucket_location
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe FilesMgr, "Basic Operations" do
|
38
|
+
before(:all) do
|
39
|
+
@file1_fname = "/tmp/example_file1.txt"
|
40
|
+
@file2_fname = "/tmp/example_file2.txt"
|
41
|
+
f1_bname = File.basename(@file1_fname)
|
42
|
+
f2_bname = File.basename(@file2_fname)
|
43
|
+
@file_stored_data = { f1_bname => File.open(@file1_fname, 'rb'){|f| f.read},
|
44
|
+
f2_bname =>File.open(@file2_fname, 'rb'){|f| f.read} }
|
45
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
46
|
+
@node_key = :_id
|
47
|
+
@file_datas = [{:src_filename => @file1_fname}, {:src_filename => @file2_fname}]
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
before(:each) do
|
52
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
53
|
+
node_key_value = @node1_data[@node_key]
|
54
|
+
@attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
55
|
+
@attach_handler.subtract_files(nil, :all)
|
56
|
+
end
|
57
|
+
|
58
|
+
after(:each) do
|
59
|
+
@attach_handler.destroy_file_container
|
60
|
+
end
|
61
|
+
|
62
|
+
it "2) should list attachment files" do
|
63
|
+
node = nil
|
64
|
+
@attach_handler.add(node, @file_datas)
|
65
|
+
files = @attach_handler.list(node)
|
66
|
+
files.sort.should == @file_stored_data.keys.sort
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
#require helper for cleaner require statements
|
2
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), '../../lib/helpers/require_helper')
|
3
|
+
require Tinkit.glue 'sdb_s3/sdb_s3_files_mgr'
|
4
|
+
|
5
|
+
include SdbS3Interface
|
6
|
+
GlueEnvMock = Struct.new(:user_datastore_location)
|
7
|
+
|
8
|
+
describe FilesMgr, "Setup and intialization" do
|
9
|
+
before(:all) do
|
10
|
+
|
11
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
12
|
+
@node_key = :_id
|
13
|
+
|
14
|
+
file1_data = "Example File1\nJust some text"
|
15
|
+
file2_data = "Example File2\nJust some more text"
|
16
|
+
file1_fname = "/tmp/example_file1.txt"
|
17
|
+
file2_fname = "/tmp/example_file2.txt"
|
18
|
+
files = {file1_fname => file1_data, file2_fname => file2_data}
|
19
|
+
files.each do |fname, data|
|
20
|
+
File.open(fname, 'w'){|f| f.write(data)}
|
21
|
+
end
|
22
|
+
@file_datas = [{:src_filename => file1_fname}, {:src_filename => file2_fname}]
|
23
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should initialize" do
|
27
|
+
node_key_value = @node1_data[@node_key]
|
28
|
+
attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
29
|
+
buck_prefix = FilesMgr::BucketNamespacePrefix
|
30
|
+
node_loc = @glue_env_mock.user_datastore_location
|
31
|
+
check_bucket_location = "#{buck_prefix}_#{node_loc}"
|
32
|
+
#the below will sometimes fail due to AWS
|
33
|
+
attach_handler.bucket_name.should == check_bucket_location
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe FilesMgr, "Basic Operations" do
|
38
|
+
before(:all) do
|
39
|
+
@file1_fname = "/tmp/example_file1.txt"
|
40
|
+
@file2_fname = "/tmp/example_file2.txt"
|
41
|
+
f1_bname = File.basename(@file1_fname)
|
42
|
+
f2_bname = File.basename(@file2_fname)
|
43
|
+
@file_stored_data = { f1_bname => File.open(@file1_fname, 'rb'){|f| f.read},
|
44
|
+
f2_bname =>File.open(@file2_fname, 'rb'){|f| f.read} }
|
45
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
46
|
+
@node_key = :_id
|
47
|
+
@file_datas = [{:src_filename => @file1_fname}, {:src_filename => @file2_fname}]
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
before(:each) do
|
52
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
53
|
+
node_key_value = @node1_data[@node_key]
|
54
|
+
@attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
55
|
+
@attach_handler.subtract_files(nil, :all)
|
56
|
+
end
|
57
|
+
|
58
|
+
after(:each) do
|
59
|
+
@attach_handler.destroy_file_container
|
60
|
+
end
|
61
|
+
|
62
|
+
it "3) should list metadata" do
|
63
|
+
node = nil
|
64
|
+
@attach_handler.add(node, @file_datas)
|
65
|
+
md = @attach_handler.get_attachments_metadata(nil)
|
66
|
+
md.should_not == nil
|
67
|
+
@file_datas.each do |file_data|
|
68
|
+
file_basename = File.basename(file_data[:src_filename])
|
69
|
+
each_md = md[file_basename]
|
70
|
+
each_md.should_not == nil
|
71
|
+
each_md.keys.should include :content_type
|
72
|
+
each_md.keys.should include :file_modified
|
73
|
+
|
74
|
+
file_basename = File.basename(file_data[:src_filename])
|
75
|
+
md[file_basename][:content_type].should =~ /^text\/plain/
|
76
|
+
time_str = md[file_basename][:file_modified]
|
77
|
+
Time.parse(time_str).should > Time.now - 1 #should have been modified less than a second ago
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
#require helper for cleaner require statements
|
2
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), '../../lib/helpers/require_helper')
|
3
|
+
require Tinkit.glue 'sdb_s3/sdb_s3_files_mgr'
|
4
|
+
|
5
|
+
include SdbS3Interface
|
6
|
+
GlueEnvMock = Struct.new(:user_datastore_location)
|
7
|
+
|
8
|
+
describe FilesMgr, "Setup and intialization" do
|
9
|
+
before(:all) do
|
10
|
+
|
11
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
12
|
+
@node_key = :_id
|
13
|
+
|
14
|
+
file1_data = "Example File1\nJust some text"
|
15
|
+
file2_data = "Example File2\nJust some more text"
|
16
|
+
file1_fname = "/tmp/example_file1.txt"
|
17
|
+
file2_fname = "/tmp/example_file2.txt"
|
18
|
+
files = {file1_fname => file1_data, file2_fname => file2_data}
|
19
|
+
files.each do |fname, data|
|
20
|
+
File.open(fname, 'w'){|f| f.write(data)}
|
21
|
+
end
|
22
|
+
@file_datas = [{:src_filename => file1_fname}, {:src_filename => file2_fname}]
|
23
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should initialize" do
|
27
|
+
node_key_value = @node1_data[@node_key]
|
28
|
+
attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
29
|
+
buck_prefix = FilesMgr::BucketNamespacePrefix
|
30
|
+
node_loc = @glue_env_mock.user_datastore_location
|
31
|
+
check_bucket_location = "#{buck_prefix}_#{node_loc}"
|
32
|
+
#the below will sometimes fail due to AWS
|
33
|
+
attach_handler.bucket_name.should == check_bucket_location
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe FilesMgr, "Basic Operations" do
|
38
|
+
before(:all) do
|
39
|
+
@file1_fname = "/tmp/example_file1.txt"
|
40
|
+
@file2_fname = "/tmp/example_file2.txt"
|
41
|
+
f1_bname = File.basename(@file1_fname)
|
42
|
+
f2_bname = File.basename(@file2_fname)
|
43
|
+
@file_stored_data = { f1_bname => File.open(@file1_fname, 'rb'){|f| f.read},
|
44
|
+
f2_bname =>File.open(@file2_fname, 'rb'){|f| f.read} }
|
45
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
46
|
+
@node_key = :_id
|
47
|
+
@file_datas = [{:src_filename => @file1_fname}, {:src_filename => @file2_fname}]
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
before(:each) do
|
52
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
53
|
+
node_key_value = @node1_data[@node_key]
|
54
|
+
@attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
55
|
+
@attach_handler.subtract_files(nil, :all)
|
56
|
+
end
|
57
|
+
|
58
|
+
after(:each) do
|
59
|
+
@attach_handler.destroy_file_container
|
60
|
+
end
|
61
|
+
|
62
|
+
it "4) should be well behaved adding more files" do
|
63
|
+
node = nil
|
64
|
+
@attach_handler.add(node, @file_datas)
|
65
|
+
|
66
|
+
|
67
|
+
#Get the original files and verify data
|
68
|
+
@file_datas.each do |file_data|
|
69
|
+
file_basename = File.basename(file_data[:src_filename])
|
70
|
+
data = @attach_handler.get_raw_data(node, file_basename)
|
71
|
+
data.should == @file_stored_data[file_basename]
|
72
|
+
end
|
73
|
+
|
74
|
+
#create some more files
|
75
|
+
file1_data = "Example File1\nNEW!! text"
|
76
|
+
file3_data = "Example File3\nYet more text"
|
77
|
+
file4_data = "Example File4\nand more text"
|
78
|
+
file3_fname = "/tmp/example_file3.txt"
|
79
|
+
file4_fname = "/tmp/example_file4.txt"
|
80
|
+
files = {@file1_fname => file1_data, file3_fname => file3_data, file4_fname => file4_data}
|
81
|
+
files.each do |fname, data|
|
82
|
+
File.open(fname, 'w'){|f| f.write(data)}
|
83
|
+
end
|
84
|
+
file1_data.should == File.open(@file1_fname){|f| f.read}
|
85
|
+
@file_datas2 = [{:src_filename => @file1_fname},
|
86
|
+
{:src_filename => file3_fname},
|
87
|
+
{:src_filename => file4_fname}]
|
88
|
+
|
89
|
+
#add them
|
90
|
+
@attach_handler.add(node, @file_datas2)
|
91
|
+
|
92
|
+
#Check the unchanged file (file2)
|
93
|
+
file2_basename = File.basename(@file2_fname)
|
94
|
+
data2 = @attach_handler.get_raw_data(node, file2_basename)
|
95
|
+
data2.should == @file_stored_data[file2_basename]
|
96
|
+
|
97
|
+
#Get the changed files and verify it is the new data
|
98
|
+
file1_basename = File.basename(@file1_fname)
|
99
|
+
data1 = @attach_handler.get_raw_data(node, file1_basename)
|
100
|
+
data1.should == file1_data
|
101
|
+
|
102
|
+
file3_basename = File.basename(file3_fname)
|
103
|
+
data3 = @attach_handler.get_raw_data(node, file3_basename)
|
104
|
+
data3.should == file3_data
|
105
|
+
|
106
|
+
file4_basename = File.basename(file4_fname)
|
107
|
+
data4 = @attach_handler.get_raw_data(node, file4_basename)
|
108
|
+
data4.should == file4_data
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
#require helper for cleaner require statements
|
2
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), '../../lib/helpers/require_helper')
|
3
|
+
require Tinkit.glue 'sdb_s3/sdb_s3_files_mgr'
|
4
|
+
|
5
|
+
include SdbS3Interface
|
6
|
+
GlueEnvMock = Struct.new(:user_datastore_location)
|
7
|
+
|
8
|
+
describe FilesMgr, "Setup and intialization" do
|
9
|
+
before(:all) do
|
10
|
+
|
11
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
12
|
+
@node_key = :_id
|
13
|
+
|
14
|
+
file1_data = "Example File1\nJust some text"
|
15
|
+
file2_data = "Example File2\nJust some more text"
|
16
|
+
file1_fname = "/tmp/example_file1.txt"
|
17
|
+
file2_fname = "/tmp/example_file2.txt"
|
18
|
+
files = {file1_fname => file1_data, file2_fname => file2_data}
|
19
|
+
files.each do |fname, data|
|
20
|
+
File.open(fname, 'w'){|f| f.write(data)}
|
21
|
+
end
|
22
|
+
@file_datas = [{:src_filename => file1_fname}, {:src_filename => file2_fname}]
|
23
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should initialize" do
|
27
|
+
node_key_value = @node1_data[@node_key]
|
28
|
+
attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
29
|
+
buck_prefix = FilesMgr::BucketNamespacePrefix
|
30
|
+
node_loc = @glue_env_mock.user_datastore_location
|
31
|
+
check_bucket_location = "#{buck_prefix}_#{node_loc}"
|
32
|
+
#the below will sometimes fail due to AWS
|
33
|
+
attach_handler.bucket_name.should == check_bucket_location
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe FilesMgr, "Basic Operations" do
|
38
|
+
before(:all) do
|
39
|
+
@file1_fname = "/tmp/example_file1.txt"
|
40
|
+
@file2_fname = "/tmp/example_file2.txt"
|
41
|
+
f1_bname = File.basename(@file1_fname)
|
42
|
+
f2_bname = File.basename(@file2_fname)
|
43
|
+
@file_stored_data = { f1_bname => File.open(@file1_fname, 'rb'){|f| f.read},
|
44
|
+
f2_bname =>File.open(@file2_fname, 'rb'){|f| f.read} }
|
45
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
46
|
+
@node_key = :_id
|
47
|
+
@file_datas = [{:src_filename => @file1_fname}, {:src_filename => @file2_fname}]
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
before(:each) do
|
52
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
53
|
+
node_key_value = @node1_data[@node_key]
|
54
|
+
@attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
55
|
+
@attach_handler.subtract_files(nil, :all)
|
56
|
+
end
|
57
|
+
|
58
|
+
after(:each) do
|
59
|
+
@attach_handler.destroy_file_container
|
60
|
+
end
|
61
|
+
|
62
|
+
it "5) should delete (subtract) files" do
|
63
|
+
node = nil
|
64
|
+
@attach_handler.add(node, @file_datas)
|
65
|
+
|
66
|
+
files_to_delete = [@file1_fname, @file2_fname]
|
67
|
+
|
68
|
+
#they should exist in the node
|
69
|
+
files_to_delete.each do |fname|
|
70
|
+
file_basename = File.basename(fname)
|
71
|
+
data = @attach_handler.get_raw_data(node, file_basename)
|
72
|
+
data.should match /^Example File/
|
73
|
+
end
|
74
|
+
|
75
|
+
basenames_to_delete = files_to_delete.map{|f| File.basename(f)}
|
76
|
+
@attach_handler.subtract(node, basenames_to_delete)
|
77
|
+
|
78
|
+
files_to_delete.each do |fname|
|
79
|
+
file_basename = File.basename(fname)
|
80
|
+
data = @attach_handler.get_raw_data(node, file_basename)
|
81
|
+
data.should be_nil
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
#require helper for cleaner require statements
|
2
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), '../../lib/helpers/require_helper')
|
3
|
+
require Tinkit.glue 'sdb_s3/sdb_s3_files_mgr'
|
4
|
+
|
5
|
+
include SdbS3Interface
|
6
|
+
GlueEnvMock = Struct.new(:user_datastore_location)
|
7
|
+
|
8
|
+
describe FilesMgr, "Setup and intialization" do
|
9
|
+
before(:all) do
|
10
|
+
|
11
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
12
|
+
@node_key = :_id
|
13
|
+
|
14
|
+
file1_data = "Example File1\nJust some text"
|
15
|
+
file2_data = "Example File2\nJust some more text"
|
16
|
+
file1_fname = "/tmp/example_file1.txt"
|
17
|
+
file2_fname = "/tmp/example_file2.txt"
|
18
|
+
files = {file1_fname => file1_data, file2_fname => file2_data}
|
19
|
+
files.each do |fname, data|
|
20
|
+
File.open(fname, 'w'){|f| f.write(data)}
|
21
|
+
end
|
22
|
+
@file_datas = [{:src_filename => file1_fname}, {:src_filename => file2_fname}]
|
23
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should initialize" do
|
27
|
+
node_key_value = @node1_data[@node_key]
|
28
|
+
attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
29
|
+
buck_prefix = FilesMgr::BucketNamespacePrefix
|
30
|
+
node_loc = @glue_env_mock.user_datastore_location
|
31
|
+
check_bucket_location = "#{buck_prefix}_#{node_loc}"
|
32
|
+
#the below will sometimes fail due to AWS
|
33
|
+
attach_handler.bucket_name.should == check_bucket_location
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe FilesMgr, "Basic Operations" do
|
38
|
+
before(:all) do
|
39
|
+
@file1_fname = "/tmp/example_file1.txt"
|
40
|
+
@file2_fname = "/tmp/example_file2.txt"
|
41
|
+
f1_bname = File.basename(@file1_fname)
|
42
|
+
f2_bname = File.basename(@file2_fname)
|
43
|
+
@file_stored_data = { f1_bname => File.open(@file1_fname, 'rb'){|f| f.read},
|
44
|
+
f2_bname =>File.open(@file2_fname, 'rb'){|f| f.read} }
|
45
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
46
|
+
@node_key = :_id
|
47
|
+
@file_datas = [{:src_filename => @file1_fname}, {:src_filename => @file2_fname}]
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
before(:each) do
|
52
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
53
|
+
node_key_value = @node1_data[@node_key]
|
54
|
+
@attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
55
|
+
@attach_handler.subtract_files(nil, :all)
|
56
|
+
end
|
57
|
+
|
58
|
+
after(:each) do
|
59
|
+
@attach_handler.destroy_file_container
|
60
|
+
end
|
61
|
+
|
62
|
+
it "6) should delete (subtract) files" do
|
63
|
+
node = nil
|
64
|
+
@attach_handler.add(node, @file_datas)
|
65
|
+
|
66
|
+
files_to_delete = [@file1_fname, @file2_fname]
|
67
|
+
#they should exist in the node
|
68
|
+
files_to_delete.each do |fname|
|
69
|
+
file_basename = File.basename(fname)
|
70
|
+
data = @attach_handler.get_raw_data(node, file_basename)
|
71
|
+
data.should match /^Example File/
|
72
|
+
end
|
73
|
+
|
74
|
+
basenames_to_delete = files_to_delete.map{|f| File.basename(f)}
|
75
|
+
@attach_handler.subtract(node, basenames_to_delete)
|
76
|
+
|
77
|
+
files_to_delete.each do |fname|
|
78
|
+
file_basename = File.basename(fname)
|
79
|
+
data = @attach_handler.get_raw_data(node, file_basename)
|
80
|
+
data.should be_nil
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
#require helper for cleaner require statements
|
2
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), '../../lib/helpers/require_helper')
|
3
|
+
require Tinkit.glue 'sdb_s3/sdb_s3_files_mgr'
|
4
|
+
|
5
|
+
include SdbS3Interface
|
6
|
+
GlueEnvMock = Struct.new(:user_datastore_location)
|
7
|
+
|
8
|
+
describe FilesMgr, "Setup and intialization" do
|
9
|
+
before(:all) do
|
10
|
+
|
11
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
12
|
+
@node_key = :_id
|
13
|
+
|
14
|
+
file1_data = "Example File1\nJust some text"
|
15
|
+
file2_data = "Example File2\nJust some more text"
|
16
|
+
file1_fname = "/tmp/example_file1.txt"
|
17
|
+
file2_fname = "/tmp/example_file2.txt"
|
18
|
+
files = {file1_fname => file1_data, file2_fname => file2_data}
|
19
|
+
files.each do |fname, data|
|
20
|
+
File.open(fname, 'w'){|f| f.write(data)}
|
21
|
+
end
|
22
|
+
@file_datas = [{:src_filename => file1_fname}, {:src_filename => file2_fname}]
|
23
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should initialize" do
|
27
|
+
node_key_value = @node1_data[@node_key]
|
28
|
+
attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
29
|
+
buck_prefix = FilesMgr::BucketNamespacePrefix
|
30
|
+
node_loc = @glue_env_mock.user_datastore_location
|
31
|
+
check_bucket_location = "#{buck_prefix}_#{node_loc}"
|
32
|
+
#the below will sometimes fail due to AWS
|
33
|
+
attach_handler.bucket_name.should == check_bucket_location
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe FilesMgr, "Basic Operations" do
|
38
|
+
before(:all) do
|
39
|
+
@file1_fname = "/tmp/example_file1.txt"
|
40
|
+
@file2_fname = "/tmp/example_file2.txt"
|
41
|
+
f1_bname = File.basename(@file1_fname)
|
42
|
+
f2_bname = File.basename(@file2_fname)
|
43
|
+
@file_stored_data = { f1_bname => File.open(@file1_fname, 'rb'){|f| f.read},
|
44
|
+
f2_bname =>File.open(@file2_fname, 'rb'){|f| f.read} }
|
45
|
+
@glue_env_mock = GlueEnvMock.new("attachment_spec__node_loc")
|
46
|
+
@node_key = :_id
|
47
|
+
@file_datas = [{:src_filename => @file1_fname}, {:src_filename => @file2_fname}]
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
before(:each) do
|
52
|
+
@node1_data = {:_id => 'spec_test1', :data => 'stuff1'}
|
53
|
+
node_key_value = @node1_data[@node_key]
|
54
|
+
@attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
55
|
+
@attach_handler.subtract_files(nil, :all)
|
56
|
+
end
|
57
|
+
|
58
|
+
after(:each) do
|
59
|
+
node_key_value = @node1_data[@node_key]
|
60
|
+
kill_attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
61
|
+
kill_attach_handler.destroy_file_container
|
62
|
+
end
|
63
|
+
|
64
|
+
it "7) should add attachments from the raw data" do
|
65
|
+
node = nil
|
66
|
+
@attach_handler.add(node, @file_datas)
|
67
|
+
|
68
|
+
raw_data = "Example File3\nYet more text"
|
69
|
+
content_type = "text/plain"
|
70
|
+
modified_at = Time.now.to_s
|
71
|
+
att_name = "example_raw_data.txt"
|
72
|
+
|
73
|
+
#Add the Raw Data
|
74
|
+
@attach_handler.add_raw_data(node, att_name, content_type, raw_data, modified_at)
|
75
|
+
|
76
|
+
#Get the files and verify data
|
77
|
+
|
78
|
+
#Let's try killing the @attach_handler [Fixed It!]
|
79
|
+
@attach_handler = nil
|
80
|
+
|
81
|
+
node_key_value = @node1_data[@node_key]
|
82
|
+
new_attach_handler = FilesMgr.new(@glue_env_mock, node_key_value)
|
83
|
+
|
84
|
+
data = new_attach_handler.get_raw_data(node, att_name)
|
85
|
+
all_metadata = new_attach_handler.get_attachments_metadata(node)
|
86
|
+
all_metadata.should_not be_nil
|
87
|
+
|
88
|
+
attachment_metadata = all_metadata[att_name]
|
89
|
+
|
90
|
+
data.should == raw_data
|
91
|
+
|
92
|
+
#THESE TESTS FAIL (now pass, the attach handler must be reinitialized to work)
|
93
|
+
#TODO: There is a metadata issue here, but not in general
|
94
|
+
#something strange about metadata being requested like this
|
95
|
+
#it might have to do with the retries?
|
96
|
+
attachment_metadata.should_not be_nil
|
97
|
+
att_md = attachment_metadata
|
98
|
+
att_md[:content_type].should == content_type
|
99
|
+
Time.parse(att_md[:file_modified]).should == Time.parse(modified_at)
|
100
|
+
end
|
101
|
+
end
|