)]}'
{
  "log": [
    {
      "commit": "bde05edf0a77d9c1a0fd0ad9375b2b6f88918816",
      "tree": "dbd1e212ec0c3abfcb4cd996dcfdc08ba5f45653",
      "parents": [
        "c9f059074bcf35f9fcf38c4cf1352a91ed35fff9",
        "4f5080587ed3c31d8883abf1639cd41d3ce79644"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Mon Jan 28 16:33:40 2013 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Mon Jan 28 16:33:40 2013 -0800"
      },
      "message": "Merge pull request #35 from floodlight/rlane-fix-caps\n\ncaps: add time import\r\nReviewed (so to speak) by Dan"
    },
    {
      "commit": "4f5080587ed3c31d8883abf1639cd41d3ce79644",
      "tree": "dbd1e212ec0c3abfcb4cd996dcfdc08ba5f45653",
      "parents": [
        "c9f059074bcf35f9fcf38c4cf1352a91ed35fff9"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Jan 28 10:49:46 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Jan 28 10:49:46 2013 -0800"
      },
      "message": "caps: add time import\n\nThis was previously visible through the testutils import.\n"
    },
    {
      "commit": "c9f059074bcf35f9fcf38c4cf1352a91ed35fff9",
      "tree": "1b91b57585ad88bc590140d085030956ef2ffc13",
      "parents": [
        "f16b557da3163a0c3d54b2da27596d0d8f67b0c5",
        "fdedc07bbf8f942833acb722e8c206131dec627e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Fri Jan 18 08:06:38 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Fri Jan 18 08:06:38 2013 -0800"
      },
      "message": "Merge pull request #34 from CPqD/master\n\nChanges to the OpenFlow 1.2 match framework  "
    },
    {
      "commit": "fdedc07bbf8f942833acb722e8c206131dec627e",
      "tree": "1b91b57585ad88bc590140d085030956ef2ffc13",
      "parents": [
        "f16b557da3163a0c3d54b2da27596d0d8f67b0c5"
      ],
      "author": {
        "name": "ederlf",
        "email": "ederlf@cpqd.com.br",
        "time": "Fri Jan 18 09:32:00 2013 -0200"
      },
      "committer": {
        "name": "ederlf",
        "email": "ederlf@cpqd.com.br",
        "time": "Fri Jan 18 09:32:00 2013 -0200"
      },
      "message": "This commit has some improvements for the code related to the OpenFlow 1.2\nThe changes are:\n\n    - On match unpack, insert the proper match tlv object. (e.g, if the oxm field is\nan inport, insert and inport object).\n    - Add a compare method to oxm_tlvs and match_list, because there was not how to test\nif the match in messages like flow_stats or flow_removed were correctly sent by the switch.\n    - Improvements to the print format of oxm_tlvs.\n\nAlso, there is a minor fix for the groups test.\n"
    },
    {
      "commit": "f16b557da3163a0c3d54b2da27596d0d8f67b0c5",
      "tree": "f75c7e63d859f3c7af6d39866512da24680d709b",
      "parents": [
        "3c7cf7f01aea0a4b07d2ab059fc10c34fb159062",
        "a9e12ab3edc95d7e872a43ce28fe30cb4b2a6626"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Wed Jan 16 08:23:30 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Wed Jan 16 08:23:30 2013 -0800"
      },
      "message": "Merge pull request #33 from eswierk/master\n\nMore changes"
    },
    {
      "commit": "a9e12ab3edc95d7e872a43ce28fe30cb4b2a6626",
      "tree": "f75c7e63d859f3c7af6d39866512da24680d709b",
      "parents": [
        "3c7cf7f01aea0a4b07d2ab059fc10c34fb159062"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Jan 16 07:35:25 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Jan 16 07:35:25 2013 -0800"
      },
      "message": "Keep polling in Packet{In,Out}Load until the switch quiesces,\notherwise a continuing flood of packet-in messages or data interferes\nwith subsequent tests\n"
    },
    {
      "commit": "3c7cf7f01aea0a4b07d2ab059fc10c34fb159062",
      "tree": "282d733b5e98dac13c1599e7a47de0825206f4af",
      "parents": [
        "7744e11daf890cbb0b815e51ce4781de78624c51"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 18:04:56 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 18:04:56 2013 -0800"
      },
      "message": "fix test imports\n\nThese modules were previously visible through the testutils import.\n"
    },
    {
      "commit": "7744e11daf890cbb0b815e51ce4781de78624c51",
      "tree": "8bdb5b76058cc53be78eac7f560b63dfccf62203",
      "parents": [
        "5a9a192ab77c53024bfd2f9864488906c093a7d3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 17:23:57 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 17:23:57 2013 -0800"
      },
      "message": "testutils: define __all__ to limit the variables imported by tests\n"
    },
    {
      "commit": "5a9a192ab77c53024bfd2f9864488906c093a7d3",
      "tree": "0a47fbdd7bc1caf4152b8bf6b6d7ad7e1fa3ee5c",
      "parents": [
        "5d63b9c8bded2cfeb4b07c46e648c671cb683b1c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 14:29:30 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 14:29:30 2013 -0800"
      },
      "message": "add version decorator\n\nAlso adds the TableModConfig test to the main basic test module, using the new\ndecorator.\n"
    },
    {
      "commit": "5d63b9c8bded2cfeb4b07c46e648c671cb683b1c",
      "tree": "072ea8b1751a43250ca1190bae3014322656efb4",
      "parents": [
        "e3a5972ae4dc86966f6ffce998cdd25ac02bfb02"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 14:12:37 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 14:12:37 2013 -0800"
      },
      "message": "controller: log xids and error messages\n"
    },
    {
      "commit": "e3a5972ae4dc86966f6ffce998cdd25ac02bfb02",
      "tree": "7722d40dace1507cc5af3a50ec6c3c2f963e73f0",
      "parents": [
        "5de2d94348b08b05f3ea510cc73b97886700bc89"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 12:50:25 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 12:50:25 2013 -0800"
      },
      "message": "of12: support actions keyword argument in packet_out message\n"
    },
    {
      "commit": "5de2d94348b08b05f3ea510cc73b97886700bc89",
      "tree": "5cd18b01c8ec044fb22959b473b49f8517264979",
      "parents": [
        "aecd7163f3c230f788a8df53d91d997450566ec4"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 11:49:36 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 11:49:36 2013 -0800"
      },
      "message": "of12: add keyword arguments to action and message classes\n"
    },
    {
      "commit": "aecd7163f3c230f788a8df53d91d997450566ec4",
      "tree": "c8d4cbd6b9832b8fb951735f9806cb61a4492f79",
      "parents": [
        "63393495124c77d79b2319d96550a8bc3ab6e35b"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 11:33:00 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 11:33:00 2013 -0800"
      },
      "message": "of10: simplify importing\n"
    },
    {
      "commit": "63393495124c77d79b2319d96550a8bc3ab6e35b",
      "tree": "8e0e80d75de6925e5d081544bb654a48d30f093d",
      "parents": [
        "2fe6beac0c69eb9108be08112b1e9d727ff11d4c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:21:12 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:24:31 2013 -0800"
      },
      "message": "of12: remove redundant action_ prefix from action classes\n"
    },
    {
      "commit": "2fe6beac0c69eb9108be08112b1e9d727ff11d4c",
      "tree": "3024e09f3b756c45a64570c5f8af49830ee5c2de",
      "parents": [
        "dc04c91a4c3f9c170688a6d8cffda254ff2426c5"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:15:38 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:15:38 2013 -0800"
      },
      "message": "trim imports of OF 1.2 tests\n"
    },
    {
      "commit": "dc04c91a4c3f9c170688a6d8cffda254ff2426c5",
      "tree": "781f35473fd033fc8b4b4c2c35ace24656f1a9ad",
      "parents": [
        "8f2861eb5c879d7761d458204c9ad59e4fe2e576"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:13:37 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:13:37 2013 -0800"
      },
      "message": "of12: fix bug in packet_to_flow_match\n"
    },
    {
      "commit": "8f2861eb5c879d7761d458204c9ad59e4fe2e576",
      "tree": "8bfa3cbb8f5bb2847cda64044b347ef441952840",
      "parents": [
        "ea8732650f81771e585f7405df46b6a08237ee03"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:13:20 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:13:20 2013 -0800"
      },
      "message": "import scapy.contrib.mpls for ease of installation\n"
    },
    {
      "commit": "ea8732650f81771e585f7405df46b6a08237ee03",
      "tree": "8bbb6ec072f9dc6233c7b3c2ba686e483186543b",
      "parents": [
        "02eb6b0d18297b6fc371d035110dc99ee9b2a5a3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:15:55 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "import remaining OF 1.2 tests from CPqD/oftest12\n"
    },
    {
      "commit": "02eb6b0d18297b6fc371d035110dc99ee9b2a5a3",
      "tree": "2216043104e9de51f60eed0a612fae8f207aca6f",
      "parents": [
        "f9aa5022c4707485455a9476912ea13e20e6baac"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:08:37 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "of12: simplify importing\n"
    },
    {
      "commit": "f9aa5022c4707485455a9476912ea13e20e6baac",
      "tree": "87c7fd3c19293d2f1d8c03345f61e7430889091c",
      "parents": [
        "629393f7b71a12026e5d719f2551cafe264ccd52"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 16:36:15 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "oft12 testutils: remove uses of parent.logger\n"
    },
    {
      "commit": "629393f7b71a12026e5d719f2551cafe264ccd52",
      "tree": "421463e8f2ea2336fe088e94af2e6748620726a1",
      "parents": [
        "9fd05683ca2baa9d04d4d3c1c563f5a7b45d5b1e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 15:37:33 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "import OpenFlow 1.2 protocol module and basic test cases from CPqD/oftest12\n\nFor now these tests will live in a separate directory. The goal is to merge\nthem where possible but this has to wait for an OpenFlow protocol module that\nsupports all versions of OpenFlow.\n"
    },
    {
      "commit": "9fd05683ca2baa9d04d4d3c1c563f5a7b45d5b1e",
      "tree": "995e00a335a8478742a211fb72cde04d1cd1d3be",
      "parents": [
        "af42815411a3b2f29c8a25c0ec7a8064cfc6fd1e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 15:30:38 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "add --of-version option\n\nThis option is used to choose which OpenFlow protocol module is aliased to\n\"ofp\", which the controller and tests import. When we have an OpenFlow protocol\nmodule that works with all versions of OpenFlow we can remove this hack without\nchanging the command line interface or test API.\n"
    },
    {
      "commit": "af42815411a3b2f29c8a25c0ec7a8064cfc6fd1e",
      "tree": "1cad6f7b73c070a750582456e60f0f2a05c425bb",
      "parents": [
        "c44b62489e4e54f3608e9a59217961e1ea77cf1b"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 12:24:44 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "base_tests: only use supported_actions field for OF 1.0\n"
    },
    {
      "commit": "c44b62489e4e54f3608e9a59217961e1ea77cf1b",
      "tree": "8b800d429ed2240536cac953813986d26590f4b2",
      "parents": [
        "78ef8b98ef2a87532c73644d62da804d7f1d5a1c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 12:23:54 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "controller: fix version negotiation\n"
    },
    {
      "commit": "78ef8b98ef2a87532c73644d62da804d7f1d5a1c",
      "tree": "5c8fa5d06149750b1b3079310901e010e5e57290",
      "parents": [
        "c2f18764091fcdd2f4b80c9fe031d0ee40931592"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 12:19:23 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "use the generic name \"ofp\" to refer to the the OpenFLow protocol module\n\nThis makes it easier to switch out of10 for e.g. of12. This is a temporary\nsolution until we have a single protocol module that handles all versions of\nOpenFlow.\n"
    },
    {
      "commit": "c2f18764091fcdd2f4b80c9fe031d0ee40931592",
      "tree": "ad9e078a06ee74564be19bc808bd43b9a6bfeae0",
      "parents": [
        "8fc315b504be28bed34ca176b2b17b9366dccdf0"
      ],
      "author": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Fri Jan 11 00:12:44 2013 -0800"
      },
      "committer": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Fri Jan 11 00:12:44 2013 -0800"
      },
      "message": "Add test cases for udp src_port/dst_port and ICMP type/code match\n"
    },
    {
      "commit": "8fc315b504be28bed34ca176b2b17b9366dccdf0",
      "tree": "e66693cbfe3616f8d9e0a1dee386596ca40c25a1",
      "parents": [
        "626ce1d19e6bc0a06e083243df230e9a303b99a2",
        "277875ae16740eaff98024d2030d0b50f72c31d0"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Thu Jan 10 11:02:29 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Thu Jan 10 11:02:29 2013 -0800"
      },
      "message": "Merge pull request #32 from eswierk/master\n\nAdd test for BSN shell command extension, etc."
    },
    {
      "commit": "626ce1d19e6bc0a06e083243df230e9a303b99a2",
      "tree": "2c299e0c74c242fccd0bb542b8c9b61c42d2d9ce",
      "parents": [
        "ed1fa2d131e46967c2be6a811cefd00f69775e5a"
      ],
      "author": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Wed Jan 09 11:58:50 2013 -0800"
      },
      "committer": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Wed Jan 09 11:58:50 2013 -0800"
      },
      "message": "For DeletedFlowStats, add settling time and error messages.\n"
    },
    {
      "commit": "277875ae16740eaff98024d2030d0b50f72c31d0",
      "tree": "ec328ed94605950435bfa8aef4df8b191b2270ae",
      "parents": [
        "a05b1fa02eb12d1c0aed06e76d4384ff3c9caf25"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Jan 08 15:13:46 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Jan 08 15:13:46 2013 -0800"
      },
      "message": "Add test for BSN shell command extension\n"
    },
    {
      "commit": "a05b1fa02eb12d1c0aed06e76d4384ff3c9caf25",
      "tree": "c62f8d83f73c6bf93f5baaa44b6b419cf677e7ac",
      "parents": [
        "ed1fa2d131e46967c2be6a811cefd00f69775e5a"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Jan 08 06:39:17 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Jan 08 14:53:23 2013 -0800"
      },
      "message": "Remove obsolete files\n"
    },
    {
      "commit": "ed1fa2d131e46967c2be6a811cefd00f69775e5a",
      "tree": "818a44fc1370b58ac52e9469fafd59500044e95f",
      "parents": [
        "93bed98736e86cc11e2769bc6dd345d8ae2872c7"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 13:23:37 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 13:23:37 2013 -0800"
      },
      "message": "parse: remove uses of from module import *\n\nSince there is now both an action class named \"vendor\" and a message class\nnamed \"vendor\" they clash when imported into the same namespace.\n"
    },
    {
      "commit": "93bed98736e86cc11e2769bc6dd345d8ae2872c7",
      "tree": "bdcf9d49e6934bdbac988725365428d5a123e0e4",
      "parents": [
        "15f2632b16a440e21748eb934f59778a0fa1d634"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 11:42:00 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 11:42:00 2013 -0800"
      },
      "message": "oft: remove log when adding test\n"
    },
    {
      "commit": "15f2632b16a440e21748eb934f59778a0fa1d634",
      "tree": "57860d0c21be1b9ef0ef745174dd66b1b82993c7",
      "parents": [
        "2d6d482ac9e8208439cef4a28644b09960fcd803"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 11:23:24 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 11:39:38 2013 -0800"
      },
      "message": "change default platform to \"eth\"\n\nIf no --interface options are passed the config is the same as the old local\nplatform.\n"
    },
    {
      "commit": "2d6d482ac9e8208439cef4a28644b09960fcd803",
      "tree": "0bacdd4731144834ec5e3c8eddc1bf1f695dc679",
      "parents": [
        "cd97d3d7a4bef1346f8a57d1216b075e97ce019f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 10:49:16 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 11:00:41 2013 -0800"
      },
      "message": "add eth platform and --interfaces command line option\n\nWhen using the eth platform you can give oft multiple \"-i ofport@interface\"\noptions to specify which ethernet interfaces to use for the dataplane, instead\nof needing to write your own platform file.\n"
    },
    {
      "commit": "cd97d3d7a4bef1346f8a57d1216b075e97ce019f",
      "tree": "dc776d3bb42cf071e9f8b7532d8540b29255960d",
      "parents": [
        "b2b401ef00e2dc2315e16f1299d2855103f581ac"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Jan 07 18:50:06 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 10:09:49 2013 -0800"
      },
      "message": "minimize use of \"from module import *\"\n\nThis statement was causing strange bugs because of namespace pollution. The\norder of imports mattered because later \"from module import *\" statements would\noverwrite modules imported earlier. Transitive imports also made it difficult\nto figure out where an identifier was being imported.\n\nThis statement is still allowed in test code since nothing else should be\nimporting it.\n"
    },
    {
      "commit": "b2b401ef00e2dc2315e16f1299d2855103f581ac",
      "tree": "02bf0a2d11f4e1e3f86398de88c7a23de3c68fa7",
      "parents": [
        "948f0301255759957e148a5a99aa3844c644c99c",
        "38eea081bae71bacae7336cd459dc570fd1bfdc5"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 16:00:05 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 16:00:05 2013 -0800"
      },
      "message": "Merge pull request #31 from eswierk/master\n\nVarious changes"
    },
    {
      "commit": "38eea081bae71bacae7336cd459dc570fd1bfdc5",
      "tree": "02bf0a2d11f4e1e3f86398de88c7a23de3c68fa7",
      "parents": [
        "cfdcbd34e4428108dd1e9cd04306fc2416ee8361"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Jan 02 19:46:20 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 15:31:58 2013 -0800"
      },
      "message": "Allow skipping testing of packet_out actions\nsince some switches don\u0027t support them\n"
    },
    {
      "commit": "cfdcbd34e4428108dd1e9cd04306fc2416ee8361",
      "tree": "97c54725879cdb7c2d64c9b6f98f0d946341c3d3",
      "parents": [
        "8d84ce08af73ae7f514bfdeccc04f23f7d3ea672"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Jan 02 18:44:52 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 15:31:58 2013 -0800"
      },
      "message": "Store the controllers list in an instance variable\nsince class variables tend to stick around and mess up later tests\n"
    },
    {
      "commit": "8d84ce08af73ae7f514bfdeccc04f23f7d3ea672",
      "tree": "20f01ce6376f1d471d37dfffce8d470200960433",
      "parents": [
        "948f0301255759957e148a5a99aa3844c644c99c"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Thu Dec 27 15:36:48 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 15:30:34 2013 -0800"
      },
      "message": "Send port_mod message even if features_reply contains no ports\nsince basic.PortConfigModErr deliberately uses a bogus port number anyway\n"
    },
    {
      "commit": "948f0301255759957e148a5a99aa3844c644c99c",
      "tree": "5c8131baeb54bf3615e1310435b551f0acfce08d",
      "parents": [
        "5ec97b8249e8b7c97c2af2bcb9c9ae60255fe07e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Jan 07 10:59:08 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Jan 07 10:59:08 2013 -0800"
      },
      "message": "oft: support prefixing test names with ^ to remove them from the test set\n"
    },
    {
      "commit": "5ec97b8249e8b7c97c2af2bcb9c9ae60255fe07e",
      "tree": "ed1f6ac1b96affd96d11829ec5b66edb49f874c8",
      "parents": [
        "6242d9f6474fa78b2d1c5db116831dc15ce00b6e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 18:04:25 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 18:04:25 2013 -0800"
      },
      "message": "copy in of11 package\n\nThese modules were copied from the oft-1.1 branch.\n"
    },
    {
      "commit": "6242d9f6474fa78b2d1c5db116831dc15ce00b6e",
      "tree": "e7ed7d1549020dea63fda35c63b832bb39b4c554",
      "parents": [
        "ea5060dff597e6e722ce49ec6f0116b6b7d5776d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 17:35:39 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 17:35:39 2013 -0800"
      },
      "message": "move and check in OpenFlow protocol modules\n\nMove all the protocol code out of the oftest package and into a of10 package to\nprepare for supporting more OpenFlow versions.\n\nThe generated code is now checked-in to make it simpler to use OFTest.\n\nBackwards compatibility with out of tree tests is maintained by aliasing the\nold module names. The basic test module has been changed to use the new API.\n"
    },
    {
      "commit": "ea5060dff597e6e722ce49ec6f0116b6b7d5776d",
      "tree": "6cdc417b2b075144a854fca1f283317e9221ee84",
      "parents": [
        "95f078b7d0dcc168c9e92f037812d3b3075ef0f8"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 13:59:00 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 14:07:07 2013 -0800"
      },
      "message": "update documentation\n\nDeveloper-only documentation was moved to DEVELOPING. Redundant usage\ninformation was removed from oft.\n"
    },
    {
      "commit": "95f078b7d0dcc168c9e92f037812d3b3075ef0f8",
      "tree": "ddc19940a0e43bd4523f4da94e34c8491996c27d",
      "parents": [
        "1dfd9f11bd2d7f83e1adbe434f2b131f829774fd"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 13:24:58 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 13:55:27 2013 -0800"
      },
      "message": "oft: improve help text\n"
    },
    {
      "commit": "1dfd9f11bd2d7f83e1adbe434f2b131f829774fd",
      "tree": "47efd597b03444114f5a57da9777ef6bc304b8b7",
      "parents": [
        "68edb3d70b2caf228d3b007ce2dd04ac0e37cb30"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 17:01:01 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 17:01:01 2013 -0800"
      },
      "message": "oft: make --verbose the default and add --quiet to negate it\n"
    },
    {
      "commit": "68edb3d70b2caf228d3b007ce2dd04ac0e37cb30",
      "tree": "ee6fc6fb38a09fb39d570caa0753ef54cee4b016",
      "parents": [
        "1568b65686666e28e4e216856096e3b69b901d9f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 17:00:26 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 17:00:26 2013 -0800"
      },
      "message": "oft: always make unittest.TextTestRunner verbose\n"
    },
    {
      "commit": "1568b65686666e28e4e216856096e3b69b901d9f",
      "tree": "b482e1fb341d34ee69c21d11b990dd6aad15a5f2",
      "parents": [
        "1a08d236008a4a24777bfba93a789122745933d9"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 16:53:13 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 16:53:13 2013 -0800"
      },
      "message": "basic: reenable tests and move out PacketInDefaultDrop\n"
    },
    {
      "commit": "1a08d236008a4a24777bfba93a789122745933d9",
      "tree": "b4b4af4f8fd8fcbb5800f27bfc0ad9cf8ee4209a",
      "parents": [
        "1cc22fd5b7b1414831f83a9d49a171117d32f3ae"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 16:03:50 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 16:03:50 2013 -0800"
      },
      "message": "oft: add test-file option\n\nThis option reads a file that has one test name or group name per line.\nWhitespace and comments starting with \u0027#\u0027 are ignored. The resulting tests are\nunioned with those given on the command line.\n\nThe main usecase for this is freezing a set of tests to be run against a\nswitch. You can use the --list-test-names option to get the current set of\ntests in a format suitable for use with this option, then manually edit\nit to add, remove, and comment tests.\n"
    },
    {
      "commit": "1cc22fd5b7b1414831f83a9d49a171117d32f3ae",
      "tree": "d880542d7d199bf1575344d5667f3b3a13fa7e03",
      "parents": [
        "adf64b10a5f5f74c159c99c3d4eac1c5c9d89a37"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:48:30 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:48:30 2013 -0800"
      },
      "message": "oft: remove profile feature\n\nThis was rarely used and will be replaced with the test-file feature.\n"
    },
    {
      "commit": "adf64b10a5f5f74c159c99c3d4eac1c5c9d89a37",
      "tree": "2605dc0c91ad8336575880ccda1f6fbee7c60c5a",
      "parents": [
        "9527101cbf353f23f6fc616077ca1fae4746992d",
        "37f4211a4e12181744f0236f65e9050967eee782"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:32:01 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:32:01 2013 -0800"
      },
      "message": "Merge branch \u0027annotations\u0027\n\nConflicts:\n\toft\n"
    },
    {
      "commit": "9527101cbf353f23f6fc616077ca1fae4746992d",
      "tree": "24ae78e84bb1cce3bed71de9e548f2bcda100123",
      "parents": [
        "0f0adc9a58f39ad0e6c0101755af69b453ee2d52"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:24:51 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:24:51 2013 -0800"
      },
      "message": "action: remove redundant action_ prefix from classes\n\nThe original names are kept as aliases. The basic module has been changed to\nuse the new API.\n"
    },
    {
      "commit": "0f0adc9a58f39ad0e6c0101755af69b453ee2d52",
      "tree": "6783159dfef8de55f848c1deda4a448133d44b68",
      "parents": [
        "72a0cfed2fe38ed1c1e20805598fb893673b8b5b"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:13:02 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:13:02 2013 -0800"
      },
      "message": "message: convert lists passed as keyword arguments to action_lists\n\nThe basic module has been changed to use the new API.\n"
    },
    {
      "commit": "72a0cfed2fe38ed1c1e20805598fb893673b8b5b",
      "tree": "70b22bd4836abe4d2a27d603c3fdd2cd54863773",
      "parents": [
        "c52a1c46dac37c3d1d4ad6672e33abe635982bd1"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 14:37:53 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:08:58 2013 -0800"
      },
      "message": "action_list: support setting actions in constructor\n"
    },
    {
      "commit": "c52a1c46dac37c3d1d4ad6672e33abe635982bd1",
      "tree": "b469b451f28b4d45760285e78591d5948fa0733d",
      "parents": [
        "c3c2ae1775b22de5a7fa4b3bd3934e5359863a86"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 10:29:00 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 10:29:00 2013 -0800"
      },
      "message": "action: support assigning fields with keyword arguments to the constructor\n\nThe basic module has been changed to use the new API.\n"
    },
    {
      "commit": "c3c2ae1775b22de5a7fa4b3bd3934e5359863a86",
      "tree": "520162a809d6008a25f1b32ef5e5f4622b193d4d",
      "parents": [
        "c9e41840a710f26eb3a61355c2cbc0a86adbfc91"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 10:13:17 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 10:13:17 2013 -0800"
      },
      "message": "message: support setting fields with keyword arguments to the constructor\n\nThis enables creation of messages in a tree-like fashion.\n\nThe basic test module has been converted to the new API.\n"
    },
    {
      "commit": "c9e41840a710f26eb3a61355c2cbc0a86adbfc91",
      "tree": "b415eecbf81b021a2855316daac53ee3143bfb37",
      "parents": [
        "3e777794aab1b27ff2c25900232f6bce626cc804"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 21:31:42 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 21:31:42 2013 -0800"
      },
      "message": "FuncUtils.verify_flowstats: similar fixes as with verify_tablestats\n"
    },
    {
      "commit": "3e777794aab1b27ff2c25900232f6bce626cc804",
      "tree": "fc9794e8b46cdaafd6d7f57398d481f6ab5b3e4e",
      "parents": [
        "175f9563bca41b3ac434dc0ef291be489ba1a260"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 21:30:30 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 21:30:30 2013 -0800"
      },
      "message": "FuncUtils.verify_tablestats: assert on total counters\n"
    },
    {
      "commit": "175f9563bca41b3ac434dc0ef291be489ba1a260",
      "tree": "371bc385c3e8b88192e481972bc3a2be276017ae",
      "parents": [
        "afcd0dd9951c74ca1685a2064df259af9274b0c8"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 20:58:40 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 21:27:31 2013 -0800"
      },
      "message": "FuncUtils.verify_tablestats: break out of loop if counter exceeded expected value\n"
    },
    {
      "commit": "afcd0dd9951c74ca1685a2064df259af9274b0c8",
      "tree": "2c87ca2638989fe0edbe16c79bd84a8de6aeb769",
      "parents": [
        "308d976197427f3ccc2e0b3c2500d4f92b1010fc"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 20:54:56 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 20:54:56 2013 -0800"
      },
      "message": "FuncUtils.verify_tablestats: log table stats after processing all tables\n"
    },
    {
      "commit": "308d976197427f3ccc2e0b3c2500d4f92b1010fc",
      "tree": "2c3bf2dd6a882f7cb9a36fa5d09f9bb02460052c",
      "parents": [
        "3a261d5f415f91a06afe06437b66ed84ff266571"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 17:47:49 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "remove unused oft_assert module\n"
    },
    {
      "commit": "3a261d5f415f91a06afe06437b66ed84ff266571",
      "tree": "adedcf0c7e809f7d3f69e56ef966e4704e1b65bd",
      "parents": [
        "32bf948a5f640a07c89926fb10ebe4b0d9cb01da"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 17:45:08 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "raise an AssertionError if do_barrier fails\n\nThis removes a lot of boilerplate code.\n"
    },
    {
      "commit": "32bf948a5f640a07c89926fb10ebe4b0d9cb01da",
      "tree": "2d0253fbc801f82658c8a34cbb2961fecb314947",
      "parents": [
        "5c3151c308aec2178ec516ae074f07a4fb18a619"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 17:26:30 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "remove assertions on the return value of delete_all_flows\n\nThis function can no longer fail.\n"
    },
    {
      "commit": "5c3151c308aec2178ec516ae074f07a4fb18a619",
      "tree": "d5236bb64ae0a77f1954779467683a0ecbd5198c",
      "parents": [
        "e30455b947669e3dd9adc9f2e591a0c5f3b97d7f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 17:15:41 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "throw AssertionError if controller.message_send fails\n\nUnlike other types of exception an AssertionError will cause the test to \"fail\"\ninstead of \"error\". Using an exception instead of checking return values\nremoves a lot of boilerplate code that wasn\u0027t always present (or correct). It\nmay also help disabuse test writers of the dangerous notion that succeeding in\nwriting a message to the TCP socket means anything.\n"
    },
    {
      "commit": "e30455b947669e3dd9adc9f2e591a0c5f3b97d7f",
      "tree": "e1b5155c05c4e978c78b8b51297e00ba8429b478",
      "parents": [
        "80efd65292c3d4f4fb81fb0c4c0bc5b8724b86e7"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 16:24:44 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "action_list: throw exception if value is not an action\n\nThis is a programmer error, not a switch issue.\n"
    },
    {
      "commit": "80efd65292c3d4f4fb81fb0c4c0bc5b8724b86e7",
      "tree": "7f12714470bdb15a66d29c9803f4a0a23991e349",
      "parents": [
        "ed130657116d17d08623f7cabaac2e2ca1146554"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 14:05:20 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "oft: handle missing test module/class docstrings\n"
    },
    {
      "commit": "37f4211a4e12181744f0236f65e9050967eee782",
      "tree": "4d70c6959e2859bf77e050125b9314349acf5fc5",
      "parents": [
        "e811e7bf91b21ee7e03de0996c21861501df0131"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 13:41:49 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 13:41:49 2013 -0800"
      },
      "message": "oft: output available test groups in --list\n"
    },
    {
      "commit": "e811e7bf91b21ee7e03de0996c21861501df0131",
      "tree": "a7afa1138beb93028a38c3dff9d4f1e04a18801e",
      "parents": [
        "5164517e65d49491b641ede42751983e52077586"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 13:36:54 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 13:36:54 2013 -0800"
      },
      "message": "oft: improve --list output for disabled and non-standard tests\n"
    },
    {
      "commit": "5164517e65d49491b641ede42751983e52077586",
      "tree": "a1f1b32709275d2715109074962ad99986526a2f",
      "parents": [
        "4113a5837ee172d2a67ee4db6ced4d960e18e8d0"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 10:17:16 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 10:17:16 2013 -0800"
      },
      "message": "oft: remove unused command line options\n"
    },
    {
      "commit": "4113a5837ee172d2a67ee4db6ced4d960e18e8d0",
      "tree": "9cf28ac98c4db24d7d90462fbf662b4563676c46",
      "parents": [
        "d8e454841a0b082ca792f121f7e370f8270fffb6"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 10:13:02 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 10:13:02 2013 -0800"
      },
      "message": "oft: improve help text\n"
    },
    {
      "commit": "d8e454841a0b082ca792f121f7e370f8270fffb6",
      "tree": "ce41af978e5088d955ff7fb52232ed3117c0720a",
      "parents": [
        "97e9965c918bcf05f563d9977b6cf9f28e6044d3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 17:36:21 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 17:36:21 2013 -0800"
      },
      "message": "oft: list all tests for --list, not just the ones matching the test spec\n"
    },
    {
      "commit": "97e9965c918bcf05f563d9977b6cf9f28e6044d3",
      "tree": "b8d27b2b87f940a9f1b9997607222d826d8a66e8",
      "parents": [
        "c76b09a91b9085fc905b44d4b72a119a06febb7f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 17:23:20 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 17:23:20 2013 -0800"
      },
      "message": "add group decorator and smoke test group\n\nThe smoke group is intended to be very fast while covering most important\nfeatures.\n"
    },
    {
      "commit": "c76b09a91b9085fc905b44d4b72a119a06febb7f",
      "tree": "fa7e3aff368b0086b99ff8cfd713f68250e5c9f0",
      "parents": [
        "cc45b8ed30ae043f5883ad7f9fb5fbaffc328940"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 16:53:22 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 17:13:53 2013 -0800"
      },
      "message": "oft: accept test/group names in positional arguments\n\nThe --test-spec option is now deprecated and will be removed.\n"
    },
    {
      "commit": "cc45b8ed30ae043f5883ad7f9fb5fbaffc328940",
      "tree": "21eed19ad40782544b383b37004c58afc8ffe22a",
      "parents": [
        "0a4f6377b4bbd222e442f17a8429064bccecea01"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 15:55:02 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 15:55:02 2013 -0800"
      },
      "message": "rewrite test spec code in terms of groups\n"
    },
    {
      "commit": "0a4f6377b4bbd222e442f17a8429064bccecea01",
      "tree": "9cb96f0c71ef4806f7ffb4e119486257840bf35e",
      "parents": [
        "0f5b9c7830726eab86adb4f977dcf3610e0a44c3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 14:40:22 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 14:40:22 2013 -0800"
      },
      "message": "use class decorators to mark tests that shouldn\u0027t be run by default\n"
    },
    {
      "commit": "0f5b9c7830726eab86adb4f977dcf3610e0a44c3",
      "tree": "4c00fc9f47413a6c37502a3c5a769eaba9f67cdd",
      "parents": [
        "ed130657116d17d08623f7cabaac2e2ca1146554"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 14:05:20 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 14:05:20 2013 -0800"
      },
      "message": "oft: handle missing test module/class docstrings\n"
    },
    {
      "commit": "ed130657116d17d08623f7cabaac2e2ca1146554",
      "tree": "516acc2b2903fe939f7c1e0f901ee15143943241",
      "parents": [
        "b8c845ae62169dfe9ecf792c7bc8f27465cb3769"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:35:33 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:35:33 2012 -0800"
      },
      "message": "flow_matches.ExactMatchPrio: look for packet on exact match flow output port, not wildcard flow output port\n"
    },
    {
      "commit": "b8c845ae62169dfe9ecf792c7bc8f27465cb3769",
      "tree": "5bdf38198e54f4a21cada8eb436934dbee6d8f54",
      "parents": [
        "f18980d722058180d7a38adb7cd2579448c6fcfd"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:23:51 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:23:51 2012 -0800"
      },
      "message": "pktact.DirectPacketControllerQueue: skip test if the switch returns an error for the queue stats request on the controller port\n"
    },
    {
      "commit": "f18980d722058180d7a38adb7cd2579448c6fcfd",
      "tree": "4b81edd5de5c61140954b8bfb21d9f1fef84f8d0",
      "parents": [
        "30ca70c643eefa1f287c96f7bca7b33285898ca3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:11:41 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:16:11 2012 -0800"
      },
      "message": "controller: improve log message when sending OF msg\n"
    },
    {
      "commit": "30ca70c643eefa1f287c96f7bca7b33285898ca3",
      "tree": "957d0ccc6476c91d91db441d9ee7f255d5967c98",
      "parents": [
        "0a78fbd90d6d159b37c5ec5a74f8f25c1b12957f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 16:53:55 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 16:53:55 2012 -0800"
      },
      "message": "load.FlowModLoad: cap the number of flow-mods for switches that report huge flowtables\n"
    },
    {
      "commit": "0a78fbd90d6d159b37c5ec5a74f8f25c1b12957f",
      "tree": "77f0219b74ba5805680b130ab711d15917a398c5",
      "parents": [
        "376bb40e04193564a7e4e326be16ab6c09051f2f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 16:25:04 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 16:25:04 2012 -0800"
      },
      "message": "pktact: remove exact match flows from wildcard priority tests\n\nThe OF 1.0 spec states that \"An entry that specifies an exact match (i.e., it\nhas no wildcards) is always the highest priority.\" The WildcardPriority tests\nwere incorrect because they expected exact-match flows to be overridden by\nwildcard flows with higher priority.\n\nRather than rework the tests to treat exact-match flows as having the highest\npriority I\u0027ve chosen to replace the exact-match flows with wildcard flows. The\nreason is that later versions of OpenFlow do not specify this behavior. Once\nthe test-groups functionality has been added to OFTest we can add a 1.0-only\ntest that checks the exact-match priority.\n\nReported-by: Ben Pfaff \u003cblp@nicira.com\u003e\n"
    },
    {
      "commit": "376bb40e04193564a7e4e326be16ab6c09051f2f",
      "tree": "8207c96e7a9e4293fe063ea7645944bf8e6bd566",
      "parents": [
        "d5915041612530d62545303cad4a6f6e5cdb514a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 15:20:16 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 15:20:16 2012 -0800"
      },
      "message": "controller: join controller thread in kill()\n"
    },
    {
      "commit": "d5915041612530d62545303cad4a6f6e5cdb514a",
      "tree": "79c9e0bae7a0c16df64ac5b92f5aac9f0fe5ae38",
      "parents": [
        "207502ecd1656aacf3ade3697e5fc65de6e2f497"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 14:58:35 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 15:00:23 2012 -0800"
      },
      "message": "base_tests: cleanup controller if setup fails\n"
    },
    {
      "commit": "207502ecd1656aacf3ade3697e5fc65de6e2f497",
      "tree": "7d8c218f23ca8d6f730aaf0aedf1efac30e644f5",
      "parents": [
        "7c64a42d8f4a658a424eb7273beabf66ecc70438"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 14:29:12 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 14:29:12 2012 -0800"
      },
      "message": "controller: move creation of listening connection to constructor\n\nDoing this synchronously results in better error messages.\n"
    },
    {
      "commit": "7c64a42d8f4a658a424eb7273beabf66ecc70438",
      "tree": "bf152432c9454d1f5536572d1344b946e750754b",
      "parents": [
        "d9ef7c3357e6d746053d19f6d381a7a9933f552c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 13:46:34 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 13:46:34 2012 -0800"
      },
      "message": "base_tests: remove unused clean_shutdown field\n"
    },
    {
      "commit": "d9ef7c3357e6d746053d19f6d381a7a9933f552c",
      "tree": "3a311134041694176502733a0201a3b562766aa8",
      "parents": [
        "82c35e882bc45d12ac2dbc314dce3966fb23014a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 11:00:30 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 11:00:30 2012 -0800"
      },
      "message": "load.FlowModLoad: shuffle flow-mods before sending them to the switch\n\nThis should cover more code paths than the previous pattern.\n"
    },
    {
      "commit": "82c35e882bc45d12ac2dbc314dce3966fb23014a",
      "tree": "9a7872039fe4c3f1080d19eff5c5d7377a7fc136",
      "parents": [
        "0b04b6c987802d7ec606306f033b4c1a4b761938"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:59:36 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:59:36 2012 -0800"
      },
      "message": "speed up load.FlowModLoad\n\nThis test was responsible for about half the runtime of a full OFTest run.\nReduce the number of iterations to shorten it.\n"
    },
    {
      "commit": "0b04b6c987802d7ec606306f033b4c1a4b761938",
      "tree": "ec7eb570a36b86605fd8ea3b9c1185db2092079f",
      "parents": [
        "90b3d7317874a2222b5e80686065c9567e3f8e79"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:12:23 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:12:23 2012 -0800"
      },
      "message": "speed up counters.DurationPerFlow\n"
    },
    {
      "commit": "90b3d7317874a2222b5e80686065c9567e3f8e79",
      "tree": "1fc017c603423ab434d7cdc07db5c978410c9395",
      "parents": [
        "2c7812ce1e1d869eb3dfa0e59bf96b386d95c0f1"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:03:50 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:03:50 2012 -0800"
      },
      "message": "speed up FuncUtils.verify_*stats\n\nMade the sleep shorter and moved it after the check for the loop condition.\n"
    },
    {
      "commit": "2c7812ce1e1d869eb3dfa0e59bf96b386d95c0f1",
      "tree": "68654d4d40452b9aa2137047180ce496eab52998",
      "parents": [
        "e1b8da9513d907758fef264839c56fab09761c95"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 27 17:52:23 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 27 17:52:23 2012 -0800"
      },
      "message": "use a single dataplane instance for all tests\n\nCreating and destroying dataplane instances was taking about 1/3 of the total\nruntime.\n"
    },
    {
      "commit": "e1b8da9513d907758fef264839c56fab09761c95",
      "tree": "49090625972a5a9e876130f1f65efedbc32a66de",
      "parents": [
        "fb7183008e8fb5a15572cb2b33a08d1fbf1e9bb9"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 22:47:13 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 22:52:50 2012 -0800"
      },
      "message": "dataplane: single-threaded rewrite\n\nThere\u0027s now just one thread for the dataplane instead of one per port. This\ngreatly reduces the amount of code needed for each port implementation.\n"
    },
    {
      "commit": "fb7183008e8fb5a15572cb2b33a08d1fbf1e9bb9",
      "tree": "43810e1920e5f5a25c90d6955b4c39ea1835ef30",
      "parents": [
        "e7b0ecb155278f0c0a21ae6299baaa516a5140b1"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 21:02:31 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 21:02:31 2012 -0800"
      },
      "message": "DataPlane: cleanup and remove dead code\n"
    },
    {
      "commit": "e7b0ecb155278f0c0a21ae6299baaa516a5140b1",
      "tree": "cae51d2fd83e4e08137c8e8959dfaae5eaf32af7",
      "parents": [
        "2e37ec25b27ea3474d2a5adf0dd3adf422ad2585"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 10:01:01 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 10:01:01 2012 -0800"
      },
      "message": "manually release controller and dataplane references\n\nThe GC wasn\u0027t collecting these objects in a timely manner, which caused the\nprocess to run out of file descriptors.\n"
    },
    {
      "commit": "2e37ec25b27ea3474d2a5adf0dd3adf422ad2585",
      "tree": "cbd5ffe9956c5e6b4e3a282919b22f199b06ebb2",
      "parents": [
        "a718c669273689d1d44ca42dcbb4464cfa2c45e8"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 09:47:39 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 09:47:39 2012 -0800"
      },
      "message": "EventDescriptor: fix log statement\n"
    },
    {
      "commit": "a718c669273689d1d44ca42dcbb4464cfa2c45e8",
      "tree": "00ba05833d8248db3b86dcce7a43a3b21240e0f9",
      "parents": [
        "5d0e13ca68329148b693536bbadd87b8261f391a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 17:08:47 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 17:08:47 2012 -0800"
      },
      "message": "Revert \"pktact: disable no-op test DirectBadPacketBase\"\n\nThis reverts commit 5d0e13ca68329148b693536bbadd87b8261f391a.\n\nThe priority was inherited by the subclasses, which wasn\u0027t the intention.\n"
    },
    {
      "commit": "5d0e13ca68329148b693536bbadd87b8261f391a",
      "tree": "5fb01fea16ff6ffe67f36ae55205657ffa5233c8",
      "parents": [
        "d7d3292a587e7450855adbd714f98bf8f5e02d96"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 15:05:07 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 15:05:07 2012 -0800"
      },
      "message": "pktact: disable no-op test DirectBadPacketBase\n"
    },
    {
      "commit": "d7d3292a587e7450855adbd714f98bf8f5e02d96",
      "tree": "00ba05833d8248db3b86dcce7a43a3b21240e0f9",
      "parents": [
        "7e1d5c54487356c0a1ef86f88f800a7d24d34283"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 15:03:20 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 15:03:20 2012 -0800"
      },
      "message": "DataPlanePort: fix race between thread start and kill\n\nA very short test could kill the port before the port\u0027s thread started running.\nThe thread would overwrite self.running with True and thus never exit.\n"
    },
    {
      "commit": "7e1d5c54487356c0a1ef86f88f800a7d24d34283",
      "tree": "57a57e50e3a32ed44e4a78983b32699771466b91",
      "parents": [
        "5b5da2d4413ff7249522d9f167c61cd2e298f9ca"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 14:08:32 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 14:08:32 2012 -0800"
      },
      "message": "EventDescriptor: dont block notify() if pipe is full\n"
    },
    {
      "commit": "5b5da2d4413ff7249522d9f167c61cd2e298f9ca",
      "tree": "e2adf618a0e67102452025dfc9997b99d8de2cba",
      "parents": [
        "4dfd5e19c74d1a9591e88927e93a326818aa38b6"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:56:32 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:56:32 2012 -0800"
      },
      "message": "dataplane: use an EventDescriptor to speed up killing ports\n"
    },
    {
      "commit": "4dfd5e19c74d1a9591e88927e93a326818aa38b6",
      "tree": "4b672910b8538ccfd921cbd89d4e1f00c67c0ba3",
      "parents": [
        "4d46dbd5348cc2db996e8e3d521d0597f372eeb0"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:48:01 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:48:01 2012 -0800"
      },
      "message": "factor out EventDescriptor from Controller\n"
    },
    {
      "commit": "4d46dbd5348cc2db996e8e3d521d0597f372eeb0",
      "tree": "1991a83cafc224ff92185623538566e7b549716b",
      "parents": [
        "bd186803c8aaf15c4ba20e34c0b7da3d74cc9636"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:26:19 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:26:19 2012 -0800"
      },
      "message": "dataplane: kill port threads concurrently\n"
    }
  ],
  "next": "bd186803c8aaf15c4ba20e34c0b7da3d74cc9636"
}
