)]}'
{
  "commit": "c7f0f3b1c826901358a0656f80a5fabb88f73c61",
  "tree": "c1ff5a6ed93543dd2580e11397d21ee190e3fd23",
  "parents": [
    "b93b63f574ccb451e82f81c6da7c39b3ecb4f24c"
  ],
  "author": {
    "name": "Anthony Liguori",
    "email": "aliguori@us.ibm.com",
    "time": "Wed Mar 28 15:42:02 2012 +0200"
  },
  "committer": {
    "name": "Anthony Liguori",
    "email": "aliguori@us.ibm.com",
    "time": "Fri Mar 30 08:14:11 2012 -0500"
  },
  "message": "qtest: add test framework\n\nThe idea behind qtest is pretty simple.  Instead of executing a CPU via TCG or\nKVM, rely on an external process to send events to the device model that the CPU\nwould normally generate.\n\nqtest presents itself as an accelerator.  In addition, a new option is added to\nestablish a qtest server (-qtest) that takes a character device.  This is what\nallows the external process to send CPU events to the device model.\n\nqtest uses a simple line based protocol to send the events.  Documentation of\nthat protocol is in qtest.c.\n\nI considered reusing the monitor for this job.  Adding interrupts would be a bit\ndifficult.  In addition, logging would also be difficult.\n\nqtest has extensive logging support.  All protocol commands are logged with\ntime stamps using a new command line option (-qtest-log).  Logging is important\nsince ultimately, this is a feature for debugging.\n\nSigned-off-by: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nSigned-off-by: Anthony Liguori \u003caliguori@us.ibm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "226b01df96b3bdcea98d6bbc27148c2da257423d",
      "old_mode": 33188,
      "old_path": "Makefile.objs",
      "new_id": "e9842b0538692e545a7c7140678b7dd84579f0a7",
      "new_mode": 33188,
      "new_path": "Makefile.objs"
    },
    {
      "type": "modify",
      "old_id": "0fa8325b27e833ed0dc6e5a49b3905ad6d50f63a",
      "old_mode": 33188,
      "old_path": "cpu-exec.c",
      "new_id": "d153f978e1109c77390c461ba64d30b6170141a2",
      "new_mode": 33188,
      "new_path": "cpu-exec.c"
    },
    {
      "type": "modify",
      "old_id": "25ba621da540a12759caf3ab541d9c73922ee0b4",
      "old_mode": 33188,
      "old_path": "cpus.c",
      "new_id": "ab8d67b9d81e4cb8064711058ef030393de42eb1",
      "new_mode": 33188,
      "new_path": "cpus.c"
    },
    {
      "type": "modify",
      "old_id": "662f5715277400a38d62b602c908b714918d2c8b",
      "old_mode": 33188,
      "old_path": "qemu-options.hx",
      "new_id": "fe88939805011dcc5fc4b68550bdb96370e56e77",
      "new_mode": 33188,
      "new_path": "qemu-options.hx"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "46ebda1a35d0ae52b3e7e3ca12c6b38445a4820c",
      "new_mode": 33188,
      "new_path": "qtest.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1478343ff00667b509ae42ca9a5c4b6b70784c92",
      "new_mode": 33188,
      "new_path": "qtest.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4ef6c1c500110b995fe9fc920d14b49424c14089",
      "new_mode": 33261,
      "new_path": "scripts/qtest"
    },
    {
      "type": "modify",
      "old_id": "0fccf50a5d191d6054f9e62a07c78b246eba5305",
      "old_mode": 33188,
      "old_path": "vl.c",
      "new_id": "e575401d296cecc169873a391da1dfe430e70c55",
      "new_mode": 33188,
      "new_path": "vl.c"
    }
  ]
}
