aboutsummaryrefslogtreecommitdiffstats
path: root/tests/report_tests.py
diff options
context:
space:
mode:
authorJesse Jaggars <jhjaggars@gmail.com>2011-12-14 16:05:59 -0600
committerJesse Jaggars <jhjaggars@gmail.com>2011-12-14 16:05:59 -0600
commit6ea48cbbc85d007dfefd1f254db66ff2e0a9cec5 (patch)
tree35188a9f5f2be7f3ae6ea52beea0883dca47abda /tests/report_tests.py
parent1e83a26da25981f362d4acc35d61dfa3b2ab56a3 (diff)
downloadsos-6ea48cbbc85d007dfefd1f254db66ff2e0a9cec5.tar.gz
Major updates to most of SoSReport
Code reorganization Cross platform support for Windows, OS X and Linux Dynamically loaded policies Support for loading plugins from multiple locations via __path__ modification of sos.plugins Support for running via Jython Support for executing from a jarfile Support for json based reporting infrastructure - Previous reporting methods still exist Support for other checksum algorithms (determined by policy) Support for other compression algorithms (determined by policy) New plugin API for writing arbitrary information in a new file inside the report archive. New plugin API for modifying files that have been added to the archive. Added API for global plugin options - external interface is unavailable at this time Many small bugfixes
Diffstat (limited to 'tests/report_tests.py')
-rw-r--r--tests/report_tests.py118
1 files changed, 118 insertions, 0 deletions
diff --git a/tests/report_tests.py b/tests/report_tests.py
new file mode 100644
index 00000000..a08f0aec
--- /dev/null
+++ b/tests/report_tests.py
@@ -0,0 +1,118 @@
+#!/usr/bin/env python
+
+import unittest
+import os
+
+try:
+ import json
+except ImportError:
+ import simplejson as json
+
+from sos.reporting import Report, Section, Command, CopiedFile, CreatedFile, Alert
+from sos.reporting import PlainTextReport
+
+class ReportTest(unittest.TestCase):
+
+ def test_empty(self):
+ report = Report()
+
+ expected = json.dumps({})
+
+ self.assertEquals(expected, str(report))
+
+ def test_nested_section(self):
+ report = Report()
+ section = Section(name="section")
+ report.add(section)
+
+ expected = json.dumps({"section": {}})
+
+ self.assertEquals(expected, str(report))
+
+ def test_multiple_sections(self):
+ report = Report()
+ section = Section(name="section")
+ report.add(section)
+
+ section2 = Section(name="section2")
+ report.add(section2)
+
+ expected = json.dumps({"section": {},
+ "section2": {},})
+
+ self.assertEquals(expected, str(report))
+
+
+ def test_deeply_nested(self):
+ report = Report()
+ section = Section(name="section")
+ command = Command(name="a command", return_code=0, href="does/not/matter")
+
+ section.add(command)
+ report.add(section)
+
+ expected = json.dumps({"section": {"commands": [{"name": "a command",
+ "return_code": 0,
+ "href": "does/not/matter"}]}})
+
+ self.assertEquals(expected, str(report))
+
+
+class TestPlainReport(unittest.TestCase):
+
+ def setUp(self):
+ self.report = Report()
+ self.section = Section(name="plugin")
+ self.div = PlainTextReport.DIVIDER
+
+ def test_basic(self):
+ self.assertEquals("", str(PlainTextReport(self.report)))
+
+ def test_one_section(self):
+ self.report.add(self.section)
+
+ self.assertEquals("plugin\n" + self.div, str(PlainTextReport(self.report)))
+
+ def test_two_sections(self):
+ section1 = Section(name="first")
+ section2 = Section(name="second")
+ self.report.add(section1, section2)
+
+ self.assertEquals("first\n" + self.div + "\nsecond\n" + self.div, str(PlainTextReport(self.report)))
+
+ def test_command(self):
+ cmd = Command(name="ls -al /foo/bar/baz",
+ return_code=0,
+ href="sos_commands/plugin/ls_-al_foo.bar.baz")
+ self.section.add(cmd)
+ self.report.add(self.section)
+
+ self.assertEquals("plugin\n" + self.div + "\n- commands executed:\n * ls -al /foo/bar/baz",
+ str(PlainTextReport(self.report)))
+
+ def test_copied_file(self):
+ cf = CopiedFile(name="/etc/hosts", href="etc/hosts")
+ self.section.add(cf)
+ self.report.add(self.section)
+
+ self.assertEquals("plugin\n" + self.div + "\n- files copied:\n * /etc/hosts",
+ str(PlainTextReport(self.report)))
+
+ def test_created_file(self):
+ crf = CreatedFile(name="sample.txt")
+ self.section.add(crf)
+ self.report.add(self.section)
+
+ self.assertEquals("plugin\n" + self.div + "\n- files created:\n * sample.txt",
+ str(PlainTextReport(self.report)))
+
+ def test_alert(self):
+ alrt = Alert("this is an alert")
+ self.section.add(alrt)
+ self.report.add(self.section)
+
+ self.assertEquals("plugin\n" + self.div + "\n- alerts:\n ! this is an alert",
+ str(PlainTextReport(self.report)))
+
+if __name__ == "__main__":
+ unittest.main()