puppet 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +0 -0
- data/COPYING +340 -0
- data/LICENSE +17 -0
- data/README +24 -0
- data/Rakefile +294 -0
- data/TODO +4 -0
- data/bin/cf2puppet +186 -0
- data/bin/puppet +176 -0
- data/bin/puppetca +213 -0
- data/bin/puppetd +246 -0
- data/bin/puppetdoc +184 -0
- data/bin/puppetmasterd +258 -0
- data/examples/code/allatonce +13 -0
- data/examples/code/assignments +11 -0
- data/examples/code/classing +35 -0
- data/examples/code/components +73 -0
- data/examples/code/execs +16 -0
- data/examples/code/failers/badclassnoparam +10 -0
- data/examples/code/failers/badclassparam +10 -0
- data/examples/code/failers/badcompnoparam +9 -0
- data/examples/code/failers/badcompparam +9 -0
- data/examples/code/failers/badtypeparam +3 -0
- data/examples/code/file.bl +11 -0
- data/examples/code/filedefaults +10 -0
- data/examples/code/fileparsing +116 -0
- data/examples/code/filerecursion +15 -0
- data/examples/code/functions +3 -0
- data/examples/code/groups +7 -0
- data/examples/code/head +30 -0
- data/examples/code/importing +8 -0
- data/examples/code/nodes +20 -0
- data/examples/code/one +8 -0
- data/examples/code/relationships +34 -0
- data/examples/code/selectors +28 -0
- data/examples/code/simpletests +11 -0
- data/examples/code/snippets/argumentdefaults +14 -0
- data/examples/code/snippets/casestatement +39 -0
- data/examples/code/snippets/classheirarchy.pp +15 -0
- data/examples/code/snippets/classincludes.pp +17 -0
- data/examples/code/snippets/classpathtest +11 -0
- data/examples/code/snippets/dirchmod +19 -0
- data/examples/code/snippets/failmissingexecpath.pp +13 -0
- data/examples/code/snippets/falsevalues.pp +3 -0
- data/examples/code/snippets/filecreate +11 -0
- data/examples/code/snippets/implicititeration +15 -0
- data/examples/code/snippets/multipleinstances +7 -0
- data/examples/code/snippets/namevartest +9 -0
- data/examples/code/snippets/scopetest +13 -0
- data/examples/code/snippets/selectorvalues.pp +22 -0
- data/examples/code/snippets/simpledefaults +5 -0
- data/examples/code/snippets/simpleselector +38 -0
- data/examples/code/svncommit +13 -0
- data/examples/root/bin/sleeper +69 -0
- data/examples/root/etc/configfile +0 -0
- data/examples/root/etc/debian-passwd +29 -0
- data/examples/root/etc/debian-syslog.conf +71 -0
- data/examples/root/etc/init.d/sleeper +65 -0
- data/examples/root/etc/otherfile +0 -0
- data/examples/root/etc/puppet/fileserver.conf +3 -0
- data/examples/root/etc/puppet/puppetmasterd.conf +10 -0
- data/ext/module:puppet +195 -0
- data/install.rb +270 -0
- data/lib/puppet.rb +249 -0
- data/lib/puppet/base64.rb +19 -0
- data/lib/puppet/client.rb +519 -0
- data/lib/puppet/config.rb +49 -0
- data/lib/puppet/daemon.rb +208 -0
- data/lib/puppet/element.rb +71 -0
- data/lib/puppet/event.rb +259 -0
- data/lib/puppet/log.rb +321 -0
- data/lib/puppet/metric.rb +250 -0
- data/lib/puppet/parsedfile.rb +38 -0
- data/lib/puppet/parser/ast.rb +1560 -0
- data/lib/puppet/parser/interpreter.rb +150 -0
- data/lib/puppet/parser/lexer.rb +226 -0
- data/lib/puppet/parser/parser.rb +1354 -0
- data/lib/puppet/parser/scope.rb +755 -0
- data/lib/puppet/server.rb +170 -0
- data/lib/puppet/server/authstore.rb +227 -0
- data/lib/puppet/server/ca.rb +140 -0
- data/lib/puppet/server/filebucket.rb +147 -0
- data/lib/puppet/server/fileserver.rb +477 -0
- data/lib/puppet/server/logger.rb +43 -0
- data/lib/puppet/server/master.rb +103 -0
- data/lib/puppet/server/servlet.rb +247 -0
- data/lib/puppet/sslcertificates.rb +737 -0
- data/lib/puppet/statechange.rb +150 -0
- data/lib/puppet/storage.rb +95 -0
- data/lib/puppet/transaction.rb +179 -0
- data/lib/puppet/transportable.rb +151 -0
- data/lib/puppet/type.rb +1354 -0
- data/lib/puppet/type/component.rb +141 -0
- data/lib/puppet/type/cron.rb +543 -0
- data/lib/puppet/type/exec.rb +316 -0
- data/lib/puppet/type/group.rb +152 -0
- data/lib/puppet/type/nameservice.rb +3 -0
- data/lib/puppet/type/nameservice/netinfo.rb +173 -0
- data/lib/puppet/type/nameservice/objectadd.rb +146 -0
- data/lib/puppet/type/nameservice/posix.rb +200 -0
- data/lib/puppet/type/package.rb +420 -0
- data/lib/puppet/type/package/apt.rb +70 -0
- data/lib/puppet/type/package/dpkg.rb +108 -0
- data/lib/puppet/type/package/rpm.rb +81 -0
- data/lib/puppet/type/package/sun.rb +117 -0
- data/lib/puppet/type/package/yum.rb +58 -0
- data/lib/puppet/type/pfile.rb +569 -0
- data/lib/puppet/type/pfile/checksum.rb +219 -0
- data/lib/puppet/type/pfile/create.rb +108 -0
- data/lib/puppet/type/pfile/group.rb +129 -0
- data/lib/puppet/type/pfile/mode.rb +131 -0
- data/lib/puppet/type/pfile/source.rb +264 -0
- data/lib/puppet/type/pfile/type.rb +31 -0
- data/lib/puppet/type/pfile/uid.rb +166 -0
- data/lib/puppet/type/pfilebucket.rb +80 -0
- data/lib/puppet/type/pprocess.rb +97 -0
- data/lib/puppet/type/service.rb +347 -0
- data/lib/puppet/type/service/base.rb +17 -0
- data/lib/puppet/type/service/debian.rb +50 -0
- data/lib/puppet/type/service/init.rb +145 -0
- data/lib/puppet/type/service/smf.rb +29 -0
- data/lib/puppet/type/state.rb +182 -0
- data/lib/puppet/type/symlink.rb +183 -0
- data/lib/puppet/type/tidy.rb +183 -0
- data/lib/puppet/type/typegen.rb +149 -0
- data/lib/puppet/type/typegen/filerecord.rb +243 -0
- data/lib/puppet/type/typegen/filetype.rb +316 -0
- data/lib/puppet/type/user.rb +290 -0
- data/lib/puppet/util.rb +138 -0
- data/test/certmgr/certmgr.rb +265 -0
- data/test/client/client.rb +203 -0
- data/test/executables/puppetbin.rb +53 -0
- data/test/executables/puppetca.rb +79 -0
- data/test/executables/puppetd.rb +71 -0
- data/test/executables/puppetmasterd.rb +153 -0
- data/test/executables/puppetmodule.rb +60 -0
- data/test/language/ast.rb +412 -0
- data/test/language/interpreter.rb +71 -0
- data/test/language/scope.rb +412 -0
- data/test/language/snippets.rb +445 -0
- data/test/other/events.rb +111 -0
- data/test/other/log.rb +195 -0
- data/test/other/metrics.rb +92 -0
- data/test/other/overrides.rb +115 -0
- data/test/other/parsedfile.rb +31 -0
- data/test/other/relationships.rb +113 -0
- data/test/other/state.rb +106 -0
- data/test/other/storage.rb +39 -0
- data/test/other/transactions.rb +235 -0
- data/test/parser/lexer.rb +120 -0
- data/test/parser/parser.rb +180 -0
- data/test/puppet/conffiles.rb +104 -0
- data/test/puppet/defaults.rb +100 -0
- data/test/puppet/error.rb +23 -0
- data/test/puppet/utiltest.rb +120 -0
- data/test/puppettest.rb +774 -0
- data/test/server/authstore.rb +209 -0
- data/test/server/bucket.rb +227 -0
- data/test/server/ca.rb +201 -0
- data/test/server/fileserver.rb +710 -0
- data/test/server/logger.rb +175 -0
- data/test/server/master.rb +150 -0
- data/test/server/server.rb +130 -0
- data/test/tagging/tagging.rb +80 -0
- data/test/test +51 -0
- data/test/types/basic.rb +119 -0
- data/test/types/component.rb +272 -0
- data/test/types/cron.rb +261 -0
- data/test/types/exec.rb +273 -0
- data/test/types/file.rb +616 -0
- data/test/types/filebucket.rb +167 -0
- data/test/types/fileignoresource.rb +287 -0
- data/test/types/filesources.rb +587 -0
- data/test/types/filetype.rb +162 -0
- data/test/types/group.rb +271 -0
- data/test/types/package.rb +205 -0
- data/test/types/query.rb +101 -0
- data/test/types/service.rb +100 -0
- data/test/types/symlink.rb +93 -0
- data/test/types/tidy.rb +124 -0
- data/test/types/type.rb +135 -0
- data/test/types/user.rb +371 -0
- metadata +243 -0
@@ -0,0 +1,162 @@
|
|
1
|
+
if __FILE__ == $0
|
2
|
+
$:.unshift '..'
|
3
|
+
$:.unshift '../../lib'
|
4
|
+
$puppetbase = "../../../../language/trunk"
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'puppet'
|
8
|
+
require 'puppet/type/typegen/filetype'
|
9
|
+
require 'puppet/type/typegen/filerecord'
|
10
|
+
require 'test/unit'
|
11
|
+
|
12
|
+
# $Id: filetype.rb 724 2005-10-22 22:27:20Z luke $
|
13
|
+
|
14
|
+
#class TestFileType < Test::Unit::TestCase
|
15
|
+
class TestFileType
|
16
|
+
def disabled_setup
|
17
|
+
Puppet[:loglevel] = :debug if __FILE__ == $0
|
18
|
+
|
19
|
+
@passwdtype = Puppet::Type::FileType["passwd"]
|
20
|
+
if @passwdtype.nil?
|
21
|
+
assert_nothing_raised() {
|
22
|
+
@passwdtype = Puppet::Type::FileType.createtype(
|
23
|
+
:name => "passwd"
|
24
|
+
)
|
25
|
+
@passwdtype.addrecord(
|
26
|
+
:name => "user",
|
27
|
+
:splitchar => ":",
|
28
|
+
:fields => %w{name password uid gid gcos home shell}
|
29
|
+
)
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
@syslogtype = Puppet::Type::FileType["syslog"]
|
34
|
+
if @syslogtype.nil?
|
35
|
+
assert_nothing_raised() {
|
36
|
+
@syslogtype = Puppet::Type::FileType.createtype(
|
37
|
+
:escapednewlines => true,
|
38
|
+
:name => "syslog"
|
39
|
+
)
|
40
|
+
@syslogtype.addrecord(
|
41
|
+
:name => "data",
|
42
|
+
:regex => %r{^([^#\s]+)\s+(\S+)$},
|
43
|
+
:joinchar => "\t",
|
44
|
+
:fields => %w{logs dest}
|
45
|
+
)
|
46
|
+
@syslogtype.addrecord(
|
47
|
+
:name => "comment",
|
48
|
+
:regex => %r{^(#.*)$},
|
49
|
+
:joinchar => "", # not really necessary...
|
50
|
+
:fields => %w{comment}
|
51
|
+
)
|
52
|
+
@syslogtype.addrecord(
|
53
|
+
:name => "blank",
|
54
|
+
:regex => %r{^(\s*)$},
|
55
|
+
:joinchar => "", # not really necessary...
|
56
|
+
:fields => %w{blank}
|
57
|
+
)
|
58
|
+
}
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
def disabled_test_passwd1_nochange
|
64
|
+
file = nil
|
65
|
+
type = nil
|
66
|
+
assert_nothing_raised() {
|
67
|
+
file = @passwdtype.new("/etc/passwd")
|
68
|
+
}
|
69
|
+
assert_nothing_raised() {
|
70
|
+
file.retrieve
|
71
|
+
}
|
72
|
+
|
73
|
+
assert(file.insync?)
|
74
|
+
|
75
|
+
contents = ""
|
76
|
+
::File.open("/etc/passwd") { |ofile|
|
77
|
+
ofile.each { |line|
|
78
|
+
contents += line
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
assert_equal(
|
83
|
+
contents,
|
84
|
+
file.to_s
|
85
|
+
)
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
def disabled_test_passwd2_change
|
90
|
+
file = nil
|
91
|
+
type = nil
|
92
|
+
Kernel.system("cp /etc/passwd /tmp/oparsepasswd")
|
93
|
+
assert_nothing_raised() {
|
94
|
+
file = @passwdtype.new("/tmp/oparsepasswd")
|
95
|
+
}
|
96
|
+
assert_nothing_raised() {
|
97
|
+
file.retrieve
|
98
|
+
}
|
99
|
+
|
100
|
+
assert(file.insync?)
|
101
|
+
|
102
|
+
assert_nothing_raised() {
|
103
|
+
file.add("user") { |obj|
|
104
|
+
obj["name"] = "yaytest"
|
105
|
+
obj["password"] = "x"
|
106
|
+
obj["uid"] = "10000"
|
107
|
+
obj["gid"] = "10000"
|
108
|
+
obj["home"] = "/home/yaytest"
|
109
|
+
obj["gcos"] = "The Yaytest"
|
110
|
+
obj["shell"] = "/bin/sh"
|
111
|
+
}
|
112
|
+
}
|
113
|
+
|
114
|
+
assert(!file.insync?)
|
115
|
+
|
116
|
+
assert_nothing_raised() {
|
117
|
+
file.sync
|
118
|
+
}
|
119
|
+
|
120
|
+
assert(file.insync?)
|
121
|
+
|
122
|
+
assert_nothing_raised() {
|
123
|
+
file.delete("bin")
|
124
|
+
}
|
125
|
+
|
126
|
+
assert(!file.insync?)
|
127
|
+
|
128
|
+
assert_nothing_raised() {
|
129
|
+
file.sync
|
130
|
+
}
|
131
|
+
|
132
|
+
assert(file.insync?)
|
133
|
+
|
134
|
+
Kernel.system("rm /tmp/oparsepasswd")
|
135
|
+
end
|
136
|
+
|
137
|
+
def disabled_test_syslog_nochange
|
138
|
+
file = nil
|
139
|
+
type = nil
|
140
|
+
syslog = File.join($puppetbase, "examples/root/etc/debian-syslog.conf")
|
141
|
+
assert_nothing_raised() {
|
142
|
+
file = @syslogtype.new(syslog)
|
143
|
+
}
|
144
|
+
assert_nothing_raised() {
|
145
|
+
file.retrieve
|
146
|
+
}
|
147
|
+
|
148
|
+
assert(file.insync?)
|
149
|
+
|
150
|
+
contents = ""
|
151
|
+
::File.open(syslog) { |ofile|
|
152
|
+
ofile.each { |line|
|
153
|
+
contents += line
|
154
|
+
}
|
155
|
+
}
|
156
|
+
#assert_equal(
|
157
|
+
# contents,
|
158
|
+
# file.to_s
|
159
|
+
#)
|
160
|
+
|
161
|
+
end
|
162
|
+
end
|
data/test/types/group.rb
ADDED
@@ -0,0 +1,271 @@
|
|
1
|
+
if __FILE__ == $0
|
2
|
+
$:.unshift '..'
|
3
|
+
$:.unshift '../../lib'
|
4
|
+
$puppetbase = "../../../../language/trunk"
|
5
|
+
end
|
6
|
+
|
7
|
+
# $Id: group.rb 742 2005-11-16 17:12:11Z luke $
|
8
|
+
|
9
|
+
require 'etc'
|
10
|
+
require 'puppet/type'
|
11
|
+
require 'puppettest'
|
12
|
+
require 'test/unit'
|
13
|
+
|
14
|
+
class TestGroup < Test::Unit::TestCase
|
15
|
+
include TestPuppet
|
16
|
+
def setup
|
17
|
+
super
|
18
|
+
@@tmpgroups = []
|
19
|
+
end
|
20
|
+
|
21
|
+
def teardown
|
22
|
+
Puppet::Type::Group.clear
|
23
|
+
@@tmpgroups.each { |group|
|
24
|
+
unless missing?(group)
|
25
|
+
remove(group)
|
26
|
+
end
|
27
|
+
}
|
28
|
+
super
|
29
|
+
end
|
30
|
+
|
31
|
+
case Facter["operatingsystem"].value
|
32
|
+
when "Darwin":
|
33
|
+
def missing?(group)
|
34
|
+
output = %x{nidump -r /groups/#{group} / 2>/dev/null}.chomp
|
35
|
+
|
36
|
+
if output == ""
|
37
|
+
return true
|
38
|
+
else
|
39
|
+
return false
|
40
|
+
end
|
41
|
+
|
42
|
+
assert_equal("", output, "Group %s is present:\n%s" % [group, output])
|
43
|
+
end
|
44
|
+
|
45
|
+
def gid(name)
|
46
|
+
%x{nireport / /groups name gid}.split("\n").each { |line|
|
47
|
+
group, id = line.chomp.split(/\s+/)
|
48
|
+
if group == name
|
49
|
+
return Integer(id)
|
50
|
+
end
|
51
|
+
}
|
52
|
+
|
53
|
+
return nil
|
54
|
+
end
|
55
|
+
|
56
|
+
def remove(group)
|
57
|
+
system("niutil -destroy / /groups/%s" % group)
|
58
|
+
end
|
59
|
+
else
|
60
|
+
def missing?(group)
|
61
|
+
begin
|
62
|
+
obj = Etc.getgrnam(group)
|
63
|
+
return false
|
64
|
+
rescue ArgumentError
|
65
|
+
return true
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def gid(name)
|
70
|
+
assert_nothing_raised {
|
71
|
+
obj = Etc.getgrnam(name)
|
72
|
+
return obj.gid
|
73
|
+
}
|
74
|
+
|
75
|
+
return nil
|
76
|
+
end
|
77
|
+
|
78
|
+
def remove(group)
|
79
|
+
system("groupdel %s" % group)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def groupnames
|
84
|
+
%x{groups}.chomp.split(/ /)
|
85
|
+
end
|
86
|
+
|
87
|
+
def groupids
|
88
|
+
Process.groups
|
89
|
+
end
|
90
|
+
|
91
|
+
def attrtest_gid(group)
|
92
|
+
obj = nil
|
93
|
+
#assert_nothing_raised {
|
94
|
+
# obj = Etc.getgrnam(group[:name])
|
95
|
+
#}
|
96
|
+
group.retrieve
|
97
|
+
old = gid(group[:name])
|
98
|
+
comp = newcomp("gidtest", group)
|
99
|
+
|
100
|
+
group[:gid] = old
|
101
|
+
|
102
|
+
trans = assert_events(comp, [], "group")
|
103
|
+
|
104
|
+
newgid = old
|
105
|
+
while true
|
106
|
+
newgid += 1
|
107
|
+
|
108
|
+
if newgid - old > 1000
|
109
|
+
$stderr.puts "Could not find extra test UID"
|
110
|
+
return
|
111
|
+
end
|
112
|
+
begin
|
113
|
+
Etc.getgrgid(newgid)
|
114
|
+
rescue ArgumentError => detail
|
115
|
+
break
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
assert_nothing_raised("Failed to change group id") {
|
120
|
+
group[:gid] = newgid
|
121
|
+
}
|
122
|
+
|
123
|
+
trans = assert_events(comp, [:group_modified], "group")
|
124
|
+
|
125
|
+
curgid = nil
|
126
|
+
assert_nothing_raised {
|
127
|
+
curgid = gid(group[:name])
|
128
|
+
}
|
129
|
+
|
130
|
+
assert_equal(newgid, curgid, "GID was not changed")
|
131
|
+
|
132
|
+
assert_rollback_events(trans, [:group_modified], "group")
|
133
|
+
|
134
|
+
assert_nothing_raised {
|
135
|
+
curgid = gid(group[:name])
|
136
|
+
}
|
137
|
+
|
138
|
+
assert_equal(old, curgid, "UID was not reverted")
|
139
|
+
end
|
140
|
+
|
141
|
+
# Disabled, because it was testing implementation, not function
|
142
|
+
def disabled_test_eachmethod
|
143
|
+
obj = Etc.getgrnam(groupnames()[0])
|
144
|
+
|
145
|
+
assert(obj, "Could not retrieve test group object")
|
146
|
+
|
147
|
+
Puppet::Type::Group.validstates.each { |name, state|
|
148
|
+
assert_nothing_raised {
|
149
|
+
method = state.infomethod
|
150
|
+
assert(method, "State %s has no infomethod" % name)
|
151
|
+
assert(obj.respond_to?(method),
|
152
|
+
"State %s has an invalid method %s" %
|
153
|
+
[name, method]
|
154
|
+
)
|
155
|
+
}
|
156
|
+
|
157
|
+
assert_nothing_raised {
|
158
|
+
method = state.infomethod
|
159
|
+
assert(method, "State %s has no infomethod" % name)
|
160
|
+
assert(obj.respond_to?(method),
|
161
|
+
"State %s has an invalid method %s" %
|
162
|
+
[name, method]
|
163
|
+
)
|
164
|
+
}
|
165
|
+
}
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_owngroups
|
169
|
+
groupnames().each { |group|
|
170
|
+
gobj = nil
|
171
|
+
comp = nil
|
172
|
+
assert_nothing_raised {
|
173
|
+
gobj = Puppet::Type::Group.create(
|
174
|
+
:name => group,
|
175
|
+
:check => [:gid]
|
176
|
+
)
|
177
|
+
|
178
|
+
comp = newcomp("grouptest %s" % group, gobj)
|
179
|
+
}
|
180
|
+
|
181
|
+
trans = nil
|
182
|
+
assert_nothing_raised {
|
183
|
+
trans = comp.evaluate
|
184
|
+
}
|
185
|
+
|
186
|
+
assert(gobj.is(:gid), "Failed to retrieve gid")
|
187
|
+
}
|
188
|
+
end
|
189
|
+
|
190
|
+
# Test that we can query things
|
191
|
+
# It'd be nice if we could automate this...
|
192
|
+
def test_checking
|
193
|
+
require 'etc'
|
194
|
+
|
195
|
+
name = nil
|
196
|
+
assert_nothing_raised {
|
197
|
+
name = Etc.getgrgid(Process.gid).name
|
198
|
+
}
|
199
|
+
user = nil
|
200
|
+
assert_nothing_raised {
|
201
|
+
checks = Puppet::Type::Group.validstates
|
202
|
+
user = Puppet::Type::Group.create(
|
203
|
+
:name => name,
|
204
|
+
:check => checks
|
205
|
+
)
|
206
|
+
}
|
207
|
+
|
208
|
+
assert_nothing_raised {
|
209
|
+
user.retrieve
|
210
|
+
}
|
211
|
+
|
212
|
+
assert_equal(Process.gid, user.is(:gid), "Retrieved UID does not match")
|
213
|
+
end
|
214
|
+
|
215
|
+
if Process.uid == 0
|
216
|
+
def test_mkgroup
|
217
|
+
gobj = nil
|
218
|
+
comp = nil
|
219
|
+
name = "pptestgr"
|
220
|
+
|
221
|
+
os = Facter["operatingsystem"].value
|
222
|
+
|
223
|
+
#if os == "Darwin"
|
224
|
+
# obj = nil
|
225
|
+
# assert_nothing_raised {
|
226
|
+
# obj = Etc.getgrnam(name)
|
227
|
+
# }
|
228
|
+
# assert_equal(-2, obj.gid, "Darwin GID is not -2")
|
229
|
+
#else
|
230
|
+
#assert_raise(ArgumentError) {
|
231
|
+
# obj = Etc.getgrnam(name)
|
232
|
+
#}
|
233
|
+
#end
|
234
|
+
assert(missing?(name), "Group %s is still present" % name)
|
235
|
+
|
236
|
+
assert_nothing_raised {
|
237
|
+
gobj = Puppet::Type::Group.create(
|
238
|
+
:name => name
|
239
|
+
)
|
240
|
+
|
241
|
+
comp = newcomp("groupmaker %s" % name, gobj)
|
242
|
+
}
|
243
|
+
|
244
|
+
@@tmpgroups << name
|
245
|
+
trans = assert_events(comp, [:group_created], "group")
|
246
|
+
|
247
|
+
obj = nil
|
248
|
+
assert_nothing_raised {
|
249
|
+
obj = Etc.getgrnam(name)
|
250
|
+
}
|
251
|
+
assert(!missing?(name), "Group %s is missing" % name)
|
252
|
+
|
253
|
+
tests = Puppet::Type::Group.validstates
|
254
|
+
|
255
|
+
gobj.retrieve
|
256
|
+
tests.each { |test|
|
257
|
+
if self.respond_to?("attrtest_%s" % test)
|
258
|
+
self.send("attrtest_%s" % test, gobj)
|
259
|
+
else
|
260
|
+
#$stderr.puts "Not testing attr %s of group" % test
|
261
|
+
end
|
262
|
+
}
|
263
|
+
|
264
|
+
assert_rollback_events(trans, [:group_deleted], "group")
|
265
|
+
|
266
|
+
assert(missing?(name), "Group %s is still present" % name)
|
267
|
+
end
|
268
|
+
else
|
269
|
+
$stderr.puts "Not running as root; skipping group creation tests."
|
270
|
+
end
|
271
|
+
end
|
@@ -0,0 +1,205 @@
|
|
1
|
+
if __FILE__ == $0
|
2
|
+
$:.unshift '..'
|
3
|
+
$:.unshift '../../lib'
|
4
|
+
$puppetbase = "../.."
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'puppettest'
|
8
|
+
require 'puppet'
|
9
|
+
require 'test/unit'
|
10
|
+
require 'facter'
|
11
|
+
|
12
|
+
$platform = Facter["operatingsystem"].value
|
13
|
+
|
14
|
+
unless Puppet::Type::Package.default
|
15
|
+
puts "No default package type for %s; skipping package tests" % $platform
|
16
|
+
else
|
17
|
+
|
18
|
+
class TestPackageSource < Test::Unit::TestCase
|
19
|
+
include TestPuppet
|
20
|
+
def test_filesource
|
21
|
+
system("touch /tmp/fakepackage")
|
22
|
+
assert_equal(
|
23
|
+
"/tmp/fakepackage",
|
24
|
+
Puppet::PackageSource.get("file:///tmp/fakepackage")
|
25
|
+
)
|
26
|
+
system("rm -f /tmp/fakepackage")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class TestPackages < Test::Unit::TestCase
|
31
|
+
include FileTesting
|
32
|
+
def setup
|
33
|
+
super
|
34
|
+
#@list = Puppet::Type::Package.getpkglist
|
35
|
+
Puppet::Type::Package.clear
|
36
|
+
end
|
37
|
+
|
38
|
+
# These are packages that we're sure will be installed
|
39
|
+
def installedpkgs
|
40
|
+
pkgs = nil
|
41
|
+
case $platform
|
42
|
+
when "SunOS"
|
43
|
+
pkgs = %w{SMCossh}
|
44
|
+
when "Linux"
|
45
|
+
case Facter["distro"].value
|
46
|
+
when "Debian": pkgs = %w{ssh openssl}
|
47
|
+
when "Fedora": pkgs = %w{openssh}
|
48
|
+
#when "RedHat": type = :rpm
|
49
|
+
else
|
50
|
+
Puppet.notice "No test package for %s" % $platform
|
51
|
+
return []
|
52
|
+
end
|
53
|
+
else
|
54
|
+
Puppet.notice "No test package for %s" % $platform
|
55
|
+
return []
|
56
|
+
end
|
57
|
+
|
58
|
+
return pkgs
|
59
|
+
end
|
60
|
+
|
61
|
+
def tstpkg
|
62
|
+
case $platform
|
63
|
+
#when "SunOS"
|
64
|
+
# type = "sunpkg"
|
65
|
+
when "Linux"
|
66
|
+
case Facter["distro"].value
|
67
|
+
when "Debian":
|
68
|
+
return %w{zec}
|
69
|
+
#when "RedHat": type = :rpm
|
70
|
+
when "Fedora":
|
71
|
+
return %w{wv}
|
72
|
+
else
|
73
|
+
Puppet.notice "No test packags for %s" % $platform
|
74
|
+
return nil
|
75
|
+
end
|
76
|
+
else
|
77
|
+
Puppet.notice "No test packags for %s" % $platform
|
78
|
+
return nil
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def mkpkgcomp(pkg)
|
83
|
+
assert_nothing_raised {
|
84
|
+
pkg = Puppet::Type::Package.create(:name => pkg, :install => true)
|
85
|
+
}
|
86
|
+
assert_nothing_raised {
|
87
|
+
pkg.retrieve
|
88
|
+
}
|
89
|
+
|
90
|
+
comp = newcomp("package", pkg)
|
91
|
+
|
92
|
+
return comp
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_retrievepkg
|
96
|
+
installedpkgs().each { |pkg|
|
97
|
+
obj = nil
|
98
|
+
assert_nothing_raised {
|
99
|
+
obj = Puppet::Type::Package.create(
|
100
|
+
:name => pkg
|
101
|
+
)
|
102
|
+
}
|
103
|
+
|
104
|
+
assert(obj, "could not create package")
|
105
|
+
|
106
|
+
assert_nothing_raised {
|
107
|
+
obj.retrieve
|
108
|
+
}
|
109
|
+
|
110
|
+
assert(obj.is(:install), "Could not retrieve package version")
|
111
|
+
}
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_nosuchpkg
|
115
|
+
obj = nil
|
116
|
+
assert_nothing_raised {
|
117
|
+
obj = Puppet::Type::Package.create(
|
118
|
+
:name => "thispackagedoesnotexist"
|
119
|
+
)
|
120
|
+
}
|
121
|
+
|
122
|
+
assert_nothing_raised {
|
123
|
+
obj.retrieve
|
124
|
+
}
|
125
|
+
|
126
|
+
assert_equal(:notinstalled, obj.is(:install),
|
127
|
+
"Somehow retrieved unknown pkg's version")
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_latestpkg
|
131
|
+
pkgs = tstpkg || return
|
132
|
+
|
133
|
+
pkgs.each { |name|
|
134
|
+
pkg = Puppet::Type::Package.create(:name => name)
|
135
|
+
assert_nothing_raised {
|
136
|
+
assert(pkg.latest, "Package did not return value for 'latest'")
|
137
|
+
}
|
138
|
+
}
|
139
|
+
end
|
140
|
+
|
141
|
+
unless Process.uid == 0
|
142
|
+
$stderr.puts "Run as root to perform package installation tests"
|
143
|
+
else
|
144
|
+
def test_installpkg
|
145
|
+
pkgs = tstpkg || return
|
146
|
+
pkgs.each { |pkg|
|
147
|
+
# we first set install to 'true', and make sure something gets
|
148
|
+
# installed
|
149
|
+
assert_nothing_raised {
|
150
|
+
pkg = Puppet::Type::Package.create(:name => pkg, :install => true)
|
151
|
+
}
|
152
|
+
assert_nothing_raised {
|
153
|
+
pkg.retrieve
|
154
|
+
}
|
155
|
+
|
156
|
+
if pkg.insync?
|
157
|
+
Puppet.notice "Test package %s is already installed; please choose a different package for testing" % pkg
|
158
|
+
next
|
159
|
+
end
|
160
|
+
|
161
|
+
comp = newcomp("package", pkg)
|
162
|
+
|
163
|
+
assert_events(comp, [:package_installed], "package")
|
164
|
+
|
165
|
+
# then uninstall it
|
166
|
+
assert_nothing_raised {
|
167
|
+
pkg[:install] = false
|
168
|
+
}
|
169
|
+
|
170
|
+
|
171
|
+
pkg.retrieve
|
172
|
+
|
173
|
+
assert(! pkg.insync?, "Package is insync")
|
174
|
+
|
175
|
+
assert_events(comp, [:package_removed], "package")
|
176
|
+
|
177
|
+
# and now set install to 'latest' and verify it installs
|
178
|
+
# FIXME this isn't really a very good test -- we should install
|
179
|
+
# a low version, and then upgrade using this. But, eh.
|
180
|
+
assert_nothing_raised {
|
181
|
+
pkg[:install] = "latest"
|
182
|
+
}
|
183
|
+
|
184
|
+
assert_events(comp, [:package_installed], "package")
|
185
|
+
|
186
|
+
pkg.retrieve
|
187
|
+
assert(pkg.insync?, "After install, package is not insync")
|
188
|
+
|
189
|
+
assert_nothing_raised {
|
190
|
+
pkg[:install] = false
|
191
|
+
}
|
192
|
+
|
193
|
+
|
194
|
+
pkg.retrieve
|
195
|
+
|
196
|
+
assert(! pkg.insync?, "Package is insync")
|
197
|
+
|
198
|
+
assert_events(comp, [:package_removed], "package")
|
199
|
+
}
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
# $Id: package.rb 742 2005-11-16 17:12:11Z luke $
|