)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "bd186803c8aaf15c4ba20e34c0b7da3d74cc9636",
      "tree": "8224a6cf082a840bbe2edaeec1eecdfd8fe631b4",
      "parents": [
        "3279754f96efb78e32aa226543ff5f0df26c7089"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:46:24 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:46:24 2012 -0800"
      },
      "message": "ovs-ctl: add --ovs-vswitchd-verbosity flags\n"
    },
    {
      "commit": "3279754f96efb78e32aa226543ff5f0df26c7089",
      "tree": "a9cd0310586fe0ca3df4064dfc6556c2929fc2f3",
      "parents": [
        "71d887d2e3836649b650939ee3c1e6e91cde16e2"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:46:05 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:46:05 2012 -0800"
      },
      "message": "controller: use a pipe to wake up event loop from a different thread\n"
    },
    {
      "commit": "71d887d2e3836649b650939ee3c1e6e91cde16e2",
      "tree": "408c152cd1b3b59b0199afb21ff9b271686b7fb1",
      "parents": [
        "82ef183784dfddd4fc790ea50fe7d04ea149d86f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:05:13 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:05:13 2012 -0800"
      },
      "message": "include milliseconds in log timestamps\n"
    },
    {
      "commit": "82ef183784dfddd4fc790ea50fe7d04ea149d86f",
      "tree": "23e022c878017e08d3895c0e2e23de9e04db5bed",
      "parents": [
        "e912d03d5dd19039abe599af85feb03eb6ec68f2"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:04:35 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:04:35 2012 -0800"
      },
      "message": "disable Nagle\u0027s algorithm\n"
    },
    {
      "commit": "e912d03d5dd19039abe599af85feb03eb6ec68f2",
      "tree": "db18a5492aa711be24884740eb91ba10b12a106d",
      "parents": [
        "74be472440365351820efd3786f92f207f74e949"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 14:28:33 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 14:28:33 2012 -0800"
      },
      "message": "flow_msg_install: dont send redundant barriers\n"
    },
    {
      "commit": "74be472440365351820efd3786f92f207f74e949",
      "tree": "487a00a10f3ca22b488e380f4d492952f258032e",
      "parents": [
        "9c93e670e07836d4e0e38eb4f47eafa6c55ec63e"
      ],
      "author": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Fri Dec 21 13:07:03 2012 -0800"
      },
      "committer": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Fri Dec 21 13:07:03 2012 -0800"
      },
      "message": "controller.py: clear pending packets on disconnect.\n\ncxn.py: store switch addr to detect when switch has disconnected and\nreconnected.\n"
    },
    {
      "commit": "9c93e670e07836d4e0e38eb4f47eafa6c55ec63e",
      "tree": "de14be171e3715f31ae89f9b2e4c8f9e476c1cce",
      "parents": [
        "43ee54c1bccc3ec44a520d25995074ba08ccee96"
      ],
      "author": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Tue Dec 18 12:00:14 2012 -0800"
      },
      "committer": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Tue Dec 18 12:00:14 2012 -0800"
      },
      "message": "Remove serial failover tests, which only maintain one controller at any point\nin time.\nInstead, cxn.py-based failover tests can maintain multiple controllers at the\nsame time.\n"
    },
    {
      "commit": "43ee54c1bccc3ec44a520d25995074ba08ccee96",
      "tree": "5c2b5ed97ba6232eb841582dce41ff5748a71a92",
      "parents": [
        "2bb7a272749bb1a9126b347c80c494d18516c322"
      ],
      "author": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Thu Dec 13 15:52:37 2012 -0800"
      },
      "committer": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Thu Dec 13 15:52:37 2012 -0800"
      },
      "message": "Move qinq out of simple_tcp_packet\n"
    },
    {
      "commit": "2bb7a272749bb1a9126b347c80c494d18516c322",
      "tree": "4141f83a412b31d89a80c8a6940df7ffbd876870",
      "parents": [
        "5fb8edff89864728e0612aeed60604502934ddd8",
        "b603b197837d1797f6668180d5fd5d4a3e2d15f5"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Wed Dec 12 15:54:53 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Wed Dec 12 15:54:53 2012 -0800"
      },
      "message": "Merge pull request #29 from eswierk/master\n\nVarious fixes and improvements"
    },
    {
      "commit": "b603b197837d1797f6668180d5fd5d4a3e2d15f5",
      "tree": "4141f83a412b31d89a80c8a6940df7ffbd876870",
      "parents": [
        "5fb8edff89864728e0612aeed60604502934ddd8"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Dec 12 15:38:49 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Dec 12 15:39:23 2012 -0800"
      },
      "message": "Test only supported match fields in pktact.MatchEach\n"
    },
    {
      "commit": "5fb8edff89864728e0612aeed60604502934ddd8",
      "tree": "69bcde6de4f56a1d7661bbbf3263069440b87a51",
      "parents": [
        "47fe471addfd055828b73341f87c3cc89e81ae9c",
        "7040a8d36485d867da83be28a1f0b7650b826fec"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Wed Dec 12 09:33:55 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Wed Dec 12 09:33:55 2012 -0800"
      },
      "message": "Merge pull request #28 from eswierk/master\n\nVarious fixes and improvements"
    },
    {
      "commit": "7040a8d36485d867da83be28a1f0b7650b826fec",
      "tree": "69bcde6de4f56a1d7661bbbf3263069440b87a51",
      "parents": [
        "018892d0517ee623240e5fbbcc6429f7d304419b"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:30:13 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:30:13 2012 -0800"
      },
      "message": "Use VLAN-tagged packet to avoid ill-defined semantics of VLAN ID 0\n"
    },
    {
      "commit": "018892d0517ee623240e5fbbcc6429f7d304419b",
      "tree": "7831e4e98f4b4d03cf296c9f2eeecd73ce32bd31",
      "parents": [
        "ab0bab3d52c110ee57c16014ba36d07bd5e20558"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Fri Nov 30 14:08:05 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:29:06 2012 -0800"
      },
      "message": "Add run_test_list to noing profile\n"
    },
    {
      "commit": "ab0bab3d52c110ee57c16014ba36d07bd5e20558",
      "tree": "7e59128fe9d1251dba8d3e4a8c545b886c27e24b",
      "parents": [
        "e6fca642a6e7e066ec2edf7e33969148d2e9a0f1"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Fri Nov 30 13:31:00 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:29:06 2012 -0800"
      },
      "message": "Don\u0027t try to use the incompatible pylibpcap library\n"
    },
    {
      "commit": "e6fca642a6e7e066ec2edf7e33969148d2e9a0f1",
      "tree": "a925905bd29c3780d12f0db3ce69207984546df2",
      "parents": [
        "47f608d55640a2bd2d633ec0111f5be37fb752b8"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Fri Nov 30 12:00:54 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:29:05 2012 -0800"
      },
      "message": "Add a test that fills up the flow table repeatedly\n"
    },
    {
      "commit": "47f608d55640a2bd2d633ec0111f5be37fb752b8",
      "tree": "01758591fc9ea49bc978cd7d5e317cbd76c2b464",
      "parents": [
        "47fe471addfd055828b73341f87c3cc89e81ae9c"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Nov 12 15:36:32 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:29:05 2012 -0800"
      },
      "message": "Add test for BSN mirror action and config extensions\n"
    },
    {
      "commit": "47fe471addfd055828b73341f87c3cc89e81ae9c",
      "tree": "5fa1de974cc1eec1c3534570ee1da92ab597147e",
      "parents": [
        "ba9eee87b344e49741b9faa7c6ffa4ff1ba0cecb",
        "75bcf4d2e0d7446a2a337e445ba0708bef1bafd3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Sun Dec 09 23:24:38 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Sun Dec 09 23:24:38 2012 -0800"
      },
      "message": "Merge pull request #27 from InCNTRE/master\n\nmessage_types "
    },
    {
      "commit": "75bcf4d2e0d7446a2a337e445ba0708bef1bafd3",
      "tree": "bfdb6b02ca1cb644c7956b425cba76181fd31de4",
      "parents": [
        "c277fddefd1667008dcc99889b017985ba9f0566"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 09 22:17:36 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 09 22:17:36 2012 -0500"
      },
      "message": "edited\n"
    },
    {
      "commit": "ba9eee87b344e49741b9faa7c6ffa4ff1ba0cecb",
      "tree": "9c193cb3003521fd08e8ed9ca18de7e8642bb115",
      "parents": [
        "4ecc1f4c44e13367ce755d4857581f8124d4f90a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Dec 07 22:44:24 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Dec 07 22:44:24 2012 -0800"
      },
      "message": "dl_vlan_pcp is only a 3 bit field, 10 does not fit\n"
    },
    {
      "commit": "c277fddefd1667008dcc99889b017985ba9f0566",
      "tree": "0ba05ed16ebfeff2449976ca7b99bcd38a572963",
      "parents": [
        "5fb6d0507eefbf9064e29616c09e1e173857af9e"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Fri Dec 07 14:35:20 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Fri Dec 07 14:35:20 2012 -0500"
      },
      "message": "edited\n"
    },
    {
      "commit": "4ecc1f4c44e13367ce755d4857581f8124d4f90a",
      "tree": "ab38725e19f46d28632a0a8141dc96426e03e98b",
      "parents": [
        "4b9e38cbcf42e323fd5c57f5ee8336c7c393b575"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 06 16:35:24 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 06 17:02:48 2012 -0800"
      },
      "message": "pktact.FloodMinusPort: check behavior after clearing NO_FLOOD bit\n"
    },
    {
      "commit": "4b9e38cbcf42e323fd5c57f5ee8336c7c393b575",
      "tree": "c262c4bda9903663a056a310022bd7c471835f5e",
      "parents": [
        "9176567db0278481ff43bf0eeee7a8f8b99f6453"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 06 16:33:20 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 06 17:02:48 2012 -0800"
      },
      "message": "pktact.FloodMinusPort: clear NO_FLOOD bits before testing\n\nPrevious interrupted runs may have left these bits set.\n"
    },
    {
      "commit": "9176567db0278481ff43bf0eeee7a8f8b99f6453",
      "tree": "a69086c746105517e3a2828c17246972e118d0c0",
      "parents": [
        "d2e93aa1cc8366e43a5115631ca307c99e11f356"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 06 16:33:04 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 06 17:02:48 2012 -0800"
      },
      "message": "speed up negative tests in receive_pkt_check\n"
    },
    {
      "commit": "d2e93aa1cc8366e43a5115631ca307c99e11f356",
      "tree": "a0af3a507c495151872215863fff7e6aa7a2e2c5",
      "parents": [
        "b5c7379adf9f909d2f50c2481f523e5d39cf3617"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 05 17:55:46 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 06 17:02:48 2012 -0800"
      },
      "message": "dataplane: record wall clock time when receiving packet\n\ntime.clock() returns processor time which is not useful.\n"
    },
    {
      "commit": "b5c7379adf9f909d2f50c2481f523e5d39cf3617",
      "tree": "36876beac3af5e5c3461619fa65c395ceb4d605b",
      "parents": [
        "89725bb41c7da04c685a8c31fee0a0bdb1b5bd00"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 03 17:12:32 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 03 17:55:45 2012 -0800"
      },
      "message": "flow_matches.IpTos: fix DSCP values\n\nThe lower 2 bits of the TOS byte are for ECN.\n"
    },
    {
      "commit": "89725bb41c7da04c685a8c31fee0a0bdb1b5bd00",
      "tree": "9972070b1c5170e0b6b8e9a2bcca6ee978a848f2",
      "parents": [
        "95e6a45ae51b4f5f768260d78d498c4dd5430157"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 03 16:23:27 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 03 17:55:44 2012 -0800"
      },
      "message": "also test packet-out in flow_match_test\n\nThe goal is to test the actions taken on the packet, not the matching which is\nof course irrelevant.\n"
    },
    {
      "commit": "5fb6d0507eefbf9064e29616c09e1e173857af9e",
      "tree": "891f20c55e7678edab0c42d26976959541332188",
      "parents": [
        "1febc72932d5428c093029bd38a55d27e9b293eb"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Mon Dec 03 00:52:20 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Mon Dec 03 00:52:20 2012 -0500"
      },
      "message": "made PortStatusMessage priority -1\n"
    },
    {
      "commit": "1febc72932d5428c093029bd38a55d27e9b293eb",
      "tree": "82cb72d6d969119f16865a771526bb2fe777b3cb",
      "parents": [
        "5e0a6e374200833af692315b6117b21b2b560068"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 02 18:37:36 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 02 18:37:36 2012 -0500"
      },
      "message": "edited\n"
    },
    {
      "commit": "5e0a6e374200833af692315b6117b21b2b560068",
      "tree": "b3e64c854b5db4d926ce1a9a3ee76973bc49eaad",
      "parents": [
        "8a0406e29aea1747c65bb67c62235f3149628c21"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 02 18:34:35 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 02 18:34:35 2012 -0500"
      },
      "message": "reverted the line specified\n"
    },
    {
      "commit": "8a0406e29aea1747c65bb67c62235f3149628c21",
      "tree": "89eef015f3c6396f0abf7617a5e08dfb1ef197e1",
      "parents": [
        "15896766f6b3ddcab4127932b09a51ff54ae5b23"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 02 18:32:05 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 02 18:32:05 2012 -0500"
      },
      "message": "removed debugging print statements\n"
    },
    {
      "commit": "15896766f6b3ddcab4127932b09a51ff54ae5b23",
      "tree": "c7e5c8325f7e7accc9160888d3b92330fc24133e",
      "parents": [
        "cd8e1cf846ad071c530a677406d8c02c0df429bf"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 02 18:30:41 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 02 18:30:41 2012 -0500"
      },
      "message": "made the specfied changes\n"
    },
    {
      "commit": "cd8e1cf846ad071c530a677406d8c02c0df429bf",
      "tree": "d77917b31ddafee4d559e69f8ef5d62a3497ec87",
      "parents": [
        "055102a3cf0cc183ce418c7b17999775837f7384"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Wed Nov 28 11:44:42 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Wed Nov 28 11:44:42 2012 -0500"
      },
      "message": "added port down and up functions\n"
    },
    {
      "commit": "055102a3cf0cc183ce418c7b17999775837f7384",
      "tree": "695dc1415fc3fefe3315f6044e1bc5436d9d6bae",
      "parents": [
        "efdff316317028e3426ca2d4f57439017e6e2d22"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Wed Nov 28 11:43:45 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Wed Nov 28 11:43:45 2012 -0500"
      },
      "message": "added message_types test-cases\n"
    },
    {
      "commit": "95e6a45ae51b4f5f768260d78d498c4dd5430157",
      "tree": "ca4c7789f3984e44a97e70b741785477c30fcf96",
      "parents": [
        "b10ebd61faa5db8a9d5bb7013e46e3939501f700",
        "efdff316317028e3426ca2d4f57439017e6e2d22"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Tue Nov 27 13:45:55 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Tue Nov 27 13:45:55 2012 -0800"
      },
      "message": "Merge pull request #26 from InCNTRE/master\n\nflow_matches"
    },
    {
      "commit": "b10ebd61faa5db8a9d5bb7013e46e3939501f700",
      "tree": "39ee4e7fcb5647f6d101dee572e46032418b2020",
      "parents": [
        "8b27474b25b89364db6bdd153a8d467d01470468"
      ],
      "author": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Tue Nov 27 01:42:51 2012 -0800"
      },
      "committer": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Tue Nov 27 01:42:51 2012 -0800"
      },
      "message": "Generate tcp packets with double vlan tags\n"
    },
    {
      "commit": "8b27474b25b89364db6bdd153a8d467d01470468",
      "tree": "99805e1bfc6b92100fa204b6346b9938056e6924",
      "parents": [
        "c93b7d35fa33720bf6c2e5852b879946f3fb5c54",
        "b839208b993df814717899c5a6366fdd9c764df7"
      ],
      "author": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Mon Nov 26 17:55:44 2012 -0800"
      },
      "committer": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Mon Nov 26 17:55:44 2012 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:floodlight/oftest\n"
    },
    {
      "commit": "c93b7d35fa33720bf6c2e5852b879946f3fb5c54",
      "tree": "dafd63363b6c972bdc05d08ad3baa6c2df4aa7be",
      "parents": [
        "b7f12466ae1b55525d260591cba1e762e63de433"
      ],
      "author": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Mon Nov 26 17:55:36 2012 -0800"
      },
      "committer": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Mon Nov 26 17:55:36 2012 -0800"
      },
      "message": "Add run_test_list, simple version\n"
    },
    {
      "commit": "b839208b993df814717899c5a6366fdd9c764df7",
      "tree": "5e3624465780238a51113c0788d6d4f94e547b26",
      "parents": [
        "d10e8e0e1946e7b88b29dee3791c0c4474c7ab75"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Nov 21 15:52:54 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Nov 21 15:53:13 2012 -0800"
      },
      "message": "pktact.WildcardPriority: add a lower priority flow at the end to ensure it doesnt override the higher priority flows\n"
    },
    {
      "commit": "d10e8e0e1946e7b88b29dee3791c0c4474c7ab75",
      "tree": "2826a3012c75e45070b884d685754442610fd884",
      "parents": [
        "b7f12466ae1b55525d260591cba1e762e63de433"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Nov 21 15:48:36 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Nov 21 15:53:13 2012 -0800"
      },
      "message": "add flow_stats.DeletedFlowStats\n"
    }
  ],
  "next": "efdff316317028e3426ca2d4f57439017e6e2d22"
}
