)]}'
{
  "log": [
    {
      "commit": "2617eb6bd07caa91a6f2ed7a2874f69d1e77d432",
      "tree": "79903ed2f59417729b6e44b2fe041d80d868efad",
      "parents": [
        "cea8c5fb333638da7405b0aa698894955c4d884c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue May 05 14:19:59 2015 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue May 05 14:19:59 2015 -0700"
      },
      "message": "tests: add sleep after flow timeouts\n\nFor normal flow-mods we can use the barrier message to find out when the change\nhas made it to the datapath. This isn\u0027t the case with timeouts, because the\nupdate isn\u0027t associated with any controller connection. When tests are run in\nshort succession the timed out flow may still exist in the datapath when the\nnext test starts.\n"
    },
    {
      "commit": "ecb5dfdbd9ace1424c9fea815b37e65b1a982050",
      "tree": "f08a09e5f4c04fafa697c7466480ed5c24afcb07",
      "parents": [
        "ee0f08fc7f20220b77cdfb6b325ea3e20053f5fd"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Apr 23 13:36:41 2015 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Apr 23 13:37:59 2015 -0700"
      },
      "message": "allow delayed counter updates for table stats\n\nSame reason as 6d618170.\n"
    },
    {
      "commit": "0d4a558fa90a3077922e393c71284330a6f47909",
      "tree": "efdcac2e9b07cf749f27d41b85418ee8abb4bbb5",
      "parents": [
        "6d6181709a21cbf010379213e29094425e179783"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Apr 10 12:25:39 2015 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Apr 10 12:25:39 2015 -0700"
      },
      "message": "tests: replace manual port stats requests with get_port_stats\n\nThis code wasn\u0027t doing the stats transaction correctly since it didn\u0027t account\nfor the switch splitting the stats entries across multiple messages.\n"
    },
    {
      "commit": "6d6181709a21cbf010379213e29094425e179783",
      "tree": "b8b86d8fad3944b0a5c12a11cf24d1db6c534d29",
      "parents": [
        "e35e11e68e325fce3aa5756e9e5d87340ab54222"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Apr 10 12:22:55 2015 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Apr 10 12:22:55 2015 -0700"
      },
      "message": "port_stats: check for packets \u003e\u003d expected\n\nIf an earlier test run sends a packet through the port, and if the switch takes\na second or so to make those counter updates visible to OpenFlow, then this\ntest would fail because the port stats would be higher than expected.\n\nChanging the conditional reduces the usefulness of the test because it won\u0027t\ncatch overcounting errors, but it\u0027s necessary to make it correct.\n"
    },
    {
      "commit": "ae68aeceaed2f7e6e568711907c41358c5ef8daf",
      "tree": "df193fbd6ba77560faf6c8ebfd1de9defe94aad3",
      "parents": [
        "b63e6bd19fa5c758f986cb775b80b2404873391f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Apr 08 13:58:34 2015 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Apr 08 13:58:34 2015 -0700"
      },
      "message": "port_stats.AllPortStats: clear flowtable before inserting new flows\n\nThis test was failing due to interference from other tests.\n"
    },
    {
      "commit": "0f4c77c5cee61426f7bf0147745d5405e628c60c",
      "tree": "6eaf5021b54f211ec7d94923368bba90bf0e345a",
      "parents": [
        "48f6aed48c44bef36147eb091350458674715f0d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Sun Mar 23 16:02:56 2014 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Sun Mar 23 16:16:51 2014 -0700"
      },
      "message": "add latency tests\n\nThese tests are mostly helpful for deriving --default-negative-timeout.\n"
    },
    {
      "commit": "162509590c7289e466e15e24319549fa4d0097ab",
      "tree": "529ddd1d84a5550de0d5c4137eb4a83dc3cbb608",
      "parents": [
        "d0388b2c71024d0c493a0f9fd0cf4deb53fa37df"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Mar 07 10:59:51 2014 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Mar 07 10:59:51 2014 -0800"
      },
      "message": "remove broken openflow_protocol_messages.Hello\n\nThe handshake is already complete by the time this test sends a HELLO message.\n"
    },
    {
      "commit": "80c5b207e07f2828805d8f83358a78093909a690",
      "tree": "23aae224a5d6efdd54bbb747e1c68a6b9151797c",
      "parents": [
        "57881ca789fd4067987d87fce3ea9bbe4f533af8"
      ],
      "author": {
        "name": "Tony van der Peet",
        "email": "tony.vanderpeet@alliedtelesis.co.nz",
        "time": "Wed Nov 20 11:47:48 2013 +1300"
      },
      "committer": {
        "name": "Tony van der Peet",
        "email": "tony.vanderpeet@alliedtelesis.co.nz",
        "time": "Wed Nov 20 11:47:48 2013 +1300"
      },
      "message": "Fix load.FlowRemovedLoad test.\n"
    },
    {
      "commit": "e226f04607a40ea27383fb2a5d29ddbacc6ec7b3",
      "tree": "94d8b8c32f46a6c703c64cb313ba6052f9575480",
      "parents": [
        "3f71b813deee66d914757c856d550838303226d9"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Oct 21 06:22:03 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Oct 21 06:29:48 2013 -0700"
      },
      "message": "use per-type error msg classes\n"
    },
    {
      "commit": "609194f68f8f99507aa75293fe364d5f5c4a268a",
      "tree": "e1d34ee98afca996b9edfcd1b6cc1cddc9616b95",
      "parents": [
        "6f4978cd8387de7eb3a650a3d3a87264acf31efb"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Oct 21 06:17:37 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Oct 21 06:17:37 2013 -0700"
      },
      "message": "update uses of renamed pyloxi constants\n"
    },
    {
      "commit": "e4b384df950b553313a628ef9c37cba455ba8243",
      "tree": "6860128c143570f0007b2a13b65835ccf4db81c7",
      "parents": [
        "9f2f17e6715531ed1a750f09f1718f4aa40f8bec"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Sep 13 14:33:40 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Sep 30 13:37:41 2013 -0700"
      },
      "message": "testutils: add new functions to check for dataplane packets\n\n`receive_pkt_check` and `receive_pkt_verify` had slightly different\nfunctionality and neither were sufficient for complex tests. This change\ndeprecates them and adds new functions.\n\nThe high level `verify_packets` function is sufficient for most tests. When\nmore complex logic is needed the primitive functions `verify_packet`,\n`verify_no_packet`, and `verify_no_other_packets` should be used directly.\n\nAll OpenFlow 1.0/1.3 tests are updated to use the new functions. The old\nfunctions are left around for compatibility with out of tree tests.\n"
    },
    {
      "commit": "15a15060109acd2e1fd00e98a90b14ba025c8c48",
      "tree": "f0b31db6c33d49f69d71d031607948abd09b007b",
      "parents": [
        "db7295e7fee9b0ab73422862da3c8bc61b202db4"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Aug 12 23:11:12 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Aug 13 10:18:33 2013 -0700"
      },
      "message": "flow_query: handle different switch representations of nw src/dst masks\n\nThere are multiple wire representations of the same OpenFlow match. One example\nis the nw src/dst masks, where mask indices 32 to 63 are equivalent. A switch\nmay return a different representation of the same match in a flow stats reply\nthan was originally sent in a flow-mod, and the flow_query tests need to handle\nthis.\n\nThe solution is to define a canonical representation of the match for the\npurpose of checking equality. In this case all nw src/dst mask indices \u003e\u003d 32\nare changed to 32. The main change is canonicalizing the match received from\nthe switch (in `flow_tbl_verify`) before checking it against the already\ncanonical matches sent to the switch.\n"
    },
    {
      "commit": "a68176f803f56ead0e73ba8aac052e2886b6f2ef",
      "tree": "1485cfa1a449c1c868ec0340e3c14d1ecbcc319e",
      "parents": [
        "2855ef7187e9b2ebd3d2b1b2240aebb277ee1bff"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 09 17:41:05 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 09 17:41:05 2013 -0700"
      },
      "message": "wrap scapy with explicit imports\n\npylint can\u0027t handle scapy\u0027s magical imports.\n"
    },
    {
      "commit": "33be15e3502203a94367928e408caa1f21a01ad0",
      "tree": "cebf35e2075aa210eb8d6faed605b20573ae6954",
      "parents": [
        "19c9d764584727e38c839a0003a2d86d0657411f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Aug 05 16:42:44 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Aug 05 16:42:44 2013 -0700"
      },
      "message": "nicira_dec_ttl: add TtlDecrementZeroTtl\n"
    },
    {
      "commit": "19c9d764584727e38c839a0003a2d86d0657411f",
      "tree": "afd696f73c9be0f7e89296803f529e94caa4ef53",
      "parents": [
        "3f17dbba1772f56640b0b9fe87b1d2a338d02d9a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Aug 05 16:42:21 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Aug 05 16:42:21 2013 -0700"
      },
      "message": "nicira_dec_ttl: fix syntax error\n"
    },
    {
      "commit": "ceee1c652bf021c587b018fc7f0ce6f534b3ba97",
      "tree": "c1a58ca8f41637a8c8228a85c506a1fc20bc0039",
      "parents": [
        "ff12e4891210ff38cc696c38c876c3b739211de0"
      ],
      "author": {
        "name": "Kiran Poola",
        "email": "kiran.poola@bigswitch.com",
        "time": "Tue Jul 02 14:57:42 2013 -0700"
      },
      "committer": {
        "name": "Kiran Poola",
        "email": "kiran.poola@bigswitch.com",
        "time": "Tue Jul 02 14:57:42 2013 -0700"
      },
      "message": "In ARP opcode flow_match test flow entry should look for specific DL_TYPE\n"
    },
    {
      "commit": "ff12e4891210ff38cc696c38c876c3b739211de0",
      "tree": "1cbc1ef040a939399bd80a1ab1145c449471eb37",
      "parents": [
        "6d94d0b07c7bdde0009da443fe5e6280ba62fc41"
      ],
      "author": {
        "name": "Kiran Poola",
        "email": "kiran.poola@bigswitch.com",
        "time": "Tue Jul 02 14:19:52 2013 -0700"
      },
      "committer": {
        "name": "Kiran Poola",
        "email": "kiran.poola@bigswitch.com",
        "time": "Tue Jul 02 14:19:52 2013 -0700"
      },
      "message": "flow_match: Match on ARP Opcode\n"
    },
    {
      "commit": "4c504f32da9ba180c1091a631063a567fbb921ae",
      "tree": "b107414b0231d0ed48783e95e55f912e19a43a26",
      "parents": [
        "ee0e680afbb7e22f9a7a7f12c575f02dd9ee65a3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Jun 07 17:24:14 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Jun 07 17:24:14 2013 -0700"
      },
      "message": "testutils: add verify_packet_in and verify_no_packet_in\n\nChecking that the controller received a packet-in message is surprisingly\ncomplicated to do correctly. Because the switch may send unexpected packet-ins\n(Linux IP stack on IVS\u0027s OFPP_LOCAL, for example) each test needs logic to\nmatch the packet data, in_port, etc to figure out if this is the packet-in\nmessage it\u0027s looking for.\n\nThis change adds two testutils functions that automate this, and replaces all\nthe other implementations in tests.\n"
    },
    {
      "commit": "542b959acb62df4cb5b686475acbf6a4e78c41fd",
      "tree": "4693aea68a8b6dd4c22375b0b26ebd1636a83162",
      "parents": [
        "c2ee4b8544783535160cedee206f5c1179f43b58"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Apr 25 09:32:59 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri May 03 17:43:05 2013 -0700"
      },
      "message": "flow_stats: remove references to padding\n"
    },
    {
      "commit": "c4ab0beb2464abf5e29aa102c61ab0de257ed087",
      "tree": "949bec31dc8d7b2553bcf22ca392ca1290021470",
      "parents": [
        "377e74763eafedde3efaef92ffa4e954ee2e939c",
        "7071cf14dc17dd23214033349f8d08dfe15ca667"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Tue Apr 16 11:43:25 2013 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Tue Apr 16 11:43:25 2013 -0700"
      },
      "message": "Merge pull request #48 from floodlight/det-monitor-pkt-in\n\nTest to monitor and report packet-in rate.  Disabled by default as it is \"blocking\".  Note that this only supports a single controller (determined by the command line parameters)."
    },
    {
      "commit": "7071cf14dc17dd23214033349f8d08dfe15ca667",
      "tree": "bb507c73e53ac7974a46d90a3702ddb355f342e9",
      "parents": [
        "7e45412a921a3b7220b86d366048e27aeb395b62"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Tue Apr 16 11:02:13 2013 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Tue Apr 16 11:02:13 2013 -0700"
      },
      "message": "Minor updates for pkt in monitoring\n\nResponse to comment for rename of packet count\nClarified periodic_task name\nIndentation\n"
    },
    {
      "commit": "9c49160e407d2edd96e156dcf389d297e7443112",
      "tree": "6280768286e67ac7c58b51e7c7531203d4e7f6a8",
      "parents": [
        "d929b8d132dd8ed000f9a6d331e39d25303310e6"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Apr 15 16:00:46 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Apr 15 16:00:46 2013 -0700"
      },
      "message": "add load.FlowRemovedLoad\n"
    },
    {
      "commit": "7e45412a921a3b7220b86d366048e27aeb395b62",
      "tree": "93fec9abb7ab7514a8269e03468ec14adf8d99c3",
      "parents": [
        "dd6b6ffabf26a9d5338c50093c30b89aae0f7edf"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Apr 12 08:22:42 2013 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Apr 12 08:22:42 2013 -0700"
      },
      "message": "Added packet-in monitor test case\n\nThis test case starts the controller connection with keep-alive.\nIt then polls the controller to count packet in messages.  It\nreports the number of messages received about every second.\n"
    },
    {
      "commit": "ea8c472f36be65f3a8f2d9a3f76c231e12524780",
      "tree": "d5086d9c905b3d20e047c482eed3f571756e3730",
      "parents": [
        "ff637c9fc8949913789b930a70ad7ec8bcc4bbff"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Apr 04 15:30:20 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Apr 04 15:30:20 2013 -0700"
      },
      "message": "explictly set buffer_id for packet-out messages\n\nThe old pylibopenflow library did this by default, but PyLoxi initializes that\nfield to zero.\n"
    },
    {
      "commit": "5252a51958f8f6c356083a2b386dbc9497ae986b",
      "tree": "12d260600d8c390162739fcc1907be90741fa33a",
      "parents": [
        "f345bd3fbdb4b79f5114ababdc8abc665d81ec27"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Apr 04 13:19:22 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Apr 04 13:19:22 2013 -0700"
      },
      "message": "nicira_role: add module description\n"
    },
    {
      "commit": "2c232ca88b107494c4517600cc27d56821c57cbb",
      "tree": "a700a86f137799686e49cae8714361f84577e45f",
      "parents": [
        "cf5dbde67f17fc84866310f8c5f89f604f70ddba"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 28 16:53:09 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 28 16:53:09 2013 -0700"
      },
      "message": "nicira_role: add EqualAsyncMessages test\n\nRequires special switch configuration.\n"
    },
    {
      "commit": "cf5dbde67f17fc84866310f8c5f89f604f70ddba",
      "tree": "70f80cac2bba82bc9b3aa05ddb48551601e24bda",
      "parents": [
        "13c91598220c4ab6da1431a43ee4a8ccf0a7c0e2"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 28 13:53:05 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 28 13:55:42 2013 -0700"
      },
      "message": "nicira_role: add RoleSwitch test\n\nThis test has to be disabled by default because it requires special switch\nconfiguration.\n"
    },
    {
      "commit": "13c91598220c4ab6da1431a43ee4a8ccf0a7c0e2",
      "tree": "faa08aac4324b34b95d5ef0e1cfbb28aed7f1a0c",
      "parents": [
        "f41eea60ecf9ed9efcfebf789a105c517c107a8b"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Mar 27 17:03:56 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 28 11:46:43 2013 -0700"
      },
      "message": "nicira_role: add a test for packet-in\n"
    },
    {
      "commit": "f41eea60ecf9ed9efcfebf789a105c517c107a8b",
      "tree": "fd8530431b2abdba07f2b2ce85f635201fe53275",
      "parents": [
        "cb816fd389a9a51d847e102ac3297baf45ee0a87"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Mar 27 16:05:43 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Mar 27 17:17:06 2013 -0700"
      },
      "message": "nicira_role: add test for permissions checking\n"
    },
    {
      "commit": "cb816fd389a9a51d847e102ac3297baf45ee0a87",
      "tree": "549e6435ed6b477f8c1ba81b977c7b7455c7791f",
      "parents": [
        "161290852a49dda9c282746efdf4b15f4a980baa"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 26 21:53:47 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Mar 27 17:16:40 2013 -0700"
      },
      "message": "nicira_role: rename and expand test for any reply\n"
    },
    {
      "commit": "e717c6ec92edba03c453a4204a788d7c22ab47bd",
      "tree": "9bfebeabb40d36dfa30206c71a122e9f24a7ae9b",
      "parents": [
        "be8503a69d609d0aee844a91f3f5d66f4e2666c7"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:25:50 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:29:30 2013 -0700"
      },
      "message": "use generic ofp import\n"
    },
    {
      "commit": "4b6014513c2b27cedc2f2d0935560b32d64448be",
      "tree": "28fd53200625a444d819c299cfb34f322188e719",
      "parents": [
        "032669d657a6eed33d37fb1814e512d16ebb7606"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 23:37:06 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:29:30 2013 -0700"
      },
      "message": "loxi-prep: rewrite vendor tests to use pyloxi message classes\n"
    },
    {
      "commit": "032669d657a6eed33d37fb1814e512d16ebb7606",
      "tree": "f72d393934b0305ac941dd75649cee6803b691cf",
      "parents": [
        "231cab83e8a07f6159c2cdcdedd80063ef4d154c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 23:36:28 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:06:32 2013 -0700"
      },
      "message": "loxi-prep: singleton stats replies do not use arrays\n"
    },
    {
      "commit": "231cab83e8a07f6159c2cdcdedd80063ef4d154c",
      "tree": "79673af8ceb2806c43feff3ac6166cb72c691122",
      "parents": [
        "b659c76827fc6cc6b1c07712fa054af310939aad"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 23:08:58 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:04:41 2013 -0700"
      },
      "message": "loxi-prep: disable buggy HelloWithBody test\n\nThis test was not actually doing the HELLO handshake - when it polled the\ncontroller it got back the initial hello from the switch. The test would need\nto be rewritten to do more of controller.py\u0027s work itself.\n\nAlso, PyLoxi does not have a data field for hello messages.\n"
    },
    {
      "commit": "b659c76827fc6cc6b1c07712fa054af310939aad",
      "tree": "3d18103dafedc767012413ef9f4f17f187b2cbf0",
      "parents": [
        "f9f6b513958532cd3681ffa0912b0fbb32f3d752"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 23:08:36 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:04:40 2013 -0700"
      },
      "message": "loxi-prep: change vendor tests to use action classes from pyloxi\n"
    },
    {
      "commit": "f9f6b513958532cd3681ffa0912b0fbb32f3d752",
      "tree": "31b2131d728389245d92968123ea8225864177f5",
      "parents": [
        "0237baf6057179131cc929af1cee4e46667b76a0"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 22:35:28 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:04:30 2013 -0700"
      },
      "message": "loxi-prep: get OFPT_ERROR from the correct module\n"
    },
    {
      "commit": "0237baf6057179131cc929af1cee4e46667b76a0",
      "tree": "03f230bf6dddd94ea0bab08bf171ad1ba1f18bff",
      "parents": [
        "e6b794f4ac4cbe0bea1c312e5135e0cc29227fec"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 22:34:59 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:04:30 2013 -0700"
      },
      "message": "loxi-prep: rename users of ofp_match\n"
    },
    {
      "commit": "1879dc74881a84e324aebfa5a6b33e8605e3ec18",
      "tree": "24bc003245743124713ccba053d46aac5c65151f",
      "parents": [
        "c7b85d2cdfade2a5b9af25fe4283a18a4de7e811"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 22:08:51 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:04:30 2013 -0700"
      },
      "message": "loxi-prep: always handle missing entry in type map\n"
    },
    {
      "commit": "ba3f0e2ebbe7b4f933c725e33b861895ad8f16d3",
      "tree": "2e2ebffefbe8152022bf43414cf71a5dfe265f09",
      "parents": [
        "8fbfd66c4033bb81694a8d1b80a50f8125f53ae6"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 16:43:57 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:45:56 2013 -0700"
      },
      "message": "loxi-prep: subtype flow_mod classes\n"
    },
    {
      "commit": "b73808cc3c603f1ff3cccf225c71ff2e76313308",
      "tree": "edf0dbed9a42596406cfe4b813d542b9faa21c39",
      "parents": [
        "7c7342aacc146b200e3c4def63c5280ed7adb4b9"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 15:22:23 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:45:56 2013 -0700"
      },
      "message": "loxi-prep: move header fields into the message classes\n"
    },
    {
      "commit": "4e361bb5b280268aab5cab94fadfc01e0d94555e",
      "tree": "6356f6026aca8ee507872c449278ab1f3cbb7d50",
      "parents": [
        "5fd6faf673cf448933155ad43b9933bf47764e2c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 13:57:31 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:45:56 2013 -0700"
      },
      "message": "loxi-prep: rename error \u0027type\u0027 field to \u0027err_type\u0027\n"
    },
    {
      "commit": "5fd6faf673cf448933155ad43b9933bf47764e2c",
      "tree": "bbc14104f80992cec281e1e0a9dced8ab64de43d",
      "parents": [
        "d0478ff69b4be47852e98e663e78c4627202bb2a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 13:30:20 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:45:56 2013 -0700"
      },
      "message": "loxi-prep: rename stats reply \u0027stats\u0027 field to \u0027entries\u0027 to match PyLoxi\n"
    },
    {
      "commit": "d0478ff69b4be47852e98e663e78c4627202bb2a",
      "tree": "0983639c1c2d761345b866a8909ff5a0560a96c1",
      "parents": [
        "5b44ab4d048a93acce528280b54fd572766b75f6"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 12:46:58 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:45:56 2013 -0700"
      },
      "message": "loxi-prep: rename uses of match fields\n"
    },
    {
      "commit": "62e96859803556d799992732d09183fe2a346a80",
      "tree": "7a6a44690dda620cb74ec227f21308e48db4de5e",
      "parents": [
        "e6ea3fec5d5cd297848416a65bb77828e4168288"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 12:04:45 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:45:56 2013 -0700"
      },
      "message": "loxi-prep: use plain lists to hold OF actions\n\nSome callsites needed to be changed because they depended on action_list.append\ntaking a shallow copy.\n"
    },
    {
      "commit": "c495d9e91e8a3a27399654e767afbb3c6f158595",
      "tree": "df9334b3bc16a82974155749243fcb0ad6202e9e",
      "parents": [
        "9d3cc6bb3fc93d18631784a7eb858f6a0b8cbf9f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Mar 08 17:43:36 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:45:56 2013 -0700"
      },
      "message": "loxi-prep: rename action_list.add to append\n\nFor consistency with the list type.\n"
    },
    {
      "commit": "9d3cc6bb3fc93d18631784a7eb858f6a0b8cbf9f",
      "tree": "f2c37387251df5a102b5d7c1af6776688ee8de86",
      "parents": [
        "28fa927a64e367d2fa0c8d2f300e2f7963d98127"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Mar 08 16:33:08 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:45:56 2013 -0700"
      },
      "message": "loxi-prep: remove action_ prefix from callers\n"
    },
    {
      "commit": "28fa927a64e367d2fa0c8d2f300e2f7963d98127",
      "tree": "c7799042196181bf14fbee14bbffcfa62a8fa1f2",
      "parents": [
        "d7b0ffabfde4d7b10fc34d91b79b9fd9638c8760"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Mar 08 16:00:25 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:45:50 2013 -0700"
      },
      "message": "loxi-prep: access message/action modules through the ofp module\n"
    },
    {
      "commit": "d7b0ffabfde4d7b10fc34d91b79b9fd9638c8760",
      "tree": "b3c25f1f914fca05f581636de7739dea995b759b",
      "parents": [
        "537247359caf0f7ad204d0fc1add4a48efe525a8"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Mar 08 15:53:42 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 09:41:44 2013 -0700"
      },
      "message": "loxi-prep: remove uses of cstruct module\n\nThis module does not exist in PyLoxi.\n"
    },
    {
      "commit": "6a3349220285c09ae642b0a745f1f3df56f89af8",
      "tree": "fbf4c304800e63044c0971210d4b10b18f18b518",
      "parents": [
        "968b61972f18bc2813558cd1373cc3c6fdc19709"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 07 16:14:52 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 07 16:52:34 2013 -0800"
      },
      "message": "refactor verify_queuestats and move to testutils\n"
    },
    {
      "commit": "968b61972f18bc2813558cd1373cc3c6fdc19709",
      "tree": "6a1dfdd9572c4350dea5f9e95590aa4b945b43ff",
      "parents": [
        "ae3428c00817b638d0b2595872676e6e7f29c690"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 07 15:34:43 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 07 16:52:33 2013 -0800"
      },
      "message": "refactor verify_portstats and move to testutils\n"
    },
    {
      "commit": "ae3428c00817b638d0b2595872676e6e7f29c690",
      "tree": "ebb83e87d8ba9618c3b5347fd6b582ebb7dac516",
      "parents": [
        "34593fa8f4f0234f7f2e073de1079ead09b4053f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 07 14:37:42 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 07 16:35:25 2013 -0800"
      },
      "message": "refactor verify_flowstats and move to testutils\n\nThis needs to be centralized for later byte counter fuzzing changes.\n"
    },
    {
      "commit": "d6739a67ac31257c72336c36cabce321089ee6f8",
      "tree": "9d0b5da57bf94416515ab3dcd47ac88262344c07",
      "parents": [
        "6cce11edd9c6df2039e0a20eca0d68498969bb37"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Sun Mar 03 13:28:19 2013 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Sun Mar 03 13:28:19 2013 -0800"
      },
      "message": "Issue-40.  Fix assert in message_types bad ver\n"
    },
    {
      "commit": "a3bf965ef092a989600c47bee1f8bf257bd3ecad",
      "tree": "53cd369548e8bfc70d541246165e3ee1e17f8ad8",
      "parents": [
        "3bfc8221cce2da27725b3cfa92848cd913c0d2e7"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Tue Feb 19 23:40:50 2013 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Tue Feb 19 23:40:50 2013 -0800"
      },
      "message": "Break out double tagging tests\n\nIt is not clear in the 1.0 spec what the treatment of double\ntagged packets should be.  It doesn\u0027t really get clearer in\nlater specs, though they are more explicitly discussed in 1.1.\nWildcarding VLAN has the effect on some switches of ignoring\nall VLAN tags.  This is not a clear violation of the spec.  As\na result, this commit proposes to break out the double tagged\nVLAN test cases to a separate test and mark it nonstandard.\n"
    },
    {
      "commit": "3bfc8221cce2da27725b3cfa92848cd913c0d2e7",
      "tree": "eeca2b6c9449a77c32db735d682d4377af0577f3",
      "parents": [
        "fcc0991b41fe1827819ef5aafba27b7820e544fb"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Wed Feb 13 18:18:57 2013 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Wed Feb 13 18:18:57 2013 -0800"
      },
      "message": "Size and ingress port updates\n\nUse minsize config parameter for vlanprio1 test and in packet\naction tests using DirectBadPacketBase (many tests).\n\nIn addition, when specifying the catch all flow, qualify on\ningress port since you know it.  Still may want to look for\nanother mechanism for this.\n"
    },
    {
      "commit": "fcc0991b41fe1827819ef5aafba27b7820e544fb",
      "tree": "8e7dfbb508d31dc26ea5e8162cad9c0051ad59aa",
      "parents": [
        "2940fdd2a83a02b4fd3e79ff4cd6b3e21bb0dacd"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Feb 08 23:46:08 2013 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Feb 08 23:46:08 2013 -0800"
      },
      "message": "Set config for ports before running Flood\n\nActually, we need a more comprehensive approach to this.\nMost tests probably need to set the port config to some\ndefault value (ports enabled, no-flood disabled, etc).\n"
    },
    {
      "commit": "dceec93a6143fe1b40df8b912243d818d6ee09de",
      "tree": "8ee5c0cddf4dd95240e81aed55b4e5ef30ded7a1",
      "parents": [
        "c7562b123fc44e78a55166ed08c7743063328f42"
      ],
      "author": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Wed Feb 06 01:12:54 2013 -0800"
      },
      "committer": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Wed Feb 06 01:12:54 2013 -0800"
      },
      "message": "Add tests to verify match on ARP sender and target IPs\n"
    },
    {
      "commit": "857fb606e3173b528f518740e7f2ac073e5789a0",
      "tree": "2ab1f00068db2f6f9c120dc7489219a937d967ae",
      "parents": [
        "f1bc654b2035c0fcad0aa36df28458ffff3837f2"
      ],
      "author": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Wed Feb 06 00:11:38 2013 -0800"
      },
      "committer": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Wed Feb 06 00:11:38 2013 -0800"
      },
      "message": "Remove duplicate code in FuncUtils.py\n"
    },
    {
      "commit": "75ea24d26d0d4011671b52a50f414d23e55bd474",
      "tree": "e0659c6743b77596a7b7d92f986979d8e06bd973",
      "parents": [
        "3c26683d57deed514e64d945c881221486d6cde5"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 30 15:27:19 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 30 15:27:19 2013 -0800"
      },
      "message": "nicira_dec_ttl: also test with a flow\n\nSuggested by Gregor. The flow_match_test function doesn\u0027t support checking for\ndrops so I\u0027ve kept the packet-out portion of the test too.\n"
    },
    {
      "commit": "dacbe738d5bb92d0e8e3d5733edc2c96cf7edd59",
      "tree": "cc3c62aa9a707e566f7a292c049ac47589a3fb67",
      "parents": [
        "9cc93345f9948ebb54e28e7333f406d82b1cf3b5"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 29 17:32:11 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 29 17:32:11 2013 -0800"
      },
      "message": "add test for the nx_dec_ttl vendor action\n\nBased on a test by Gregor Maier.\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ],
  "next": "b603b197837d1797f6668180d5fd5d4a3e2d15f5"
}
