Autotest 0.10.0

Autotest 0.10.0 is the second major autotest release. We are continuing the work of stabilizing the development branch so a wider audience can benefit from a known to work autotest tree.

If you find a bug, please fill a ticket on our bug tracking system (http://autotest.kernel.org/newticket).

API changes worth mentioning

Autotest 0.10.0 is API compatible with Autotest 0.9.1, since no methods were plain removed (only deprecated) so tests written targetting 0.9.1 should work unmodified. It's worth looking the session with the APIs that were added or deprecated.

What's new

Here is a selection of what changed from 0.9.X to 0.10.0. This list does not intend to be exaustive, it's just a summary of the changes.

New features

  • Site specific add ons - Functions were created to make easier to extend autotest trough site functions:
    • Import site specific classes
    • Import site specific functions
    • Add site specific utility functions
  • First pass at an implementation of a message of the day. Just drop the motd in a file called motd.txt in the same dir as rpc_interface.py.
  • Old TKO performance session gained new features:
    • You can add a benchmark test to the table with key values from a drop down list dynamically, so you don't need edit the machine_benchmark.cgi file manually.
    • You can add one test with more key values to the table.
  • There is now a script to migrate hosts between servers, and pull across their labels and ACLs, creating them if need be under cli/atest/migrate/host
  • Allow control file body text to be supplied as an alternative to a list of test names for the generate_control_file AFE rpc. This allows the command line client to let people specify a kernel along with their own client-side control file.
  • Add job name search feature to AFE job list tab.
  • Wrap the TKO drop-down log viewers with scroll panels, so that when FF3 cuts them off, you can still scroll over to see their contents. Also limit the max height, since there's a scroller now.
  • Extend the query_keyvals script (under the cli directory) to allow you to pass in multiple job IDs.
  • Update perf graph scripts on tko.
  • Add "Do not verify" host protection level and implement it in scheduler
  • Make scheduler run pre-job cleanup even if "skip verify" was chosen.
  • Documentation improvements on boottool
  • Introduce postprocess_iteration, a way to do the perf keyvals once per iteration, rather than all at the end. This results in cleaner, less buggy code, that doesn't tend to grab the keyval for the profiled run by mistake
  • Changes to TableView? to more transparently treat "special" columns (group count, pass rate) more like normal columns.
  • A utility script (utils/build_externals.py) was added to fetch, build and install python libraries that autotest depends on. Currently this can deal with setuptools, MySQLdb, and Django.
  • Adds an autotestd and autotestd_monitor script to the Autotest client to allow us to run clients from autoserv in a disconnected fashion, and adds support to autoserv to make use of this when running clients.
  • Update conmux ~$ commands to allow for arguments to be passed
  • Fix TKO RPC interface to handle nonstandard job tags (i.e. not <job id>-<owner>). Scripts that contribute results to the DB may use nonstandard tags.
  • Added support for one time hosts.
  • Created a method to configure site specific behavior of the ltp test by putting it into a site_config.py. Used this to configure site specific list of ignored ltp tests.

API changes

Here is the list of API functions/methods that were deprecated or added:

  • The job.filesystem() method was deprecated, please replace your references to job.filesystem() to job.partition().
  • The filter_non_linux() method from partition was deprecated, please replace your references accordingly.
  • The methods umount_partition, is_valid_disk and is_valid_partition utility functions added to base_utils.
  • Added a job.run_control method that can be used inside of server control files to run other existing server control files.
  • Added code to mkfs handling to skip adding a '-t <fstype' option if one is already present in the arguments. Allows testing of ext2 file systems running as ext4 by judicious use of a "-t ext2" mkfs option.
  • Added a self.pkgmgr object to test so people can reference self.pkgmgr instead of self.job.pkgrmgr
  • Added job.enable_warnings and job.disable_warnings methods to the job classes, to allow you to disable and enable specific types of console warnings from being logged.
  • Added a profile_only keyword argument to test.execute to be used by job.run_test() from control files.
  • Added client.bin.partition.get_unmounted_partition_list() function and moved server.hosts.Host.check_partitions() logic into it. Exposed the internal open()-like functor from check_partitions() in the public API.
  • Added tko/nightly.py routines for comparing recent kernel builds.
  • Added an option (profile_perf) to record performance of profiled runs. For example, job.run_test('sleeptest', iterations=0, profile_perf=True) will record performance of the profiled run.