backupgemsteven 0.1.2

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,21 @@
1
+ require 'fileutils'
2
+
3
+ class StateRecorder
4
+ attr_accessor :sons_since_last_promotion
5
+ attr_accessor :fathers_since_last_promotion
6
+ attr_accessor :saved_state_folder
7
+
8
+ def initialize
9
+ @sons_since_last_promotion = 0
10
+ @fathers_since_last_promotion = 0
11
+ end
12
+
13
+ # cleanup all the snapshots created by madeline
14
+ def cleanup_snapshots
15
+ files = Dir[saved_state_folder + "/*.snapshot"]
16
+ files.pop
17
+ files.sort.each do |f|
18
+ FileUtils.rm(f, :verbose => false)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,69 @@
1
+ require File.dirname(__FILE__) + "/tests_helper"
2
+
3
+ class ActorTest < Test::Unit::TestCase
4
+ def setup
5
+ @config = Backup::Configuration.new
6
+ @config.load "standard"
7
+ @actor = @config.actor
8
+ setup_tmp_backup_dir
9
+ end
10
+
11
+ def dont_test_exists
12
+ assert @actor
13
+ end
14
+
15
+ def dont_test_is_file
16
+ dir = create_tmp_files
17
+ config = <<-END
18
+ action :content, :is_file => "#{dir}/1"
19
+ END
20
+ @config.load :string => config
21
+ assert result = @actor.content
22
+ assert File.exists?(result)
23
+ puts "content result is: #{result}"
24
+ @actor.start_process!
25
+ end
26
+
27
+ def dont_test_is_folder
28
+ dir = create_tmp_files
29
+ config = <<-END
30
+ action :content, :is_folder => "#{dir}"
31
+ END
32
+ @config.load :string => config
33
+ assert result = @actor.content
34
+ assert File.exists?(result)
35
+ assert File.directory?(result)
36
+ puts "content result is: #{result}"
37
+ @actor.start_process!
38
+ end
39
+
40
+ def test_is_contents_of
41
+ dir = create_tmp_files
42
+ config = <<-END
43
+ action :content, :is_contents_of => "#{dir}", :copy => true
44
+ END
45
+ @config.load :string => config
46
+ #@actor.content
47
+ #@actor.cleanup
48
+ @actor.start_process!
49
+ end
50
+
51
+ private
52
+ def setup_tmp_backup_dir
53
+ newtmp = @config[:tmp_dir] + "/backup_#{rand}_" + Time.now.strftime("%Y%m%d%H%M%S")
54
+ sh "mkdir #{newtmp}"
55
+ config = <<-END
56
+ set :backup_path, "#{newtmp}"
57
+ END
58
+ @config.load :string => config
59
+ end
60
+
61
+ def create_tmp_files
62
+ newtmp = @config[:tmp_dir] + "/test_#{rand}_" + Time.now.strftime("%Y%m%d%H%M%S")
63
+ sh "mkdir #{newtmp}"
64
+ 0.upto(5) { |i| sh "touch #{newtmp}/#{i}" }
65
+ newtmp
66
+ end
67
+
68
+ end
69
+
data/tests/cleanup.sh ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/bash
2
+ LOOK_IN="/var/local/backups/mediawiki/sons"; COUNT=`ls -1 $LOOK_IN | wc -l`; MAX=14; if (( $COUNT > $MAX )); then let "OFFSET=$COUNT-$MAX"; i=1; for f in `ls -1 $LOOK_IN | sort`; do if (( $i <= $OFFSET )); then CMD="rm $LOOK_IN/$f"; echo $CMD; $CMD; fi; echo "$i $f"; let "i=$i + 1"; done; else true; fi
@@ -0,0 +1,40 @@
1
+ require File.dirname(__FILE__) + "/tests_helper"
2
+
3
+ class S3Test < Test::Unit::TestCase
4
+
5
+ # These tests require actual S3 access keys set as environment variables
6
+
7
+ def setup
8
+ @config = Backup::Configuration.new
9
+ @config.load "standard"
10
+ @config.set :backup_path, 'test_backup'
11
+ @config.action :deliver, :method => :s3
12
+ @actor = Backup::S3Actor.new(@config)
13
+ end
14
+
15
+ def test_exists
16
+ assert @config
17
+ assert @actor
18
+ end
19
+
20
+ def test_on_s3
21
+ dir = create_tmp_files
22
+ config = <<-END
23
+ action :content, :is_folder => "#{dir}"
24
+ action :rotate, :method => :via_s3
25
+ END
26
+ @config.load :string => config
27
+ assert result = @config.actor.content
28
+ assert File.exists?(result)
29
+ @config.actor.start_process!
30
+ end
31
+
32
+ private
33
+
34
+ def create_tmp_files
35
+ newtmp = @config[:tmp_dir] + "/test_#{rand}_" + Time.now.strftime("%Y%m%d%H%M%S")
36
+ sh "mkdir #{newtmp}"
37
+ 0.upto(5) { |i| sh "touch #{newtmp}/#{i}" }
38
+ newtmp
39
+ end
40
+ end
@@ -0,0 +1,31 @@
1
+ require File.dirname(__FILE__) + "/tests_helper"
2
+ require 'runt'
3
+ require 'date'
4
+
5
+ class RotationTest < Test::Unit::TestCase
6
+ def setup
7
+ # setup our config to test the objects
8
+ @config = Backup::Configuration.new
9
+ @config.load "standard"
10
+ @rotator = Backup::Rotator.new(@config.actor)
11
+ end
12
+
13
+ def test_rotator
14
+ t = Date.today
15
+ r = @rotator
16
+ 0.upto(14) do |i|
17
+ $test_time = t
18
+ print t.to_s + t.strftime(" #{i} %a ").to_s
19
+ puts r.todays_generation
20
+ t += 1
21
+ end
22
+ end
23
+
24
+ def test_date_parsing
25
+ dp = Backup::DateParser.new
26
+ assert fri = dp.date_from(:fri)
27
+ assert daily = dp.date_from(:daily)
28
+ assert last = dp.date_from(:last_mon_of_the_month)
29
+ assert_raise(RuntimeError) { dp.date_from(:asdfasdf) }
30
+ end
31
+ end
data/tests/s3_test.rb ADDED
@@ -0,0 +1,40 @@
1
+ require File.dirname(__FILE__) + "/tests_helper"
2
+
3
+ class S3Test < Test::Unit::TestCase
4
+
5
+ # These tests require actual S3 access keys set as environment variables
6
+
7
+ def setup
8
+ @config = Backup::Configuration.new
9
+ @config.load "standard"
10
+ @config.set :backup_path, 'test_backup'
11
+ @config.action :deliver, :method => :s3
12
+ @actor = Backup::S3Actor.new(@config)
13
+ end
14
+
15
+ def test_exists
16
+ assert @config
17
+ assert @actor
18
+ end
19
+
20
+ def test_on_s3
21
+ dir = create_tmp_files
22
+ config = <<-END
23
+ action :content, :is_folder => "#{dir}"
24
+ action :rotate, :method => :via_s3
25
+ END
26
+ @config.load :string => config
27
+ assert result = @config.actor.content
28
+ assert File.exists?(result)
29
+ @config.actor.start_process!
30
+ end
31
+
32
+ private
33
+
34
+ def create_tmp_files
35
+ newtmp = @config[:tmp_dir] + "/test_#{rand}_" + Time.now.strftime("%Y%m%d%H%M%S")
36
+ sh "mkdir #{newtmp}"
37
+ 0.upto(5) { |i| sh "touch #{newtmp}/#{i}" }
38
+ newtmp
39
+ end
40
+ end
data/tests/ssh_test.rb ADDED
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + "/tests_helper"
2
+
3
+ class SSHTest < Test::Unit::TestCase
4
+ def setup
5
+ @config = Backup::Configuration.new
6
+ @config.load "standard"
7
+ @config.action :deliver, :method => :ssh
8
+ @actor = Backup::SshActor.new(@config)
9
+ end
10
+
11
+ def test_exists
12
+ assert @config
13
+ assert @actor
14
+ end
15
+
16
+ def test_on_remote
17
+ @actor.on_remote do
18
+ run "echo \"hello $HOSTNAME\""
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,5 @@
1
+ $:.unshift File.dirname(__FILE__) + "/../lib"
2
+
3
+ require 'test/unit'
4
+ require 'backup'
5
+ require 'backup/extensions'
metadata ADDED
@@ -0,0 +1,165 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: backupgemsteven
3
+ version: !ruby/object:Gem::Version
4
+ hash: 31
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 2
10
+ version: 0.1.2
11
+ platform: ruby
12
+ authors:
13
+ - Nate Murray
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-01-27 00:00:00 +01:00
19
+ default_executable: backup
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rake
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 1
30
+ segments:
31
+ - 0
32
+ - 7
33
+ - 1
34
+ version: 0.7.1
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: runt
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 19
46
+ segments:
47
+ - 0
48
+ - 3
49
+ - 0
50
+ version: 0.3.0
51
+ type: :runtime
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: net-ssh
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 15
62
+ segments:
63
+ - 2
64
+ - 0
65
+ - 0
66
+ version: 2.0.0
67
+ type: :runtime
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: madeleine
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ hash: 5
78
+ segments:
79
+ - 0
80
+ - 7
81
+ - 3
82
+ version: 0.7.3
83
+ type: :runtime
84
+ version_requirements: *id004
85
+ description:
86
+ email: nate@natemurray.com
87
+ executables:
88
+ - backup
89
+ extensions: []
90
+
91
+ extra_rdoc_files:
92
+ - CHANGELOG
93
+ - Rakefile
94
+ - TODO
95
+ files:
96
+ - bin/backup
97
+ - bin/commands.sh
98
+ - doc/LICENSE-GPL.txt
99
+ - doc/index.html
100
+ - doc/styles.css
101
+ - examples/global.rb
102
+ - examples/mediawiki.rb
103
+ - examples/mediawiki_numeric.rb
104
+ - examples/s3.rb
105
+ - lib/backup.rb
106
+ - lib/backup/actor.rb
107
+ - lib/backup/cli.rb
108
+ - lib/backup/configuration.rb
109
+ - lib/backup/date_parser.rb
110
+ - lib/backup/extensions.rb
111
+ - lib/backup/recipes/standard.rb
112
+ - lib/backup/rotator.rb
113
+ - lib/backup/s3_helpers.rb
114
+ - lib/backup/ssh_helpers.rb
115
+ - lib/backup/state_recorder.rb
116
+ - tests/actor_test.rb
117
+ - tests/cleanup.sh
118
+ - tests/optional/s3_test.rb
119
+ - tests/rotation_test.rb
120
+ - tests/s3_test.rb
121
+ - tests/ssh_test.rb
122
+ - tests/tests_helper.rb
123
+ - CHANGELOG
124
+ - Rakefile
125
+ - TODO
126
+ has_rdoc: true
127
+ homepage: http://tech.natemurray.com/backup
128
+ licenses: []
129
+
130
+ post_install_message:
131
+ rdoc_options:
132
+ - --charset=UTF-8
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ hash: 3
141
+ segments:
142
+ - 0
143
+ version: "0"
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ hash: 3
150
+ segments:
151
+ - 0
152
+ version: "0"
153
+ requirements: []
154
+
155
+ rubyforge_project: backupgem
156
+ rubygems_version: 1.3.7
157
+ signing_key:
158
+ specification_version: 3
159
+ summary: Beginning-to-end solution for backups and rotation.
160
+ test_files:
161
+ - tests/actor_test.rb
162
+ - tests/optional/s3_test.rb
163
+ - tests/rotation_test.rb
164
+ - tests/s3_test.rb
165
+ - tests/ssh_test.rb