acpid Test Plan

Suggestions

- Run all these tests with valgrind to detect memory leaks.

- It's best to test without a window manager running (such as GNOME or KDE) as
  they tend to handle acpi events on their own and override acpid.  To bring 
  down X on a system that is configured with a graphical login, there's usually
  an "init" script you can run.  As an example, with Debian/GNOME, log off of 
  your X/GNOME session, switch to another tty (e.g. Alt-Ctrl-F1), login, and do
  this:
      sudo /etc/init.d/gdm stop
  It's different if you are using upstart:
      sudo initctl stop gdm
  And systemd requires a different incantation:
      sudo systemctl stop gdm
  LightDM in Ubuntu 11.10 (and others) doesn't seem to care about the power 
  button.  So no need to stop it.  Just log out.
  Now X is out of the way and you can test from the console.

- You can kill acpid with "sudo killall acpid".  Or if you are using upstart:
      sudo initctl stop acpid
  For systemd:
      sudo systemctl stop acpid acpid.socket

- To make testing more convenient, you can run acpid from a shell as 
  "acpid -fld" to get maximum logging.  Use Ctrl-C to stop acpid.

Normal Paths

* proc fs, all events
Start acpid against /proc/acpi/event (if it exists).
Test each of the following events:
1. Power Button
2. Laptop Lid Switch
3. Sleep Button
4. Laptop AC Adapter
5. Laptop Battery

* input layer/netlink, all events
Start acpid against the input layer and netlink.
Test each of the following events:
1. Power Button (tests ACPI -> input layer)
2. Laptop Lid Switch (tests ACPI -> input layer)
3. Sleep Button (tests ACPI -> input layer)
4. Laptop AC Adapter (tests ACPI -> netlink)
5. Laptop Battery (tests ACPI -> netlink)
6. Special Keyboard Key(s)

* input layer/netlink fallback
Start acpid with a bogus events file specified via the options.
  acpid -e /proc/acpi/bogus
Make sure a connection is made via the input layer and netlink.

* lockfile procfs
Start acpid against the proc fs
Try some events and make sure they are coming through.
Create the lockfile.
Try some events and make sure they do not come through.
Remove the lockfile.
Try some events and make sure they are coming through.

* lockfile netlink
Start acpid against input layer and netlink.
Try some events and make sure they are coming through.
Create the lockfile.
Try some events and make sure they do not come through.
Remove the lockfile.
Try some events and make sure they are coming through.

* USB disconnect
Start acpid (input layer and netlink) with a second USB keyboard attached.
Try some events and make sure they are coming through.
Disconnect the second USB keyboard.
Make sure acpid is still running.
Try some events and make sure they are coming through.

* USB connect
Start acpid against input layer and netlink.
Try some events and make sure they are coming through.
Connect a second USB keyboard.
Check logging to see if acpid has found the new keyboard.
Try some events from the second USB keyboard and make sure they are coming 
through.


Debugging Paths

* event logging
Run acpid without the -l option and make sure no events are logged to syslog.
Run acpid with the -l option and make sure events are logged to syslog.

* debug mode
Run acpid with the -fd option and note that it runs in the foreground and
provides debugging info to the console.
acpid also supports up to 4 debug levels in the event handler.  Might want 
to try "-fdddd" and see what happens.

* foreground mode
Run acpid with the -f option and note that it runs in the foreground.
Run acpid without the -f option and note that it runs in the background.

