)]}'
{
  "log": [
    {
      "commit": "f9aa5022c4707485455a9476912ea13e20e6baac",
      "tree": "87c7fd3c19293d2f1d8c03345f61e7430889091c",
      "parents": [
        "629393f7b71a12026e5d719f2551cafe264ccd52"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 16:36:15 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "oft12 testutils: remove uses of parent.logger\n"
    },
    {
      "commit": "629393f7b71a12026e5d719f2551cafe264ccd52",
      "tree": "421463e8f2ea2336fe088e94af2e6748620726a1",
      "parents": [
        "9fd05683ca2baa9d04d4d3c1c563f5a7b45d5b1e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 15:37:33 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "import OpenFlow 1.2 protocol module and basic test cases from CPqD/oftest12\n\nFor now these tests will live in a separate directory. The goal is to merge\nthem where possible but this has to wait for an OpenFlow protocol module that\nsupports all versions of OpenFlow.\n"
    },
    {
      "commit": "9fd05683ca2baa9d04d4d3c1c563f5a7b45d5b1e",
      "tree": "995e00a335a8478742a211fb72cde04d1cd1d3be",
      "parents": [
        "af42815411a3b2f29c8a25c0ec7a8064cfc6fd1e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 15:30:38 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "add --of-version option\n\nThis option is used to choose which OpenFlow protocol module is aliased to\n\"ofp\", which the controller and tests import. When we have an OpenFlow protocol\nmodule that works with all versions of OpenFlow we can remove this hack without\nchanging the command line interface or test API.\n"
    },
    {
      "commit": "af42815411a3b2f29c8a25c0ec7a8064cfc6fd1e",
      "tree": "1cad6f7b73c070a750582456e60f0f2a05c425bb",
      "parents": [
        "c44b62489e4e54f3608e9a59217961e1ea77cf1b"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 12:24:44 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "base_tests: only use supported_actions field for OF 1.0\n"
    },
    {
      "commit": "c44b62489e4e54f3608e9a59217961e1ea77cf1b",
      "tree": "8b800d429ed2240536cac953813986d26590f4b2",
      "parents": [
        "78ef8b98ef2a87532c73644d62da804d7f1d5a1c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 12:23:54 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "controller: fix version negotiation\n"
    },
    {
      "commit": "78ef8b98ef2a87532c73644d62da804d7f1d5a1c",
      "tree": "5c8fa5d06149750b1b3079310901e010e5e57290",
      "parents": [
        "c2f18764091fcdd2f4b80c9fe031d0ee40931592"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 10 12:19:23 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 11 08:20:20 2013 -0800"
      },
      "message": "use the generic name \"ofp\" to refer to the the OpenFLow protocol module\n\nThis makes it easier to switch out of10 for e.g. of12. This is a temporary\nsolution until we have a single protocol module that handles all versions of\nOpenFlow.\n"
    },
    {
      "commit": "c2f18764091fcdd2f4b80c9fe031d0ee40931592",
      "tree": "ad9e078a06ee74564be19bc808bd43b9a6bfeae0",
      "parents": [
        "8fc315b504be28bed34ca176b2b17b9366dccdf0"
      ],
      "author": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Fri Jan 11 00:12:44 2013 -0800"
      },
      "committer": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Fri Jan 11 00:12:44 2013 -0800"
      },
      "message": "Add test cases for udp src_port/dst_port and ICMP type/code match\n"
    },
    {
      "commit": "8fc315b504be28bed34ca176b2b17b9366dccdf0",
      "tree": "e66693cbfe3616f8d9e0a1dee386596ca40c25a1",
      "parents": [
        "626ce1d19e6bc0a06e083243df230e9a303b99a2",
        "277875ae16740eaff98024d2030d0b50f72c31d0"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Thu Jan 10 11:02:29 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Thu Jan 10 11:02:29 2013 -0800"
      },
      "message": "Merge pull request #32 from eswierk/master\n\nAdd test for BSN shell command extension, etc."
    },
    {
      "commit": "626ce1d19e6bc0a06e083243df230e9a303b99a2",
      "tree": "2c299e0c74c242fccd0bb542b8c9b61c42d2d9ce",
      "parents": [
        "ed1fa2d131e46967c2be6a811cefd00f69775e5a"
      ],
      "author": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Wed Jan 09 11:58:50 2013 -0800"
      },
      "committer": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Wed Jan 09 11:58:50 2013 -0800"
      },
      "message": "For DeletedFlowStats, add settling time and error messages.\n"
    },
    {
      "commit": "277875ae16740eaff98024d2030d0b50f72c31d0",
      "tree": "ec328ed94605950435bfa8aef4df8b191b2270ae",
      "parents": [
        "a05b1fa02eb12d1c0aed06e76d4384ff3c9caf25"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Jan 08 15:13:46 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Jan 08 15:13:46 2013 -0800"
      },
      "message": "Add test for BSN shell command extension\n"
    },
    {
      "commit": "a05b1fa02eb12d1c0aed06e76d4384ff3c9caf25",
      "tree": "c62f8d83f73c6bf93f5baaa44b6b419cf677e7ac",
      "parents": [
        "ed1fa2d131e46967c2be6a811cefd00f69775e5a"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Jan 08 06:39:17 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Jan 08 14:53:23 2013 -0800"
      },
      "message": "Remove obsolete files\n"
    },
    {
      "commit": "ed1fa2d131e46967c2be6a811cefd00f69775e5a",
      "tree": "818a44fc1370b58ac52e9469fafd59500044e95f",
      "parents": [
        "93bed98736e86cc11e2769bc6dd345d8ae2872c7"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 13:23:37 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 13:23:37 2013 -0800"
      },
      "message": "parse: remove uses of from module import *\n\nSince there is now both an action class named \"vendor\" and a message class\nnamed \"vendor\" they clash when imported into the same namespace.\n"
    },
    {
      "commit": "93bed98736e86cc11e2769bc6dd345d8ae2872c7",
      "tree": "bdcf9d49e6934bdbac988725365428d5a123e0e4",
      "parents": [
        "15f2632b16a440e21748eb934f59778a0fa1d634"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 11:42:00 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 11:42:00 2013 -0800"
      },
      "message": "oft: remove log when adding test\n"
    },
    {
      "commit": "15f2632b16a440e21748eb934f59778a0fa1d634",
      "tree": "57860d0c21be1b9ef0ef745174dd66b1b82993c7",
      "parents": [
        "2d6d482ac9e8208439cef4a28644b09960fcd803"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 11:23:24 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 11:39:38 2013 -0800"
      },
      "message": "change default platform to \"eth\"\n\nIf no --interface options are passed the config is the same as the old local\nplatform.\n"
    },
    {
      "commit": "2d6d482ac9e8208439cef4a28644b09960fcd803",
      "tree": "0bacdd4731144834ec5e3c8eddc1bf1f695dc679",
      "parents": [
        "cd97d3d7a4bef1346f8a57d1216b075e97ce019f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 10:49:16 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 11:00:41 2013 -0800"
      },
      "message": "add eth platform and --interfaces command line option\n\nWhen using the eth platform you can give oft multiple \"-i ofport@interface\"\noptions to specify which ethernet interfaces to use for the dataplane, instead\nof needing to write your own platform file.\n"
    },
    {
      "commit": "cd97d3d7a4bef1346f8a57d1216b075e97ce019f",
      "tree": "dc776d3bb42cf071e9f8b7532d8540b29255960d",
      "parents": [
        "b2b401ef00e2dc2315e16f1299d2855103f581ac"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Jan 07 18:50:06 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Jan 08 10:09:49 2013 -0800"
      },
      "message": "minimize use of \"from module import *\"\n\nThis statement was causing strange bugs because of namespace pollution. The\norder of imports mattered because later \"from module import *\" statements would\noverwrite modules imported earlier. Transitive imports also made it difficult\nto figure out where an identifier was being imported.\n\nThis statement is still allowed in test code since nothing else should be\nimporting it.\n"
    },
    {
      "commit": "b2b401ef00e2dc2315e16f1299d2855103f581ac",
      "tree": "02bf0a2d11f4e1e3f86398de88c7a23de3c68fa7",
      "parents": [
        "948f0301255759957e148a5a99aa3844c644c99c",
        "38eea081bae71bacae7336cd459dc570fd1bfdc5"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 16:00:05 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 16:00:05 2013 -0800"
      },
      "message": "Merge pull request #31 from eswierk/master\n\nVarious changes"
    },
    {
      "commit": "38eea081bae71bacae7336cd459dc570fd1bfdc5",
      "tree": "02bf0a2d11f4e1e3f86398de88c7a23de3c68fa7",
      "parents": [
        "cfdcbd34e4428108dd1e9cd04306fc2416ee8361"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Jan 02 19:46:20 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 15:31:58 2013 -0800"
      },
      "message": "Allow skipping testing of packet_out actions\nsince some switches don\u0027t support them\n"
    },
    {
      "commit": "cfdcbd34e4428108dd1e9cd04306fc2416ee8361",
      "tree": "97c54725879cdb7c2d64c9b6f98f0d946341c3d3",
      "parents": [
        "8d84ce08af73ae7f514bfdeccc04f23f7d3ea672"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Jan 02 18:44:52 2013 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 15:31:58 2013 -0800"
      },
      "message": "Store the controllers list in an instance variable\nsince class variables tend to stick around and mess up later tests\n"
    },
    {
      "commit": "8d84ce08af73ae7f514bfdeccc04f23f7d3ea672",
      "tree": "20f01ce6376f1d471d37dfffce8d470200960433",
      "parents": [
        "948f0301255759957e148a5a99aa3844c644c99c"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Thu Dec 27 15:36:48 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Jan 07 15:30:34 2013 -0800"
      },
      "message": "Send port_mod message even if features_reply contains no ports\nsince basic.PortConfigModErr deliberately uses a bogus port number anyway\n"
    },
    {
      "commit": "948f0301255759957e148a5a99aa3844c644c99c",
      "tree": "5c8131baeb54bf3615e1310435b551f0acfce08d",
      "parents": [
        "5ec97b8249e8b7c97c2af2bcb9c9ae60255fe07e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Jan 07 10:59:08 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Jan 07 10:59:08 2013 -0800"
      },
      "message": "oft: support prefixing test names with ^ to remove them from the test set\n"
    },
    {
      "commit": "5ec97b8249e8b7c97c2af2bcb9c9ae60255fe07e",
      "tree": "ed1f6ac1b96affd96d11829ec5b66edb49f874c8",
      "parents": [
        "6242d9f6474fa78b2d1c5db116831dc15ce00b6e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 18:04:25 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 18:04:25 2013 -0800"
      },
      "message": "copy in of11 package\n\nThese modules were copied from the oft-1.1 branch.\n"
    },
    {
      "commit": "6242d9f6474fa78b2d1c5db116831dc15ce00b6e",
      "tree": "e7ed7d1549020dea63fda35c63b832bb39b4c554",
      "parents": [
        "ea5060dff597e6e722ce49ec6f0116b6b7d5776d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 17:35:39 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 17:35:39 2013 -0800"
      },
      "message": "move and check in OpenFlow protocol modules\n\nMove all the protocol code out of the oftest package and into a of10 package to\nprepare for supporting more OpenFlow versions.\n\nThe generated code is now checked-in to make it simpler to use OFTest.\n\nBackwards compatibility with out of tree tests is maintained by aliasing the\nold module names. The basic test module has been changed to use the new API.\n"
    },
    {
      "commit": "ea5060dff597e6e722ce49ec6f0116b6b7d5776d",
      "tree": "6cdc417b2b075144a854fca1f283317e9221ee84",
      "parents": [
        "95f078b7d0dcc168c9e92f037812d3b3075ef0f8"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 13:59:00 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 14:07:07 2013 -0800"
      },
      "message": "update documentation\n\nDeveloper-only documentation was moved to DEVELOPING. Redundant usage\ninformation was removed from oft.\n"
    },
    {
      "commit": "95f078b7d0dcc168c9e92f037812d3b3075ef0f8",
      "tree": "ddc19940a0e43bd4523f4da94e34c8491996c27d",
      "parents": [
        "1dfd9f11bd2d7f83e1adbe434f2b131f829774fd"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 13:24:58 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sun Jan 06 13:55:27 2013 -0800"
      },
      "message": "oft: improve help text\n"
    },
    {
      "commit": "1dfd9f11bd2d7f83e1adbe434f2b131f829774fd",
      "tree": "47efd597b03444114f5a57da9777ef6bc304b8b7",
      "parents": [
        "68edb3d70b2caf228d3b007ce2dd04ac0e37cb30"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 17:01:01 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 17:01:01 2013 -0800"
      },
      "message": "oft: make --verbose the default and add --quiet to negate it\n"
    },
    {
      "commit": "68edb3d70b2caf228d3b007ce2dd04ac0e37cb30",
      "tree": "ee6fc6fb38a09fb39d570caa0753ef54cee4b016",
      "parents": [
        "1568b65686666e28e4e216856096e3b69b901d9f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 17:00:26 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 17:00:26 2013 -0800"
      },
      "message": "oft: always make unittest.TextTestRunner verbose\n"
    },
    {
      "commit": "1568b65686666e28e4e216856096e3b69b901d9f",
      "tree": "b482e1fb341d34ee69c21d11b990dd6aad15a5f2",
      "parents": [
        "1a08d236008a4a24777bfba93a789122745933d9"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 16:53:13 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 16:53:13 2013 -0800"
      },
      "message": "basic: reenable tests and move out PacketInDefaultDrop\n"
    },
    {
      "commit": "1a08d236008a4a24777bfba93a789122745933d9",
      "tree": "b4b4af4f8fd8fcbb5800f27bfc0ad9cf8ee4209a",
      "parents": [
        "1cc22fd5b7b1414831f83a9d49a171117d32f3ae"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 16:03:50 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 16:03:50 2013 -0800"
      },
      "message": "oft: add test-file option\n\nThis option reads a file that has one test name or group name per line.\nWhitespace and comments starting with \u0027#\u0027 are ignored. The resulting tests are\nunioned with those given on the command line.\n\nThe main usecase for this is freezing a set of tests to be run against a\nswitch. You can use the --list-test-names option to get the current set of\ntests in a format suitable for use with this option, then manually edit\nit to add, remove, and comment tests.\n"
    },
    {
      "commit": "1cc22fd5b7b1414831f83a9d49a171117d32f3ae",
      "tree": "d880542d7d199bf1575344d5667f3b3a13fa7e03",
      "parents": [
        "adf64b10a5f5f74c159c99c3d4eac1c5c9d89a37"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:48:30 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:48:30 2013 -0800"
      },
      "message": "oft: remove profile feature\n\nThis was rarely used and will be replaced with the test-file feature.\n"
    },
    {
      "commit": "adf64b10a5f5f74c159c99c3d4eac1c5c9d89a37",
      "tree": "2605dc0c91ad8336575880ccda1f6fbee7c60c5a",
      "parents": [
        "9527101cbf353f23f6fc616077ca1fae4746992d",
        "37f4211a4e12181744f0236f65e9050967eee782"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:32:01 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:32:01 2013 -0800"
      },
      "message": "Merge branch \u0027annotations\u0027\n\nConflicts:\n\toft\n"
    },
    {
      "commit": "9527101cbf353f23f6fc616077ca1fae4746992d",
      "tree": "24ae78e84bb1cce3bed71de9e548f2bcda100123",
      "parents": [
        "0f0adc9a58f39ad0e6c0101755af69b453ee2d52"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:24:51 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:24:51 2013 -0800"
      },
      "message": "action: remove redundant action_ prefix from classes\n\nThe original names are kept as aliases. The basic module has been changed to\nuse the new API.\n"
    },
    {
      "commit": "0f0adc9a58f39ad0e6c0101755af69b453ee2d52",
      "tree": "6783159dfef8de55f848c1deda4a448133d44b68",
      "parents": [
        "72a0cfed2fe38ed1c1e20805598fb893673b8b5b"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:13:02 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:13:02 2013 -0800"
      },
      "message": "message: convert lists passed as keyword arguments to action_lists\n\nThe basic module has been changed to use the new API.\n"
    },
    {
      "commit": "72a0cfed2fe38ed1c1e20805598fb893673b8b5b",
      "tree": "70b22bd4836abe4d2a27d603c3fdd2cd54863773",
      "parents": [
        "c52a1c46dac37c3d1d4ad6672e33abe635982bd1"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 14:37:53 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 15:08:58 2013 -0800"
      },
      "message": "action_list: support setting actions in constructor\n"
    },
    {
      "commit": "c52a1c46dac37c3d1d4ad6672e33abe635982bd1",
      "tree": "b469b451f28b4d45760285e78591d5948fa0733d",
      "parents": [
        "c3c2ae1775b22de5a7fa4b3bd3934e5359863a86"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 10:29:00 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 10:29:00 2013 -0800"
      },
      "message": "action: support assigning fields with keyword arguments to the constructor\n\nThe basic module has been changed to use the new API.\n"
    },
    {
      "commit": "c3c2ae1775b22de5a7fa4b3bd3934e5359863a86",
      "tree": "520162a809d6008a25f1b32ef5e5f4622b193d4d",
      "parents": [
        "c9e41840a710f26eb3a61355c2cbc0a86adbfc91"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 10:13:17 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Jan 04 10:13:17 2013 -0800"
      },
      "message": "message: support setting fields with keyword arguments to the constructor\n\nThis enables creation of messages in a tree-like fashion.\n\nThe basic test module has been converted to the new API.\n"
    },
    {
      "commit": "c9e41840a710f26eb3a61355c2cbc0a86adbfc91",
      "tree": "b415eecbf81b021a2855316daac53ee3143bfb37",
      "parents": [
        "3e777794aab1b27ff2c25900232f6bce626cc804"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 21:31:42 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 21:31:42 2013 -0800"
      },
      "message": "FuncUtils.verify_flowstats: similar fixes as with verify_tablestats\n"
    },
    {
      "commit": "3e777794aab1b27ff2c25900232f6bce626cc804",
      "tree": "fc9794e8b46cdaafd6d7f57398d481f6ab5b3e4e",
      "parents": [
        "175f9563bca41b3ac434dc0ef291be489ba1a260"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 21:30:30 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 21:30:30 2013 -0800"
      },
      "message": "FuncUtils.verify_tablestats: assert on total counters\n"
    },
    {
      "commit": "175f9563bca41b3ac434dc0ef291be489ba1a260",
      "tree": "371bc385c3e8b88192e481972bc3a2be276017ae",
      "parents": [
        "afcd0dd9951c74ca1685a2064df259af9274b0c8"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 20:58:40 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 21:27:31 2013 -0800"
      },
      "message": "FuncUtils.verify_tablestats: break out of loop if counter exceeded expected value\n"
    },
    {
      "commit": "afcd0dd9951c74ca1685a2064df259af9274b0c8",
      "tree": "2c87ca2638989fe0edbe16c79bd84a8de6aeb769",
      "parents": [
        "308d976197427f3ccc2e0b3c2500d4f92b1010fc"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 20:54:56 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 20:54:56 2013 -0800"
      },
      "message": "FuncUtils.verify_tablestats: log table stats after processing all tables\n"
    },
    {
      "commit": "308d976197427f3ccc2e0b3c2500d4f92b1010fc",
      "tree": "2c3bf2dd6a882f7cb9a36fa5d09f9bb02460052c",
      "parents": [
        "3a261d5f415f91a06afe06437b66ed84ff266571"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 17:47:49 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "remove unused oft_assert module\n"
    },
    {
      "commit": "3a261d5f415f91a06afe06437b66ed84ff266571",
      "tree": "adedcf0c7e809f7d3f69e56ef966e4704e1b65bd",
      "parents": [
        "32bf948a5f640a07c89926fb10ebe4b0d9cb01da"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 17:45:08 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "raise an AssertionError if do_barrier fails\n\nThis removes a lot of boilerplate code.\n"
    },
    {
      "commit": "32bf948a5f640a07c89926fb10ebe4b0d9cb01da",
      "tree": "2d0253fbc801f82658c8a34cbb2961fecb314947",
      "parents": [
        "5c3151c308aec2178ec516ae074f07a4fb18a619"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 17:26:30 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "remove assertions on the return value of delete_all_flows\n\nThis function can no longer fail.\n"
    },
    {
      "commit": "5c3151c308aec2178ec516ae074f07a4fb18a619",
      "tree": "d5236bb64ae0a77f1954779467683a0ecbd5198c",
      "parents": [
        "e30455b947669e3dd9adc9f2e591a0c5f3b97d7f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 17:15:41 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "throw AssertionError if controller.message_send fails\n\nUnlike other types of exception an AssertionError will cause the test to \"fail\"\ninstead of \"error\". Using an exception instead of checking return values\nremoves a lot of boilerplate code that wasn\u0027t always present (or correct). It\nmay also help disabuse test writers of the dangerous notion that succeeding in\nwriting a message to the TCP socket means anything.\n"
    },
    {
      "commit": "e30455b947669e3dd9adc9f2e591a0c5f3b97d7f",
      "tree": "e1b5155c05c4e978c78b8b51297e00ba8429b478",
      "parents": [
        "80efd65292c3d4f4fb81fb0c4c0bc5b8724b86e7"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 16:24:44 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "action_list: throw exception if value is not an action\n\nThis is a programmer error, not a switch issue.\n"
    },
    {
      "commit": "80efd65292c3d4f4fb81fb0c4c0bc5b8724b86e7",
      "tree": "7f12714470bdb15a66d29c9803f4a0a23991e349",
      "parents": [
        "ed130657116d17d08623f7cabaac2e2ca1146554"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 14:05:20 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 18:03:45 2013 -0800"
      },
      "message": "oft: handle missing test module/class docstrings\n"
    },
    {
      "commit": "37f4211a4e12181744f0236f65e9050967eee782",
      "tree": "4d70c6959e2859bf77e050125b9314349acf5fc5",
      "parents": [
        "e811e7bf91b21ee7e03de0996c21861501df0131"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 13:41:49 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 13:41:49 2013 -0800"
      },
      "message": "oft: output available test groups in --list\n"
    },
    {
      "commit": "e811e7bf91b21ee7e03de0996c21861501df0131",
      "tree": "a7afa1138beb93028a38c3dff9d4f1e04a18801e",
      "parents": [
        "5164517e65d49491b641ede42751983e52077586"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 13:36:54 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 13:36:54 2013 -0800"
      },
      "message": "oft: improve --list output for disabled and non-standard tests\n"
    },
    {
      "commit": "5164517e65d49491b641ede42751983e52077586",
      "tree": "a1f1b32709275d2715109074962ad99986526a2f",
      "parents": [
        "4113a5837ee172d2a67ee4db6ced4d960e18e8d0"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 10:17:16 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 10:17:16 2013 -0800"
      },
      "message": "oft: remove unused command line options\n"
    },
    {
      "commit": "4113a5837ee172d2a67ee4db6ced4d960e18e8d0",
      "tree": "9cf28ac98c4db24d7d90462fbf662b4563676c46",
      "parents": [
        "d8e454841a0b082ca792f121f7e370f8270fffb6"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 10:13:02 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Jan 03 10:13:02 2013 -0800"
      },
      "message": "oft: improve help text\n"
    },
    {
      "commit": "d8e454841a0b082ca792f121f7e370f8270fffb6",
      "tree": "ce41af978e5088d955ff7fb52232ed3117c0720a",
      "parents": [
        "97e9965c918bcf05f563d9977b6cf9f28e6044d3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 17:36:21 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 17:36:21 2013 -0800"
      },
      "message": "oft: list all tests for --list, not just the ones matching the test spec\n"
    },
    {
      "commit": "97e9965c918bcf05f563d9977b6cf9f28e6044d3",
      "tree": "b8d27b2b87f940a9f1b9997607222d826d8a66e8",
      "parents": [
        "c76b09a91b9085fc905b44d4b72a119a06febb7f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 17:23:20 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 17:23:20 2013 -0800"
      },
      "message": "add group decorator and smoke test group\n\nThe smoke group is intended to be very fast while covering most important\nfeatures.\n"
    },
    {
      "commit": "c76b09a91b9085fc905b44d4b72a119a06febb7f",
      "tree": "fa7e3aff368b0086b99ff8cfd713f68250e5c9f0",
      "parents": [
        "cc45b8ed30ae043f5883ad7f9fb5fbaffc328940"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 16:53:22 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 17:13:53 2013 -0800"
      },
      "message": "oft: accept test/group names in positional arguments\n\nThe --test-spec option is now deprecated and will be removed.\n"
    },
    {
      "commit": "cc45b8ed30ae043f5883ad7f9fb5fbaffc328940",
      "tree": "21eed19ad40782544b383b37004c58afc8ffe22a",
      "parents": [
        "0a4f6377b4bbd222e442f17a8429064bccecea01"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 15:55:02 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 15:55:02 2013 -0800"
      },
      "message": "rewrite test spec code in terms of groups\n"
    },
    {
      "commit": "0a4f6377b4bbd222e442f17a8429064bccecea01",
      "tree": "9cb96f0c71ef4806f7ffb4e119486257840bf35e",
      "parents": [
        "0f5b9c7830726eab86adb4f977dcf3610e0a44c3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 14:40:22 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 14:40:22 2013 -0800"
      },
      "message": "use class decorators to mark tests that shouldn\u0027t be run by default\n"
    },
    {
      "commit": "0f5b9c7830726eab86adb4f977dcf3610e0a44c3",
      "tree": "4c00fc9f47413a6c37502a3c5a769eaba9f67cdd",
      "parents": [
        "ed130657116d17d08623f7cabaac2e2ca1146554"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 14:05:20 2013 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Jan 02 14:05:20 2013 -0800"
      },
      "message": "oft: handle missing test module/class docstrings\n"
    },
    {
      "commit": "ed130657116d17d08623f7cabaac2e2ca1146554",
      "tree": "516acc2b2903fe939f7c1e0f901ee15143943241",
      "parents": [
        "b8c845ae62169dfe9ecf792c7bc8f27465cb3769"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:35:33 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:35:33 2012 -0800"
      },
      "message": "flow_matches.ExactMatchPrio: look for packet on exact match flow output port, not wildcard flow output port\n"
    },
    {
      "commit": "b8c845ae62169dfe9ecf792c7bc8f27465cb3769",
      "tree": "5bdf38198e54f4a21cada8eb436934dbee6d8f54",
      "parents": [
        "f18980d722058180d7a38adb7cd2579448c6fcfd"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:23:51 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:23:51 2012 -0800"
      },
      "message": "pktact.DirectPacketControllerQueue: skip test if the switch returns an error for the queue stats request on the controller port\n"
    },
    {
      "commit": "f18980d722058180d7a38adb7cd2579448c6fcfd",
      "tree": "4b81edd5de5c61140954b8bfb21d9f1fef84f8d0",
      "parents": [
        "30ca70c643eefa1f287c96f7bca7b33285898ca3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:11:41 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 17:16:11 2012 -0800"
      },
      "message": "controller: improve log message when sending OF msg\n"
    },
    {
      "commit": "30ca70c643eefa1f287c96f7bca7b33285898ca3",
      "tree": "957d0ccc6476c91d91db441d9ee7f255d5967c98",
      "parents": [
        "0a78fbd90d6d159b37c5ec5a74f8f25c1b12957f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 16:53:55 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 16:53:55 2012 -0800"
      },
      "message": "load.FlowModLoad: cap the number of flow-mods for switches that report huge flowtables\n"
    },
    {
      "commit": "0a78fbd90d6d159b37c5ec5a74f8f25c1b12957f",
      "tree": "77f0219b74ba5805680b130ab711d15917a398c5",
      "parents": [
        "376bb40e04193564a7e4e326be16ab6c09051f2f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 16:25:04 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 16:25:04 2012 -0800"
      },
      "message": "pktact: remove exact match flows from wildcard priority tests\n\nThe OF 1.0 spec states that \"An entry that specifies an exact match (i.e., it\nhas no wildcards) is always the highest priority.\" The WildcardPriority tests\nwere incorrect because they expected exact-match flows to be overridden by\nwildcard flows with higher priority.\n\nRather than rework the tests to treat exact-match flows as having the highest\npriority I\u0027ve chosen to replace the exact-match flows with wildcard flows. The\nreason is that later versions of OpenFlow do not specify this behavior. Once\nthe test-groups functionality has been added to OFTest we can add a 1.0-only\ntest that checks the exact-match priority.\n\nReported-by: Ben Pfaff \u003cblp@nicira.com\u003e\n"
    },
    {
      "commit": "376bb40e04193564a7e4e326be16ab6c09051f2f",
      "tree": "8207c96e7a9e4293fe063ea7645944bf8e6bd566",
      "parents": [
        "d5915041612530d62545303cad4a6f6e5cdb514a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 15:20:16 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 15:20:16 2012 -0800"
      },
      "message": "controller: join controller thread in kill()\n"
    },
    {
      "commit": "d5915041612530d62545303cad4a6f6e5cdb514a",
      "tree": "79c9e0bae7a0c16df64ac5b92f5aac9f0fe5ae38",
      "parents": [
        "207502ecd1656aacf3ade3697e5fc65de6e2f497"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 14:58:35 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 15:00:23 2012 -0800"
      },
      "message": "base_tests: cleanup controller if setup fails\n"
    },
    {
      "commit": "207502ecd1656aacf3ade3697e5fc65de6e2f497",
      "tree": "7d8c218f23ca8d6f730aaf0aedf1efac30e644f5",
      "parents": [
        "7c64a42d8f4a658a424eb7273beabf66ecc70438"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 14:29:12 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 14:29:12 2012 -0800"
      },
      "message": "controller: move creation of listening connection to constructor\n\nDoing this synchronously results in better error messages.\n"
    },
    {
      "commit": "7c64a42d8f4a658a424eb7273beabf66ecc70438",
      "tree": "bf152432c9454d1f5536572d1344b946e750754b",
      "parents": [
        "d9ef7c3357e6d746053d19f6d381a7a9933f552c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 13:46:34 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 13:46:34 2012 -0800"
      },
      "message": "base_tests: remove unused clean_shutdown field\n"
    },
    {
      "commit": "d9ef7c3357e6d746053d19f6d381a7a9933f552c",
      "tree": "3a311134041694176502733a0201a3b562766aa8",
      "parents": [
        "82c35e882bc45d12ac2dbc314dce3966fb23014a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 11:00:30 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 11:00:30 2012 -0800"
      },
      "message": "load.FlowModLoad: shuffle flow-mods before sending them to the switch\n\nThis should cover more code paths than the previous pattern.\n"
    },
    {
      "commit": "82c35e882bc45d12ac2dbc314dce3966fb23014a",
      "tree": "9a7872039fe4c3f1080d19eff5c5d7377a7fc136",
      "parents": [
        "0b04b6c987802d7ec606306f033b4c1a4b761938"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:59:36 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:59:36 2012 -0800"
      },
      "message": "speed up load.FlowModLoad\n\nThis test was responsible for about half the runtime of a full OFTest run.\nReduce the number of iterations to shorten it.\n"
    },
    {
      "commit": "0b04b6c987802d7ec606306f033b4c1a4b761938",
      "tree": "ec7eb570a36b86605fd8ea3b9c1185db2092079f",
      "parents": [
        "90b3d7317874a2222b5e80686065c9567e3f8e79"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:12:23 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:12:23 2012 -0800"
      },
      "message": "speed up counters.DurationPerFlow\n"
    },
    {
      "commit": "90b3d7317874a2222b5e80686065c9567e3f8e79",
      "tree": "1fc017c603423ab434d7cdc07db5c978410c9395",
      "parents": [
        "2c7812ce1e1d869eb3dfa0e59bf96b386d95c0f1"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:03:50 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 31 10:03:50 2012 -0800"
      },
      "message": "speed up FuncUtils.verify_*stats\n\nMade the sleep shorter and moved it after the check for the loop condition.\n"
    },
    {
      "commit": "2c7812ce1e1d869eb3dfa0e59bf96b386d95c0f1",
      "tree": "68654d4d40452b9aa2137047180ce496eab52998",
      "parents": [
        "e1b8da9513d907758fef264839c56fab09761c95"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 27 17:52:23 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Dec 27 17:52:23 2012 -0800"
      },
      "message": "use a single dataplane instance for all tests\n\nCreating and destroying dataplane instances was taking about 1/3 of the total\nruntime.\n"
    },
    {
      "commit": "e1b8da9513d907758fef264839c56fab09761c95",
      "tree": "49090625972a5a9e876130f1f65efedbc32a66de",
      "parents": [
        "fb7183008e8fb5a15572cb2b33a08d1fbf1e9bb9"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 22:47:13 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 22:52:50 2012 -0800"
      },
      "message": "dataplane: single-threaded rewrite\n\nThere\u0027s now just one thread for the dataplane instead of one per port. This\ngreatly reduces the amount of code needed for each port implementation.\n"
    },
    {
      "commit": "fb7183008e8fb5a15572cb2b33a08d1fbf1e9bb9",
      "tree": "43810e1920e5f5a25c90d6955b4c39ea1835ef30",
      "parents": [
        "e7b0ecb155278f0c0a21ae6299baaa516a5140b1"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 21:02:31 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 21:02:31 2012 -0800"
      },
      "message": "DataPlane: cleanup and remove dead code\n"
    },
    {
      "commit": "e7b0ecb155278f0c0a21ae6299baaa516a5140b1",
      "tree": "cae51d2fd83e4e08137c8e8959dfaae5eaf32af7",
      "parents": [
        "2e37ec25b27ea3474d2a5adf0dd3adf422ad2585"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 10:01:01 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 10:01:01 2012 -0800"
      },
      "message": "manually release controller and dataplane references\n\nThe GC wasn\u0027t collecting these objects in a timely manner, which caused the\nprocess to run out of file descriptors.\n"
    },
    {
      "commit": "2e37ec25b27ea3474d2a5adf0dd3adf422ad2585",
      "tree": "cbd5ffe9956c5e6b4e3a282919b22f199b06ebb2",
      "parents": [
        "a718c669273689d1d44ca42dcbb4464cfa2c45e8"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 09:47:39 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Dec 26 09:47:39 2012 -0800"
      },
      "message": "EventDescriptor: fix log statement\n"
    },
    {
      "commit": "a718c669273689d1d44ca42dcbb4464cfa2c45e8",
      "tree": "00ba05833d8248db3b86dcce7a43a3b21240e0f9",
      "parents": [
        "5d0e13ca68329148b693536bbadd87b8261f391a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 17:08:47 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 17:08:47 2012 -0800"
      },
      "message": "Revert \"pktact: disable no-op test DirectBadPacketBase\"\n\nThis reverts commit 5d0e13ca68329148b693536bbadd87b8261f391a.\n\nThe priority was inherited by the subclasses, which wasn\u0027t the intention.\n"
    },
    {
      "commit": "5d0e13ca68329148b693536bbadd87b8261f391a",
      "tree": "5fb01fea16ff6ffe67f36ae55205657ffa5233c8",
      "parents": [
        "d7d3292a587e7450855adbd714f98bf8f5e02d96"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 15:05:07 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 15:05:07 2012 -0800"
      },
      "message": "pktact: disable no-op test DirectBadPacketBase\n"
    },
    {
      "commit": "d7d3292a587e7450855adbd714f98bf8f5e02d96",
      "tree": "00ba05833d8248db3b86dcce7a43a3b21240e0f9",
      "parents": [
        "7e1d5c54487356c0a1ef86f88f800a7d24d34283"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 15:03:20 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 15:03:20 2012 -0800"
      },
      "message": "DataPlanePort: fix race between thread start and kill\n\nA very short test could kill the port before the port\u0027s thread started running.\nThe thread would overwrite self.running with True and thus never exit.\n"
    },
    {
      "commit": "7e1d5c54487356c0a1ef86f88f800a7d24d34283",
      "tree": "57a57e50e3a32ed44e4a78983b32699771466b91",
      "parents": [
        "5b5da2d4413ff7249522d9f167c61cd2e298f9ca"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 14:08:32 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Dec 24 14:08:32 2012 -0800"
      },
      "message": "EventDescriptor: dont block notify() if pipe is full\n"
    },
    {
      "commit": "5b5da2d4413ff7249522d9f167c61cd2e298f9ca",
      "tree": "e2adf618a0e67102452025dfc9997b99d8de2cba",
      "parents": [
        "4dfd5e19c74d1a9591e88927e93a326818aa38b6"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:56:32 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:56:32 2012 -0800"
      },
      "message": "dataplane: use an EventDescriptor to speed up killing ports\n"
    },
    {
      "commit": "4dfd5e19c74d1a9591e88927e93a326818aa38b6",
      "tree": "4b672910b8538ccfd921cbd89d4e1f00c67c0ba3",
      "parents": [
        "4d46dbd5348cc2db996e8e3d521d0597f372eeb0"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:48:01 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:48:01 2012 -0800"
      },
      "message": "factor out EventDescriptor from Controller\n"
    },
    {
      "commit": "4d46dbd5348cc2db996e8e3d521d0597f372eeb0",
      "tree": "1991a83cafc224ff92185623538566e7b549716b",
      "parents": [
        "bd186803c8aaf15c4ba20e34c0b7da3d74cc9636"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:26:19 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 19:26:19 2012 -0800"
      },
      "message": "dataplane: kill port threads concurrently\n"
    },
    {
      "commit": "bd186803c8aaf15c4ba20e34c0b7da3d74cc9636",
      "tree": "8224a6cf082a840bbe2edaeec1eecdfd8fe631b4",
      "parents": [
        "3279754f96efb78e32aa226543ff5f0df26c7089"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:46:24 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:46:24 2012 -0800"
      },
      "message": "ovs-ctl: add --ovs-vswitchd-verbosity flags\n"
    },
    {
      "commit": "3279754f96efb78e32aa226543ff5f0df26c7089",
      "tree": "a9cd0310586fe0ca3df4064dfc6556c2929fc2f3",
      "parents": [
        "71d887d2e3836649b650939ee3c1e6e91cde16e2"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:46:05 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:46:05 2012 -0800"
      },
      "message": "controller: use a pipe to wake up event loop from a different thread\n"
    },
    {
      "commit": "71d887d2e3836649b650939ee3c1e6e91cde16e2",
      "tree": "408c152cd1b3b59b0199afb21ff9b271686b7fb1",
      "parents": [
        "82ef183784dfddd4fc790ea50fe7d04ea149d86f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:05:13 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:05:13 2012 -0800"
      },
      "message": "include milliseconds in log timestamps\n"
    },
    {
      "commit": "82ef183784dfddd4fc790ea50fe7d04ea149d86f",
      "tree": "23e022c878017e08d3895c0e2e23de9e04db5bed",
      "parents": [
        "e912d03d5dd19039abe599af85feb03eb6ec68f2"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:04:35 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 17:04:35 2012 -0800"
      },
      "message": "disable Nagle\u0027s algorithm\n"
    },
    {
      "commit": "e912d03d5dd19039abe599af85feb03eb6ec68f2",
      "tree": "db18a5492aa711be24884740eb91ba10b12a106d",
      "parents": [
        "74be472440365351820efd3786f92f207f74e949"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 14:28:33 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Sat Dec 22 14:28:33 2012 -0800"
      },
      "message": "flow_msg_install: dont send redundant barriers\n"
    },
    {
      "commit": "74be472440365351820efd3786f92f207f74e949",
      "tree": "487a00a10f3ca22b488e380f4d492952f258032e",
      "parents": [
        "9c93e670e07836d4e0e38eb4f47eafa6c55ec63e"
      ],
      "author": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Fri Dec 21 13:07:03 2012 -0800"
      },
      "committer": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Fri Dec 21 13:07:03 2012 -0800"
      },
      "message": "controller.py: clear pending packets on disconnect.\n\ncxn.py: store switch addr to detect when switch has disconnected and\nreconnected.\n"
    },
    {
      "commit": "9c93e670e07836d4e0e38eb4f47eafa6c55ec63e",
      "tree": "de14be171e3715f31ae89f9b2e4c8f9e476c1cce",
      "parents": [
        "43ee54c1bccc3ec44a520d25995074ba08ccee96"
      ],
      "author": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Tue Dec 18 12:00:14 2012 -0800"
      },
      "committer": {
        "name": "Ken Chiang",
        "email": "ken.chiang@bigswitch.com",
        "time": "Tue Dec 18 12:00:14 2012 -0800"
      },
      "message": "Remove serial failover tests, which only maintain one controller at any point\nin time.\nInstead, cxn.py-based failover tests can maintain multiple controllers at the\nsame time.\n"
    },
    {
      "commit": "43ee54c1bccc3ec44a520d25995074ba08ccee96",
      "tree": "5c2b5ed97ba6232eb841582dce41ff5748a71a92",
      "parents": [
        "2bb7a272749bb1a9126b347c80c494d18516c322"
      ],
      "author": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Thu Dec 13 15:52:37 2012 -0800"
      },
      "committer": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Thu Dec 13 15:52:37 2012 -0800"
      },
      "message": "Move qinq out of simple_tcp_packet\n"
    },
    {
      "commit": "2bb7a272749bb1a9126b347c80c494d18516c322",
      "tree": "4141f83a412b31d89a80c8a6940df7ffbd876870",
      "parents": [
        "5fb8edff89864728e0612aeed60604502934ddd8",
        "b603b197837d1797f6668180d5fd5d4a3e2d15f5"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Wed Dec 12 15:54:53 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Wed Dec 12 15:54:53 2012 -0800"
      },
      "message": "Merge pull request #29 from eswierk/master\n\nVarious fixes and improvements"
    },
    {
      "commit": "b603b197837d1797f6668180d5fd5d4a3e2d15f5",
      "tree": "4141f83a412b31d89a80c8a6940df7ffbd876870",
      "parents": [
        "5fb8edff89864728e0612aeed60604502934ddd8"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Dec 12 15:38:49 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Wed Dec 12 15:39:23 2012 -0800"
      },
      "message": "Test only supported match fields in pktact.MatchEach\n"
    },
    {
      "commit": "5fb8edff89864728e0612aeed60604502934ddd8",
      "tree": "69bcde6de4f56a1d7661bbbf3263069440b87a51",
      "parents": [
        "47fe471addfd055828b73341f87c3cc89e81ae9c",
        "7040a8d36485d867da83be28a1f0b7650b826fec"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Wed Dec 12 09:33:55 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Wed Dec 12 09:33:55 2012 -0800"
      },
      "message": "Merge pull request #28 from eswierk/master\n\nVarious fixes and improvements"
    },
    {
      "commit": "7040a8d36485d867da83be28a1f0b7650b826fec",
      "tree": "69bcde6de4f56a1d7661bbbf3263069440b87a51",
      "parents": [
        "018892d0517ee623240e5fbbcc6429f7d304419b"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:30:13 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:30:13 2012 -0800"
      },
      "message": "Use VLAN-tagged packet to avoid ill-defined semantics of VLAN ID 0\n"
    },
    {
      "commit": "018892d0517ee623240e5fbbcc6429f7d304419b",
      "tree": "7831e4e98f4b4d03cf296c9f2eeecd73ce32bd31",
      "parents": [
        "ab0bab3d52c110ee57c16014ba36d07bd5e20558"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Fri Nov 30 14:08:05 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:29:06 2012 -0800"
      },
      "message": "Add run_test_list to noing profile\n"
    },
    {
      "commit": "ab0bab3d52c110ee57c16014ba36d07bd5e20558",
      "tree": "7e59128fe9d1251dba8d3e4a8c545b886c27e24b",
      "parents": [
        "e6fca642a6e7e066ec2edf7e33969148d2e9a0f1"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Fri Nov 30 13:31:00 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:29:06 2012 -0800"
      },
      "message": "Don\u0027t try to use the incompatible pylibpcap library\n"
    },
    {
      "commit": "e6fca642a6e7e066ec2edf7e33969148d2e9a0f1",
      "tree": "a925905bd29c3780d12f0db3ce69207984546df2",
      "parents": [
        "47f608d55640a2bd2d633ec0111f5be37fb752b8"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Fri Nov 30 12:00:54 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:29:05 2012 -0800"
      },
      "message": "Add a test that fills up the flow table repeatedly\n"
    },
    {
      "commit": "47f608d55640a2bd2d633ec0111f5be37fb752b8",
      "tree": "01758591fc9ea49bc978cd7d5e317cbd76c2b464",
      "parents": [
        "47fe471addfd055828b73341f87c3cc89e81ae9c"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Mon Nov 12 15:36:32 2012 -0800"
      },
      "committer": {
        "name": "Ed Swierk",
        "email": "eswierk@bigswitch.com",
        "time": "Tue Dec 11 16:29:05 2012 -0800"
      },
      "message": "Add test for BSN mirror action and config extensions\n"
    },
    {
      "commit": "47fe471addfd055828b73341f87c3cc89e81ae9c",
      "tree": "5fa1de974cc1eec1c3534570ee1da92ab597147e",
      "parents": [
        "ba9eee87b344e49741b9faa7c6ffa4ff1ba0cecb",
        "75bcf4d2e0d7446a2a337e445ba0708bef1bafd3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Sun Dec 09 23:24:38 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "lanerl@gmail.com",
        "time": "Sun Dec 09 23:24:38 2012 -0800"
      },
      "message": "Merge pull request #27 from InCNTRE/master\n\nmessage_types "
    },
    {
      "commit": "75bcf4d2e0d7446a2a337e445ba0708bef1bafd3",
      "tree": "bfdb6b02ca1cb644c7956b425cba76181fd31de4",
      "parents": [
        "c277fddefd1667008dcc99889b017985ba9f0566"
      ],
      "author": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 09 22:17:36 2012 -0500"
      },
      "committer": {
        "name": "ShreyaPandita",
        "email": "sdnadmin@SDNLABCOMPUTER.ads.iu.edu",
        "time": "Sun Dec 09 22:17:36 2012 -0500"
      },
      "message": "edited\n"
    },
    {
      "commit": "ba9eee87b344e49741b9faa7c6ffa4ff1ba0cecb",
      "tree": "9c193cb3003521fd08e8ed9ca18de7e8642bb115",
      "parents": [
        "4ecc1f4c44e13367ce755d4857581f8124d4f90a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Dec 07 22:44:24 2012 -0800"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Dec 07 22:44:24 2012 -0800"
      },
      "message": "dl_vlan_pcp is only a 3 bit field, 10 does not fit\n"
    }
  ],
  "next": "c277fddefd1667008dcc99889b017985ba9f0566"
}
