tinkit 0.0.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.
- 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
|