aboutsummaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* [Plugin] set size limits automaticallyBryn M. Reeves2018-06-201-0/+1
| | | | | | | | | | | If the caller does not specific an explicit size limit (or 0 to disable limits) automatically set the sizelimit argument for the add_copy_spec(), add_cmd_output(), and add_journal() methods to the value of the "log_size" option. Resolves: #1325 Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] use threads for xz compressionPavel Moravec2018-06-181-1/+2
| | | | | | | | | | Moving also building of the command from Archive to Plugin class. Closes: #1196 Resolves: #1338 Signed-off-by: Pavel Moravec <pmoravec@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] make FileCacheArchive methods re-entrantBryn M. Reeves2018-06-181-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since plugins are now run concurrently the Archive class must be re-entrant: different plugins may attempt to create the same paths in the archive, and since they are executing in parallel and with no locking, there exists a TOCTOU race between the use of os.path.{exists,isdir, etc.}() and the subsequent creation of a new path. Address this by implementing a simple monitor-style locking scheme for the FileCacheArchive class. A `_path_lock` member is added to the class and this must be held across any operation that modifies the namespace of the archive (including file, directory, symlink, and special node creation). Additionally, the `_check_path()` Archive method (which checks for the existence of path components up to the basename of the file, creating directories as required) is extended to also carry out a test for the existence of the path, and if the path does exist, that the object is of the expected type. A mismatch in the object type generates a ValueError with an appropriate string description of the problem. Benchmarking shows a consistent small improvement with the patch: this is a result of reduced redundant copy operations that the previous archive structure allowed (since duplicate operations are now aborted as soon as the _path_lock is acquired). Resolves: #1340 Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Plugin] Make Plugin.policy an object instead of a functionJake Hunsaker2018-04-172-14/+28
| | | | | | | | | | Moves Plugin.policy to be an object for plugins instead of a function, making it easier to leverage the active policy within sos plugins. Resolves: #1179 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [plugins] Dont apply sizelimit if --all-logs option usedPavel Moravec2017-11-011-1/+1
| | | | | | When --all-logs is used, ignore any sizelimits in add_copy_spec. Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [tests] update test_exe.py for python3Sandro Bonazzola2017-03-311-1/+1
| | | | | | | test_exe.py fails with nosetests-3. Updated to python 3 compatible syntax. Signed-off-by: Sandro Bonazzola <sbonazzo@redhat.com>
* [plugins] move the glob tests togetherMichael Adam2017-03-281-4/+4
| | | | Signed-off-by: Michael Adam <obnox@samba.org>
* [plugins] remove duplicate plugin testsMichael Adam2017-03-281-11/+0
| | | | Signed-off-by: Michael Adam <obnox@samba.org>
* [plugins] let all copy_spec tests use add_copy_spec()Michael Adam2017-03-281-9/+9
| | | | | | instead of add_copy_spec_limit() Signed-off-by: Michael Adam <obnox@samba.org>
* [plugins] Add tests for add_copy_spec_limit() with multiple copyspecsMichael Adam2017-03-281-0/+8
| | | | Signed-off-by: Michael Adam <obnox@samba.org>
* [plugins] add tests for add_copy_spec_limit()Michael Adam2017-03-281-0/+13
| | | | | | | - a test with a single file without limit - a test with a single glob without limit Signed-off-by: Michael Adam <obnox@samba.org>
* [plugins] add test for multiple arguments to add_copy_spec()Michael Adam2017-03-282-0/+5
| | | | Signed-off-by: Michael Adam <obnox@samba.org>
* [plugins] move comment structuring the add_copy_spec_limit testsMichael Adam2017-03-281-2/+2
| | | | Signed-off-by: Michael Adam <obnox@samba.org>
* [plugins] add an extra blank line for separation in plugin_testsMichael Adam2017-03-281-0/+1
| | | | Signed-off-by: Michael Adam <obnox@samba.org>
* [plugins] fix trailing whitespace in plugin_testsMichael Adam2017-03-281-1/+1
| | | | Signed-off-by: Michael Adam <obnox@samba.org>
* [plugins] Make the test_glob_file_over_limit test reliable by using a tmpdirMichael Adam2017-03-281-6/+6
| | | | | | | | Originally,f there were other files matching the glob of /tmp/tmp* then the test would fail. By using a tmpdir, we make sure that we know what files to expect. Signed-off-by: Michael Adam <obnox@samba.org>
* [plugins] add optional dir arg to create_file in plugin_testsMichael Adam2017-03-281-2/+2
| | | | Signed-off-by: Michael Adam <obnox@samba.org>
* [archive] Handle error when adding /dev/null as a nodeLouis Bouchard2017-01-191-0/+6
| | | | | | | | | | | | | Adding /dev/null as a node will trigger EPERM. This can happen namely when masking systemd units which symlinks to /dev/null. This fix will avoid a stacktrace and will generate a INFO message about it. Test for that situation is also included. Resolves: #893. Signed-off-by: Louis Bouchard <louis.bouchard@canonical.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [reporting] deal with UTF-8 charactersPavel Moravec2016-06-271-7/+7
| | | | | | | | | | | | | replace str class functions by unicode variants: 1) "\n".join(buf) needs to pass decoded UTF-8 text 2) uniform python2 and python3 str/unicode type 3) fd.write needs to replace str(..) by some other function name 4) fd.write needs to encode UTF-8 5) update tests/report_tests.py like 2) Resolves: #722, #723. Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [policies] move hash determination to policiesBryn M. Reeves2015-12-041-1/+1
| | | | | | | | | | | | | It's crazy having the Policy classes call a function in the utilities module only to have that function then load the Policy module, call policy.get_preferred_hash_algorithm() and then test the result. Get rid of the get_hash_name() function in the utilities module and simplify the calls in the policies module to obtain the preferred hash name. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] Add test to highlight py3 specific errorLouis Bouchard2015-10-151-0/+14
| | | | | | | When add_string receives output from tail() it fails in py3 since tail() returns a byte object. Mimic this behavior. Signed-off-by: Louis Bouchard <louis.bouchard@canonical.com>
* [sosreport] add --chroot optionBryn M. Reeves2015-07-081-1/+3
| | | | | | | | | | | | | | | | Add a --chroot option to sosreport to control command chrooting. The option takes one of three values: * auto - Allow callers of the API to control chroot behaviour * always - Always chroot external commands to --sysroot * never - Never chroot external commands This is a fairly low-level option and may not be exposed to the user in a final release; for now it will allow tests in container environments to control the chrooting behaviour used for a run. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [utilities] add chroot support to sos_get_command_output()Bryn M. Reeves2015-07-071-0/+5
| | | | | | | Allow callers of sos_get_command_output() to specify a path to chroot into before executing command. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [plugins] prefix target paths with self.sysrootBryn M. Reeves2015-07-072-20/+40
| | | | | | | | | | Prefix copyspecs with self.sysroot when using an alternate root path. Prefixes are applied before expanding copyspecs and the prefixed paths are stored as the 'srcpath' attribute in the archive. Destination paths in the report archive do not include the prefix. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [global] Fix vim tags typo in all python source filesKamalesh Babulal2015-07-069-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the syntax of the vim modeline used to enable the required editing mode in all python sources files. The desired options are: et - expand tabs (convert tab chars to spaces) ts=4 - set tabstop to 4 characters sw=4 - set shiftwidth to 4 characters Signed-off-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com> (edits for commit message, modeline compatibility & options) Signed-off-by: Bryn M. Reeves <bmr@redhat.com> --- __run__.py | 2 +- example_plugins/example.py | 2 +- setup.py | 2 +- sos/archive.py | 2 +- sos/plugins/__init__.py | 2 +- sos/plugins/abrt.py | 2 +- sos/plugins/acpid.py | 2 +- sos/plugins/anaconda.py | 2 +- sos/plugins/anacron.py | 2 +- sos/plugins/apache.py | 2 +- sos/plugins/apparmor.py | 2 +- sos/plugins/apport.py | 2 +- sos/plugins/apt.py | 2 +- sos/plugins/ata.py | 2 +- sos/plugins/auditd.py | 2 +- sos/plugins/autofs.py | 2 +- sos/plugins/azure.py | 2 +- sos/plugins/block.py | 2 +- sos/plugins/boot.py | 2 +- sos/plugins/ceph.py | 2 +- sos/plugins/cgroups.py | 2 +- sos/plugins/cluster.py | 2 +- sos/plugins/cobbler.py | 2 +- sos/plugins/corosync.py | 2 +- sos/plugins/cron.py | 2 +- sos/plugins/cs.py | 2 +- sos/plugins/ctdb.py | 2 +- sos/plugins/cups.py | 2 +- sos/plugins/dbus.py | 2 +- sos/plugins/devicemapper.py | 2 +- sos/plugins/dhcp.py | 2 +- sos/plugins/distupgrade.py | 2 +- sos/plugins/dmraid.py | 2 +- sos/plugins/docker.py | 2 +- sos/plugins/dovecot.py | 2 +- sos/plugins/dpkg.py | 2 +- sos/plugins/ds.py | 2 +- sos/plugins/fcoe.py | 2 +- sos/plugins/filesys.py | 2 +- sos/plugins/firewalld.py | 2 +- sos/plugins/foreman.py | 2 +- sos/plugins/gdm.py | 2 +- sos/plugins/general.py | 2 +- sos/plugins/gluster.py | 2 +- sos/plugins/grub.py | 2 +- sos/plugins/grub2.py | 2 +- sos/plugins/haproxy.py | 2 +- sos/plugins/hardware.py | 2 +- sos/plugins/hpasm.py | 2 +- sos/plugins/hts.py | 2 +- sos/plugins/i18n.py | 2 +- sos/plugins/infiniband.py | 2 +- sos/plugins/ipa.py | 2 +- sos/plugins/ipsec.py | 2 +- sos/plugins/ipvs.py | 2 +- sos/plugins/iscsi.py | 2 +- sos/plugins/iscsitarget.py | 2 +- sos/plugins/java.py | 2 +- sos/plugins/juju.py | 2 +- sos/plugins/kdump.py | 2 +- sos/plugins/keepalived.py | 2 +- sos/plugins/kernel.py | 2 +- sos/plugins/kernelrt.py | 2 +- sos/plugins/keyutils.py | 2 +- sos/plugins/kpatch.py | 2 +- sos/plugins/krb5.py | 2 +- sos/plugins/kvm.py | 2 +- sos/plugins/landscape.py | 2 +- sos/plugins/ldap.py | 2 +- sos/plugins/libraries.py | 2 +- sos/plugins/libvirt.py | 2 +- sos/plugins/lightdm.py | 2 +- sos/plugins/lilo.py | 2 +- sos/plugins/logrotate.py | 2 +- sos/plugins/logs.py | 2 +- sos/plugins/lsbrelease.py | 2 +- sos/plugins/lvm2.py | 2 +- sos/plugins/maas.py | 2 +- sos/plugins/manageiq.py | 2 +- sos/plugins/md.py | 2 +- sos/plugins/megacli.py | 2 +- sos/plugins/memory.py | 2 +- sos/plugins/mongodb.py | 2 +- sos/plugins/mpt.py | 2 +- sos/plugins/mrggrid.py | 2 +- sos/plugins/mrgmessg.py | 2 +- sos/plugins/multipath.py | 2 +- sos/plugins/mysql.py | 2 +- sos/plugins/named.py | 2 +- sos/plugins/navicli.py | 2 +- sos/plugins/networking.py | 2 +- sos/plugins/nfs.py | 2 +- sos/plugins/nfsserver.py | 2 +- sos/plugins/nis.py | 2 +- sos/plugins/nscd.py | 2 +- sos/plugins/ntp.py | 2 +- sos/plugins/numa.py | 2 +- sos/plugins/oddjob.py | 2 +- sos/plugins/openhpi.py | 2 +- sos/plugins/openshift.py | 2 +- sos/plugins/openssl.py | 2 +- sos/plugins/openstack_ceilometer.py | 2 +- sos/plugins/openstack_cinder.py | 2 +- sos/plugins/openstack_glance.py | 2 +- sos/plugins/openstack_heat.py | 2 +- sos/plugins/openstack_horizon.py | 2 +- sos/plugins/openstack_keystone.py | 2 +- sos/plugins/openstack_neutron.py | 2 +- sos/plugins/openstack_nova.py | 2 +- sos/plugins/openstack_swift.py | 2 +- sos/plugins/openstack_trove.py | 2 +- sos/plugins/openswan.py | 2 +- sos/plugins/openvswitch.py | 2 +- sos/plugins/pam.py | 2 +- sos/plugins/pci.py | 2 +- sos/plugins/pcp.py | 2 +- sos/plugins/postfix.py | 2 +- sos/plugins/postgresql.py | 2 +- sos/plugins/powerpath.py | 2 +- sos/plugins/powerpc.py | 2 +- sos/plugins/ppp.py | 2 +- sos/plugins/procenv.py | 2 +- sos/plugins/process.py | 2 +- sos/plugins/processor.py | 2 +- sos/plugins/psacct.py | 2 +- sos/plugins/pxe.py | 2 +- sos/plugins/python.py | 2 +- sos/plugins/qpid.py | 2 +- sos/plugins/quagga.py | 2 +- sos/plugins/rabbitmq.py | 2 +- sos/plugins/radius.py | 2 +- sos/plugins/rhui.py | 2 +- sos/plugins/rpm.py | 2 +- sos/plugins/s390.py | 2 +- sos/plugins/samba.py | 2 +- sos/plugins/sanlock.py | 2 +- sos/plugins/sar.py | 2 +- sos/plugins/satellite.py | 2 +- sos/plugins/scsi.py | 2 +- sos/plugins/selinux.py | 2 +- sos/plugins/sendmail.py | 2 +- sos/plugins/smartcard.py | 2 +- sos/plugins/snmp.py | 2 +- sos/plugins/soundcard.py | 2 +- sos/plugins/squid.py | 2 +- sos/plugins/ssh.py | 2 +- sos/plugins/ssmtp.py | 2 +- sos/plugins/sssd.py | 2 +- sos/plugins/startup.py | 2 +- sos/plugins/sunrpc.py | 2 +- sos/plugins/symcli.py | 2 +- sos/plugins/system.py | 2 +- sos/plugins/systemd.py | 2 +- sos/plugins/systemtap.py | 2 +- sos/plugins/sysvipc.py | 2 +- sos/plugins/targetcli.py | 2 +- sos/plugins/teamd.py | 2 +- sos/plugins/tftpserver.py | 2 +- sos/plugins/tomcat.py | 2 +- sos/plugins/tuned.py | 2 +- sos/plugins/udev.py | 2 +- sos/plugins/unity.py | 2 +- sos/plugins/upstart.py | 2 +- sos/plugins/usb.py | 2 +- sos/plugins/veritas.py | 2 +- sos/plugins/vmware.py | 2 +- sos/plugins/vsftpd.py | 2 +- sos/plugins/x11.py | 2 +- sos/plugins/xen.py | 2 +- sos/plugins/xfs.py | 2 +- sos/plugins/xinetd.py | 2 +- sos/plugins/yum.py | 2 +- sos/policies/__init__.py | 2 +- sos/policies/debian.py | 2 +- sos/policies/osx.py | 2 +- sos/policies/redhat.py | 2 +- sos/policies/ubuntu.py | 2 +- sos/reporting.py | 2 +- sos/sosreport.py | 2 +- sos/utilities.py | 2 +- tests/archive_tests.py | 2 +- tests/importer_tests.py | 2 +- tests/option_tests.py | 2 +- tests/plugin_tests.py | 2 +- tests/policy_tests.py | 2 +- tests/report_tests.py | 2 +- tests/sosreport_pexpect.py | 2 +- tests/test_exe.py | 2 +- tests/utilities_tests.py | 2 +- 189 files changed, 189 insertions(+), 189 deletions(-)
* [archive] remove ZipArchiveBryn M. Reeves2014-12-092-83/+2
| | | | | | | | Remove the ZipArchive class and associated test code. Fixes #322. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [plugin] limit names to PC_NAME_MAXBryn M. Reeves2014-10-201-4/+8
| | | | | | | | | | | | | Commit 8bf7b0c removed the truncation of mangled command names to 64 chars. This causes problems for some plugins (e.g. Issue #415) that generate long enough command lines to hit system name length limits. Instead of arbitrarily limiting to 64 characters limit to the lesser of the archive format limit (if present) or the value of PC_NAME_MAX for any intermediate FileCacheArchive path. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Plugin] remove add_copy_specs()Bryn M. Reeves2014-09-301-9/+0
| | | | | | | | | | | Merge add_copy_specs() into add_copy_spec() and treat any strings passed to the new method as though they were a single item list. Mirrors the prior change to add_cmd_outputs(). Fixes #301. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [plugins] do not truncate mangled command namesBryn M. Reeves2014-09-161-2/+0
| | | | | | | | | There's no reason to truncate mangled command names within an archive. This isn't MS-DOS 3.1 and there are cases where the 64 character limit causes a loss of uniqueness and resulting name collisions (e.g. namespaced network commands). Fixes #388.
* [plugin] mark more interfaces privateBryn M. Reeves2014-09-121-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | Numerous Plugin methods are not expected to be called from outside the base class. Mark them private with a leading underscore: _copy_dir() _copy_node() _copy_symlink() _do_copy_path() _expand_copy_spec() _mangle_command() _make_command_filename() _is_forbidden_path() _collect_copy_specs() _collect_cmd_output() _collect_strings() A couple of these (_mangle_command() and _do_copy_path()) are invoked from the Plugin test suite; update the relevant cases to call the new names. Fixes #348. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Syntax error.. I blame emacs.Adam Stokes2014-04-041-1/+1
| | | | Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
* Properly state unicode literal in Python 3.2Adam Stokes2014-04-041-1/+1
| | | | | | | The 'u' prefix wasn't reintroduced back into Python 3 until version 3.3. Use six here to accomodate for that. Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
* Clean up sos_get_command_output() and friendsBryn M. Reeves2014-04-041-6/+6
| | | | | | | | | | | | | Returning a 3-tuple has always been ugly. It gets worse as the parameter list for this family of functions grows. Worse, the 3rd member of the tuple is unused and is always set to 0. Rip the whole mess out and return a single, simple dictionary object with 'status' and 'output' keys. Update utilities_tests to reflect the new interface. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Raise a TypeError if add_copy_specs() is called with a stringBryn M. Reeves2014-03-271-0/+3
| | | | | | | | | | Since strings are iterable a plugin attempting to call add_copy_specs("/something") results in a plugin calling add_copy_spec("/"). Raise a TypeError if this happens. Fixes Issue #141. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Add tests for Plugin.add_copy_spec()/add_copy_specs()Bryn M. Reeves2014-03-271-2/+24
| | | | | | Give add_copy_spec() and add_copy_specs() their own test cases. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Update Plugin tests to treat copy_paths as a setBryn M. Reeves2014-03-271-1/+1
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Remove references to 'sub' parameter from plugin testsBryn M. Reeves2014-03-271-7/+3
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Update plugin_tests.py to match new method namesBryn M. Reeves2014-03-271-5/+5
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Remove obsolete checksum reference from utilities_tests.pyBryn M. Reeves2014-03-271-1/+1
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Add vim tags to all python source filesBryn M. Reeves2014-03-269-0/+18
| | | | | | Fixes Issue #243. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Dead code removal: utilities.checksum()Bryn M. Reeves2014-03-261-12/+0
| | | | | | Has test case but no callers. Delete it. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Dead code removal: DirTreeBryn M. Reeves2014-03-261-10/+1
| | | | | | | The DirTree class has remained unused since it was implemented. Remove the definition and associated test cases. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Dead code removal: sos_relative_path()Bryn M. Reeves2014-03-261-16/+1
| | | | | | | The function is defined and even has test cases. But no callers.. Remove the function and the test cases that exercise it. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Remove --profile supportBryn M. Reeves2014-03-251-3/+1
| | | | | | | | | | | | | The handrolled profile logging support in sos hasn't been widely used in a long time and is a problem better solved with external profiling and coverage tools. Rip out all the support and documentation. This shortens and simplifies numerous Plugin class methods. Fixes Issue #244. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Fix plugin_test exception on six.PY2Bryn M. Reeves2014-03-251-2/+2
| | | | | | | Replace explicit test for six.PY2 with try/exception handling of StringIO import. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Update policy_tests.py for validate_plugin changeBryn M. Reeves2014-03-131-4/+4
| | | | | | | The policy_tests unit tests call validatePlugin(). Update them to use the new name. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Fix unittests to report on strings and not binaryAdam Stokes2014-01-271-2/+2
| | | | Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
* Python 3 portAdam Stokes2013-10-303-9/+20
| | | | | | | | | | | | This includes a necessary dependency on python-six for its compability layer since we are wanting to continue support for both Python 2.7.x and Python 3.x. In addition, this will allow us to effectively phase out Python 2 support when/if the time arises that all interested distributions have done away with Python 2. This port passes all unittests for both python 2.7.x and python 3.3.x Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
* Fix shell output unittestsAdam Stokes2013-10-181-2/+2
| | | | | | Since fix for 0ed431a went in we revert our unittests to the old (working) behavior. Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
* Update utilities_tests.pyAdam Stokes2013-08-091-2/+2
| | | Update unittests to reflect 4a594b6dce129f8d9837c0d93768576badf2b2b7