summaryrefslogtreecommitdiffstats
path: root/test/network/server/logger.rb
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-02-08 02:22:57 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-02-08 02:22:57 +0000
commita216df2bcb304ad379e152f2f59ef7d942f54f3b (patch)
treeeef3289c588cf44373fe959619d732c5a05ab7b5 /test/network/server/logger.rb
parent7e07e3dc843798bdbc7a03428ca054adaff2fb72 (diff)
Okay, last file moves for the night. The test code has been moved to match the lib directory, and I have moved a couple of things into network/ instead of network/server, since they did not belong as much.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2180 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'test/network/server/logger.rb')
-rwxr-xr-xtest/network/server/logger.rb179
1 files changed, 179 insertions, 0 deletions
diff --git a/test/network/server/logger.rb b/test/network/server/logger.rb
new file mode 100755
index 000000000..7298062ca
--- /dev/null
+++ b/test/network/server/logger.rb
@@ -0,0 +1,179 @@
+#!/usr/bin/env ruby
+
+$:.unshift("../../lib") if __FILE__ =~ /\.rb$/
+
+require 'puppettest'
+require 'base64'
+require 'cgi'
+
+class TestLogger < Test::Unit::TestCase
+ include PuppetTest::ServerTest
+
+ def setup
+ super
+ #Puppet[:debug] = true
+ Puppet::Util::Log.newdestination :console
+ end
+
+ # Test the log driver manually
+ def test_localaddlog
+ logger = nil
+ assert_nothing_raised {
+ logger = Puppet::Network::Server::Logger.new
+ }
+
+ msg = nil
+ assert_nothing_raised {
+ msg = Puppet::Util::Log.create(
+ :level => :warning,
+ :message => "This is a message"
+ )
+ }
+
+ assert_nothing_raised {
+ logger.addlog(msg)
+ }
+ end
+
+ # Test it while replicating a remote client
+ def test_remoteaddlog
+ logger = nil
+ assert_nothing_raised {
+ logger = Puppet::Network::Server::Logger.new
+ }
+
+ msg = nil
+ assert_nothing_raised {
+ msg = Puppet::Util::Log.create(
+ :level => :warning,
+ :message => "This is a remote message"
+ )
+ }
+
+ assert_nothing_raised {
+ msg = CGI.escape(YAML.dump(msg))
+ }
+ assert_nothing_raised {
+ logger.addlog(msg, "localhost", "127.0.0.1")
+ }
+ end
+
+ # Now test it with a real client and server, but not remote
+ def test_localclient
+ client = nil
+ assert_nothing_raised {
+ client = Puppet::Network::Client::LogClient.new(:Logger => true)
+ }
+
+ msg = nil
+ assert_nothing_raised {
+ msg = Puppet::Util::Log.create(
+ :level => :warning,
+ :message => "This is a logclient message"
+ )
+ }
+
+ msg = CGI.escape(YAML.dump(msg))
+
+ assert_nothing_raised {
+ client.addlog(msg, "localhost", "127.0.0.1")
+ }
+ end
+
+ # And now test over the network
+ # This test is disabled, since it doesn't work well and it's not the right
+ # solution anyway.
+ def disabled_test_logclient
+ pid = nil
+ clientlog = tempfile()
+ serverlog = tempfile()
+ Puppet.warning "serverlog is %s" % serverlog
+ Puppet::Util::Log.newdestination clientlog
+ Puppet::Util::Log.close(:syslog)
+
+ # For testing
+ Puppet[:autosign] = true
+
+ logger = nil
+ # Create our server
+ assert_nothing_raised {
+ logger = Puppet::Network::Server.new(
+ :Port => @@port,
+ :Handlers => {
+ :CA => {}, # so that certs autogenerate
+ :Logger => {}
+ }
+ )
+ }
+
+ # Start our server
+ serverpid = fork {
+ Puppet::Util::Log.close(clientlog)
+ Puppet::Util::Log.newdestination serverlog
+ assert_nothing_raised() {
+ trap(:INT) { logger.shutdown }
+ logger.start
+ }
+ }
+ @@tmppids << serverpid
+ sleep(0.5)
+
+ # Start a raw xmlrpc client
+ client = nil
+ assert_nothing_raised() {
+ client = Puppet::Network::Client::LogClient.new(
+ :Server => "localhost",
+ :Port => @@port
+ )
+ unless client.readcert
+ raise "Could not get certs"
+ end
+ }
+ retval = nil
+
+ {
+ :notice => "XMLRPC1",
+ :warning => "XMLRPC2",
+ :err => "XMLRPC3"
+ }.each { |level, str|
+ msg = CGI.escape(YAML.dump(Puppet::Util::Log.create(
+ :level => level,
+ :message => str
+ )))
+ assert_nothing_raised {
+ retval = client.addlog(msg)
+ }
+ }
+
+ # and now use the normal client action
+
+ # Set the log destination to be the server
+ Puppet::Util::Log.newdestination "localhost:%s" % @@port
+
+ # And now do some logging
+ assert_nothing_raised {
+ Puppet.notice "TEST1"
+ Puppet.warning "TEST2"
+ Puppet.err "TEST3"
+ }
+
+ assert_nothing_raised {
+ Process.kill("INT", serverpid)
+ }
+
+ assert(FileTest.exists?(serverlog), "Server log does not exist")
+
+ # Give it a bit to flush to disk
+ sleep(0.5)
+ content = nil
+ assert_nothing_raised {
+ content = File.read(serverlog)
+ }
+
+ %w{TEST1 TEST2 TEST3}.each { |str|
+ assert(content =~ %r{#{str}}, "Content does not match %s" % str)
+ }
+ end
+end
+
+# $Id$