)]}'
{
  "log": [
    {
      "commit": "024f9d53ab410ebf052e5169004f97b931516bbf",
      "tree": "75bbc7e9f4406b6938797e58699ceba44b13ac22",
      "parents": [
        "3d22812403307852d1d87044f7c5509760eeab67"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Aug 12 15:56:39 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Aug 12 15:56:39 2013 -0700"
      },
      "message": "add scapy imports to fix packet pretty-printing\n"
    },
    {
      "commit": "3d22812403307852d1d87044f7c5509760eeab67",
      "tree": "b7ae935f3ea12cc040ba21496c9c3e4932f6730f",
      "parents": [
        "d6e79187963be79129748b74dda8e8f5c6f7be13",
        "be4fd42e388c0f9cc9fe5dd549b48228b404a64a"
      ],
      "author": {
        "name": "abat",
        "email": "abat@bigswitch.com",
        "time": "Mon Aug 12 14:58:28 2013 -0700"
      },
      "committer": {
        "name": "abat",
        "email": "abat@bigswitch.com",
        "time": "Mon Aug 12 14:58:28 2013 -0700"
      },
      "message": "Merge into master from pull request #64:\nfix/workaround all pylint errors (https://github.com/floodlight/oftest/pull/64)\n"
    },
    {
      "commit": "fdec0fbf17c8e966ffc783de66d011e9ed809396",
      "tree": "6b0bf2ef3a5fcd059edc91d7f9f4609a8418c52c",
      "parents": [
        "720eaf272b8de1d5ffa810e5f8ec3e6678335931"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 09 18:01:05 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 09 18:01:05 2013 -0700"
      },
      "message": "workaround pylint warnings\n"
    },
    {
      "commit": "720eaf272b8de1d5ffa810e5f8ec3e6678335931",
      "tree": "4ba70a72aeda1a4c147a51562c5593d16fa88297",
      "parents": [
        "a68176f803f56ead0e73ba8aac052e2886b6f2ef"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 09 18:00:45 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 09 18:00:45 2013 -0700"
      },
      "message": "fix bugs found by pylint\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": "82c882de48d1c0d6ac0d2ee03944f98dc0cd1adf",
      "tree": "9fac9d58ef10dd03cddc787171db9be43d8e2b67",
      "parents": [
        "2855ef7187e9b2ebd3d2b1b2240aebb277ee1bff"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 09 17:13:52 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 09 17:13:52 2013 -0700"
      },
      "message": "basic-1.3: add basic.DefaultDrop\n"
    },
    {
      "commit": "045db0710e1654dd1fdf0b9c9ecc68f23991ca39",
      "tree": "4fb52a61a67a0e19f35a974820da2e18d8d2e631",
      "parents": [
        "d53156a1ad4889118378c1f07756e2de5b2d38bf"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Aug 06 13:16:30 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Aug 06 13:16:30 2013 -0700"
      },
      "message": "testutils: add openflow_ports()\n\nThis function replaces the common boilerplate code that gets a list of port\nnumbers from the config dictionary and checks that enough ports are available\nfor the test.\n\nI changed the OF 1.3 tests to use this function.\n"
    },
    {
      "commit": "3f17dbba1772f56640b0b9fe87b1d2a338d02d9a",
      "tree": "cfd86b7018aacf969308c318f62bb6747e8884fb",
      "parents": [
        "b7dc3e25d8e4c18d54251f8fe2646c1edb7c6ef1"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Jul 19 13:51:37 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Aug 05 16:38:35 2013 -0700"
      },
      "message": "packet_to_flow_match: use OFPVID_PRESENT\n\nThe spec requires OFPVID_PRESENT (the CFI bit) to be included in the vlan_vid\nvalue if matching on a vlan id.\n"
    },
    {
      "commit": "b7dc3e25d8e4c18d54251f8fe2646c1edb7c6ef1",
      "tree": "60ffa04f6be37de602df72c60983846653423723",
      "parents": [
        "748d6381f2d4fa80729417992257a880ca794823"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 02 13:51:06 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 02 13:51:06 2013 -0700"
      },
      "message": "testutils: fix simple_eth_pkt src address\n\nA multicast source MAC address is not valid.\n"
    },
    {
      "commit": "86aceb0ffe948b8afa95a86aaadb85afc5cde0a1",
      "tree": "3247d673528be7f586484f0bcfd0299a6b5afe65",
      "parents": [
        "b9d1f4b860e91a4cabe334f48ba9c933360bf521"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Jul 17 18:45:38 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Jul 17 19:16:45 2013 -0700"
      },
      "message": "testutils: add simple_{tcp,udp,icmp}v6_packet()\n\nThese are simplified and IPv6-ified versions of the existing functions.\n\nAlso added IPv6 packets to the OF 1.3 ethertype tests.\n"
    },
    {
      "commit": "9cef27462230a60f932f5ec24b44171a8833b7de",
      "tree": "87baec03f4a15e01f6c7535d7ccda37ef4bfdb8b",
      "parents": [
        "a8d749119c4ec5751c3d3957d3b73c022f50e02d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Jul 16 13:27:00 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Jul 16 13:27:00 2013 -0700"
      },
      "message": "do not attempt to execute base tests\n\nThe OF 1.3 match.MatchTest class was intended to just be a base class, but\nsince it inherits from unittest.TestCase it was being run as a test.\n\nThis change ignores test classes that don\u0027t include a runTest field.\n"
    },
    {
      "commit": "13bdd03ff2f0394b214475509de8ce1fc25767ed",
      "tree": "a25d3c180488e6c1670aafafecc20d14088c67db",
      "parents": [
        "17b8b60b747c16e47ea751a0c7b3d1a9ae2bf15c",
        "5542cf52a65b670aa6bfbf90cf5e27f72a92b3ce"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Fri Jul 12 13:32:28 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Fri Jul 12 13:32:28 2013 -0700"
      },
      "message": "Merge pull request #57 from sumithdev09/master\n\nPolling Hello Message"
    },
    {
      "commit": "5542cf52a65b670aa6bfbf90cf5e27f72a92b3ce",
      "tree": "41f910ec7e6033d640f1d2a7f646bd5be5bdd3f8",
      "parents": [
        "7ecabd21e1787ba69b4455e7e06de5563b524c3f"
      ],
      "author": {
        "name": "sumithdev09",
        "email": "sumith.hy398@gmail.com",
        "time": "Fri Jul 12 14:56:28 2013 -0400"
      },
      "committer": {
        "name": "sumithdev09",
        "email": "sumith.hy398@gmail.com",
        "time": "Fri Jul 12 14:56:28 2013 -0400"
      },
      "message": "Update controller.py"
    },
    {
      "commit": "7ecabd21e1787ba69b4455e7e06de5563b524c3f",
      "tree": "63b1eafc635f5e54095872e0ca907237786a0a43",
      "parents": [
        "6d2e396f5561091c2ee34a903efab955dec0eeb9"
      ],
      "author": {
        "name": "sumithdev09",
        "email": "sumith.hy398@gmail.com",
        "time": "Fri Jul 12 11:10:53 2013 -0400"
      },
      "committer": {
        "name": "sumithdev09",
        "email": "sumith.hy398@gmail.com",
        "time": "Fri Jul 12 11:10:53 2013 -0400"
      },
      "message": "Update controller.py\n\nBugfix:We cannot poll the OFPT_HELLO message using the poll function if exp_msg\u003dNone."
    },
    {
      "commit": "bd56ed611e50984269c836f1849bc59a1f54f31f",
      "tree": "a693e7fbbb6f63bbf14a2ddcb5c3e365187939dc",
      "parents": [
        "c0d26dd11b2c1a98bc1f82cf5bd4051507e29476"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Jul 10 15:49:44 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Jul 10 16:15:14 2013 -0700"
      },
      "message": "testutils: update get_stats to support OF 1.3\n"
    },
    {
      "commit": "c0d26dd11b2c1a98bc1f82cf5bd4051507e29476",
      "tree": "849789584c3a75a335c2a92d3d581007141f00f6",
      "parents": [
        "6dc865c39e5a5f172ed6bb30a15da904a169611d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Jul 10 12:46:03 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Jul 10 16:15:14 2013 -0700"
      },
      "message": "testutils: update verify_packet_in for OF 1.3\n"
    },
    {
      "commit": "6dc865c39e5a5f172ed6bb30a15da904a169611d",
      "tree": "c7e7b7dd79a8acd280512d872437cd8473507139",
      "parents": [
        "ab7476f499caf2af69e74cd3c1e5e8fe1a693fff"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Jul 10 10:12:13 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Jul 10 16:15:14 2013 -0700"
      },
      "message": "testutils: update port_config_get/set for OF 1.3\n"
    },
    {
      "commit": "ab7476f499caf2af69e74cd3c1e5e8fe1a693fff",
      "tree": "580772da5308388aaf20273632d7ee77927487ea",
      "parents": [
        "c717f4452f9da0da6b87820279c1dd9c84f6b08b"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Jun 13 15:53:52 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Jul 10 16:15:14 2013 -0700"
      },
      "message": "testutils: remove incompatible wildcard check for OF 1.3\n\nThis needs to be replaced with code that uses the table features reply to\ndetermine the fields that cannot be matched.\n"
    },
    {
      "commit": "c717f4452f9da0da6b87820279c1dd9c84f6b08b",
      "tree": "67ea173e8952d15900aa772bff62d4422b80f832",
      "parents": [
        "fe600f5a6fa649aa459dd9425be0c45d42e0b208"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Jun 13 15:49:09 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Jul 10 16:15:14 2013 -0700"
      },
      "message": "testutils: support of13 in delete_all_flows\n"
    },
    {
      "commit": "44c4e3f9e6b5cb77661fb255189de43af80b91de",
      "tree": "a26181cc552ab4945cd43cf9a83547ca31eaefd6",
      "parents": [
        "6d94d0b07c7bdde0009da443fe5e6280ba62fc41"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Jul 08 10:17:49 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Jul 08 10:17:49 2013 -0700"
      },
      "message": "testutils: send barrier after deleting all flows\n\nIf a flow-add is sent immediately after a flow-delete-all, the switch can\nlegitimately include the new flow in the set of flows deleted. A barrier must\nbe used to serialize these operations.\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": "0f79bee9bf70d9aeec814b8b55638a9da7c5ede5",
      "tree": "b313b01330a8233d1bf0ad425e6e9e0a9104d266",
      "parents": [
        "cfff0ae6a9237e93b042b4b00b603d1f6c367eaa"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon May 13 17:37:43 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue May 14 09:28:45 2013 -0700"
      },
      "message": "parse: remove ipaddr dependency\n"
    },
    {
      "commit": "48e447eccedce64a06ac4496240dfe7655ddb09c",
      "tree": "11b547d0a0caa11d727a1824baeb4c0368e4aa23",
      "parents": [
        "4b5537fd27df7347765176462e8d9f5f0ef537b3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue May 07 15:23:35 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue May 14 09:28:44 2013 -0700"
      },
      "message": "groups-1.2: mechanical pyloxi update\n"
    },
    {
      "commit": "18c9fede374197a45f08b98ef200732ffb2f2a66",
      "tree": "c06c83e378e208b70c269d6604e9ed6a976e4abe",
      "parents": [
        "b62555192601d28d05be8afcb0c1a47474b3862d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue May 07 15:22:53 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue May 14 09:28:44 2013 -0700"
      },
      "message": "oft12: mechanical pyloxi update\n"
    },
    {
      "commit": "b62555192601d28d05be8afcb0c1a47474b3862d",
      "tree": "f0e799408c0ced4f0e7cf7fd7c097e6f968987f7",
      "parents": [
        "7094ff189a698d3fba0807aaf4ccb58b14751e9f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue May 07 14:58:43 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue May 14 09:28:44 2013 -0700"
      },
      "message": "parse: support OF 1.2\n"
    },
    {
      "commit": "7094ff189a698d3fba0807aaf4ccb58b14751e9f",
      "tree": "4af9c249ebd0361b9cdafab7ef5182b9d9b51ea7",
      "parents": [
        "90c961cc991ede8a34b1f54fe0d51616c5192a2a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue May 07 14:57:53 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue May 14 09:28:44 2013 -0700"
      },
      "message": "controller: log more usefully when checking message queue\n"
    },
    {
      "commit": "f3bc48c2db2e0e15d188faf76ef00cddf63c7895",
      "tree": "ede8dcdb42b188e231f59101cc1bc96530b08d25",
      "parents": [
        "50cfa508a71a5603544739d815969aa3d06037d6"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri May 03 17:39:35 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri May 03 17:48:41 2013 -0700"
      },
      "message": "testutils: avoid using constants not defined for the current OpenFlow version\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": "d929b8d132dd8ed000f9a6d331e39d25303310e6",
      "tree": "90194b8e5343ef7ee18984a9c89d6bd7bb893c4b",
      "parents": [
        "ea8c472f36be65f3a8f2d9a3f76c231e12524780"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Apr 15 15:59:14 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Apr 15 15:59:14 2013 -0700"
      },
      "message": "controller: prevent switch from reconnecting\n\nIf a switch disconnects during a test we want to make sure we catch it.\n"
    },
    {
      "commit": "dd6b6ffabf26a9d5338c50093c30b89aae0f7edf",
      "tree": "61b7168a0cc43b87252a6c8d6d8d28fc95edd3fa",
      "parents": [
        "ea8c472f36be65f3a8f2d9a3f76c231e12524780"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Apr 12 08:20:18 2013 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Apr 12 08:20:18 2013 -0700"
      },
      "message": "Support counting pkt-in msgs in controller\n\nCount pkt-in messages as they are received\nAllow the message queue to be cleared with new clear_queue fn\nAlso small bug fix: deref null exp_msg\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": "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": "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": "e6b794f4ac4cbe0bea1c312e5135e0cc29227fec",
      "tree": "b53add1e66c3a9541c4bba155151c4ee744092ae",
      "parents": [
        "768ef9535dde3bdce651092ab80cd212dc0489e9"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 22:32:19 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:04:30 2013 -0700"
      },
      "message": "loxi-prep: remove action_ prefix from more users\n"
    },
    {
      "commit": "768ef9535dde3bdce651092ab80cd212dc0489e9",
      "tree": "7a26ec9a0bd503590077e45e8f86bfa586d56841",
      "parents": [
        "1879dc74881a84e324aebfa5a6b33e8605e3ec18"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 22:31:28 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:04:30 2013 -0700"
      },
      "message": "loxi_prep: remove illegal_message_type dependency on pylibopenflow internals\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": "c7b85d2cdfade2a5b9af25fe4283a18a4de7e811",
      "tree": "728a57ea8dd3828be38460b129c4d713562f41cd",
      "parents": [
        "1622bbb4cab39b4d10f8a4c0c389ea08e1f46bb2"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 17:55:20 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:04:30 2013 -0700"
      },
      "message": "loxi-prep: remove import compatibility\n"
    },
    {
      "commit": "1622bbb4cab39b4d10f8a4c0c389ea08e1f46bb2",
      "tree": "17ae59eb625aa897f641a2719c5dbb23e7fb9129",
      "parents": [
        "f688351915a755359bde9dffc1e7ac5cb2d8e440"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 17:11:53 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:04:30 2013 -0700"
      },
      "message": "loxi-prep: change parse_header to return a tuple\n"
    },
    {
      "commit": "f688351915a755359bde9dffc1e7ac5cb2d8e440",
      "tree": "1cb2047ad9a2656cbbcf206d60631a0752f27f51",
      "parents": [
        "06c17984b4144e9b2d9b0071380ae25fc8caa84d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 17:00:09 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:04:27 2013 -0700"
      },
      "message": "loxi-prep: move message parsing to ofp.message\n"
    },
    {
      "commit": "06c17984b4144e9b2d9b0071380ae25fc8caa84d",
      "tree": "da2dd62d4d332e41924c65478ccc30a5504b9cef",
      "parents": [
        "ba3f0e2ebbe7b4f933c725e33b861895ad8f16d3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 16:47:52 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:45:56 2013 -0700"
      },
      "message": "loxi-prep: move parse.py to oftest module\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": "8fbfd66c4033bb81694a8d1b80a50f8125f53ae6",
      "tree": "c42575569e2481c4caed37d856b0368410cb6648",
      "parents": [
        "b73808cc3c603f1ff3cccf225c71ff2e76313308"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Mon Mar 11 15:30:44 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:45:56 2013 -0700"
      },
      "message": "loxi-prep: default xid to None\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": "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": "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": "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": "537247359caf0f7ad204d0fc1add4a48efe525a8",
      "tree": "bddef1bf755394be5987c8c285b3399a9fb034cf",
      "parents": [
        "53b9681ed6299a0da9ea4e2a99f46006c798f11b"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Mar 08 23:54:02 2013 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Fri Mar 08 23:54:02 2013 -0800"
      },
      "message": "Qualify sleep calls with time\n"
    },
    {
      "commit": "53b9681ed6299a0da9ea4e2a99f46006c798f11b",
      "tree": "8643d7af09572557afd05ff15f8ae78d18848bdc",
      "parents": [
        "6a3349220285c09ae642b0a745f1f3df56f89af8"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 07 16:54:50 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Mar 07 16:54:50 2013 -0800"
      },
      "message": "testutils: add 10% fuzz to byte counter matching\n\nSome switches include the 4-byte Ethernet CRC in their counters. Since the spec\nis ambiguous here we allow this and similar behavior by allowing the byte\ncounters to increment up to 10% more than we\u0027d usually expect.\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": "2940fdd2a83a02b4fd3e79ff4cd6b3e21bb0dacd",
      "tree": "44ed7a1bf636443056107056be3ae72f172c949c",
      "parents": [
        "9cf018c6557fded5602845ff106b4c2ad5a822c7"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Wed Feb 06 15:01:35 2013 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Wed Feb 06 15:01:35 2013 -0800"
      },
      "message": "Fix skip report config key error\n"
    },
    {
      "commit": "c7562b123fc44e78a55166ed08c7743063328f42",
      "tree": "185d83d89a7e6a8be7a0fa6f8151c3feb6bd10a4",
      "parents": [
        "857fb606e3173b528f518740e7f2ac073e5789a0"
      ],
      "author": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Wed Feb 06 01:12:18 2013 -0800"
      },
      "committer": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Wed Feb 06 01:12:18 2013 -0800"
      },
      "message": "Add simple_arp_packet\n"
    },
    {
      "commit": "3c26683d57deed514e64d945c881221486d6cde5",
      "tree": "9a47e523747ac902fca41040535ebf104435d441",
      "parents": [
        "dacbe738d5bb92d0e8e3d5733edc2c96cf7edd59"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 29 18:29:15 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 29 18:29:15 2013 -0800"
      },
      "message": "testutils: fix wording in receive_pkt_check\n"
    },
    {
      "commit": "9cc93345f9948ebb54e28e7333f406d82b1cf3b5",
      "tree": "c6adabf0c0b29a0ead21e2c630b1eed61a1af97c",
      "parents": [
        "bde05edf0a77d9c1a0fd0ad9375b2b6f88918816"
      ],
      "author": {
        "name": "Gregor Maier",
        "email": "gregor.maier@bigswitch.com",
        "time": "Tue Jan 29 16:55:28 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 29 16:55:28 2013 -0800"
      },
      "message": "testutils: add ip_ttl option to simple_*_packet\n"
    },
    {
      "commit": "7744e11daf890cbb0b815e51ce4781de78624c51",
      "tree": "8bdb5b76058cc53be78eac7f560b63dfccf62203",
      "parents": [
        "5a9a192ab77c53024bfd2f9864488906c093a7d3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 17:23:57 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 17:23:57 2013 -0800"
      },
      "message": "testutils: define __all__ to limit the variables imported by tests\n"
    },
    {
      "commit": "5a9a192ab77c53024bfd2f9864488906c093a7d3",
      "tree": "0a47fbdd7bc1caf4152b8bf6b6d7ad7e1fa3ee5c",
      "parents": [
        "5d63b9c8bded2cfeb4b07c46e648c671cb683b1c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 14:29:30 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 14:29:30 2013 -0800"
      },
      "message": "add version decorator\n\nAlso adds the TableModConfig test to the main basic test module, using the new\ndecorator.\n"
    },
    {
      "commit": "5d63b9c8bded2cfeb4b07c46e648c671cb683b1c",
      "tree": "072ea8b1751a43250ca1190bae3014322656efb4",
      "parents": [
        "e3a5972ae4dc86966f6ffce998cdd25ac02bfb02"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 14:12:37 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 14:12:37 2013 -0800"
      },
      "message": "controller: log xids and error messages\n"
    },
    {
      "commit": "63393495124c77d79b2319d96550a8bc3ab6e35b",
      "tree": "8e0e80d75de6925e5d081544bb654a48d30f093d",
      "parents": [
        "2fe6beac0c69eb9108be08112b1e9d727ff11d4c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:21:12 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:24:31 2013 -0800"
      },
      "message": "of12: remove redundant action_ prefix from action classes\n"
    },
    {
      "commit": "8f2861eb5c879d7761d458204c9ad59e4fe2e576",
      "tree": "8bfa3cbb8f5bb2847cda64044b347ef441952840",
      "parents": [
        "ea8732650f81771e585f7405df46b6a08237ee03"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:13:20 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 09:13:20 2013 -0800"
      },
      "message": "import scapy.contrib.mpls for ease of installation\n"
    },
    {
      "commit": "f9aa5022c4707485455a9476912ea13e20e6baac",
      "tree": "87c7fd3c19293d2f1d8c03345f61e7430889091c",
      "parents": [
        "629393f7b71a12026e5d719f2551cafe264ccd52"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 16:36:15 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "oft12 testutils: remove uses of parent.logger\n"
    },
    {
      "commit": "629393f7b71a12026e5d719f2551cafe264ccd52",
      "tree": "421463e8f2ea2336fe088e94af2e6748620726a1",
      "parents": [
        "9fd05683ca2baa9d04d4d3c1c563f5a7b45d5b1e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 15:37:33 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "import OpenFlow 1.2 protocol module and basic test cases from CPqD/oftest12\n\nFor now these tests will live in a separate directory. The goal is to merge\nthem where possible but this has to wait for an OpenFlow protocol module that\nsupports all versions of OpenFlow.\n"
    },
    {
      "commit": "9fd05683ca2baa9d04d4d3c1c563f5a7b45d5b1e",
      "tree": "995e00a335a8478742a211fb72cde04d1cd1d3be",
      "parents": [
        "af42815411a3b2f29c8a25c0ec7a8064cfc6fd1e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 15:30:38 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "add --of-version option\n\nThis option is used to choose which OpenFlow protocol module is aliased to\n\"ofp\", which the controller and tests import. When we have an OpenFlow protocol\nmodule that works with all versions of OpenFlow we can remove this hack without\nchanging the command line interface or test API.\n"
    },
    {
      "commit": "af42815411a3b2f29c8a25c0ec7a8064cfc6fd1e",
      "tree": "1cad6f7b73c070a750582456e60f0f2a05c425bb",
      "parents": [
        "c44b62489e4e54f3608e9a59217961e1ea77cf1b"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 12:24:44 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "base_tests: only use supported_actions field for OF 1.0\n"
    },
    {
      "commit": "c44b62489e4e54f3608e9a59217961e1ea77cf1b",
      "tree": "8b800d429ed2240536cac953813986d26590f4b2",
      "parents": [
        "78ef8b98ef2a87532c73644d62da804d7f1d5a1c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 12:23:54 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "controller: fix version negotiation\n"
    },
    {
      "commit": "78ef8b98ef2a87532c73644d62da804d7f1d5a1c",
      "tree": "5c8fa5d06149750b1b3079310901e010e5e57290",
      "parents": [
        "c2f18764091fcdd2f4b80c9fe031d0ee40931592"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 12:19:23 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "use the generic name \"ofp\" to refer to the the OpenFLow protocol module\n\nThis makes it easier to switch out of10 for e.g. of12. This is a temporary\nsolution until we have a single protocol module that handles all versions of\nOpenFlow.\n"
    },
    {
      "commit": "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": "38eea081bae71bacae7336cd459dc570fd1bfdc5",
      "tree": "02bf0a2d11f4e1e3f86398de88c7a23de3c68fa7",
      "parents": [
        "cfdcbd34e4428108dd1e9cd04306fc2416ee8361"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Jan 02 19:46:20 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 15:31:58 2013 -0800"
      },
      "message": "Allow skipping testing of packet_out actions\nsince some switches don\u0027t support them\n"
    },
    {
      "commit": "8d84ce08af73ae7f514bfdeccc04f23f7d3ea672",
      "tree": "20f01ce6376f1d471d37dfffce8d470200960433",
      "parents": [
        "948f0301255759957e148a5a99aa3844c644c99c"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Thu Dec 27 15:36:48 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 15:30:34 2013 -0800"
      },
      "message": "Send port_mod message even if features_reply contains no ports\nsince basic.PortConfigModErr deliberately uses a bogus port number anyway\n"
    },
    {
      "commit": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ],
  "next": "82ef183784dfddd4fc790ea50fe7d04ea149d86f"
}
