)]}'
{
  "log": [
    {
      "commit": "e94ba5778102cb28e9ee7befb140999289cbb67a",
      "tree": "9fe4897f9a7c33c987fb2e74138da27c43b2ab9a",
      "parents": [
        "1ab6a14315a2748658ec75ae24033011373b73ab"
      ],
      "author": {
        "name": "Saurav Das",
        "email": "sauravdas@alumni.stanford.edu",
        "time": "Fri Apr 28 17:47:21 2017 -0700"
      },
      "committer": {
        "name": "Saurav Das",
        "email": "sauravdas@alumni.stanford.edu",
        "time": "Mon May 01 11:30:28 2017 -0700"
      },
      "message": "Changes to add a switch-type option for qumran based switches.\n\nChange-Id: I28a9c622b058a9a201a1307a55342272a06ec0fc\n"
    },
    {
      "commit": "b01d0aa65572432bdb0f33f7231e6710100382a3",
      "tree": "52f9ea5f5a23426c4b8ba474cdb60c38ce7df38f",
      "parents": [
        "8c37e1c44caabd1b032d232a5d16498317c42322"
      ],
      "author": {
        "name": "Flavio Castro",
        "email": "castro.flaviojr@gmail.com",
        "time": "Wed Jul 20 16:14:48 2016 -0700"
      },
      "committer": {
        "name": "Flavio Castro",
        "email": "castro.flaviojr@gmail.com",
        "time": "Fri Jul 22 16:52:17 2016 -0700"
      },
      "message": "Aggressively purging Accton switch\n\nChange-Id: Ie523895ecbb0a84b155b621f6b7cb8677a2edc83\n"
    },
    {
      "commit": "c454079d57e6a953c53efc6b102c2eb05d9983ec",
      "tree": "340c8707c5e3245570416fe8c994d94fca77a0d4",
      "parents": [
        "68bd768af11923b7eeb37b903c06b85eca16b19d"
      ],
      "author": {
        "name": "macauley",
        "email": "macauleycheng@gmail.com",
        "time": "Mon Aug 03 09:40:05 2015 +0800"
      },
      "committer": {
        "name": "macauley",
        "email": "macauleycheng@gmail.com",
        "time": "Mon Aug 03 09:40:05 2015 +0800"
      },
      "message": "add sys path accton\n"
    },
    {
      "commit": "c2ad42cee561b963f813fecc986f91e3e573fc73",
      "tree": "a8c8d9c4b41c653378e71a2ed179ebd2e0b20560",
      "parents": [
        "fd08eda2f4ee6449886adaf446f6f1b8c10cc16c"
      ],
      "author": {
        "name": "macauley",
        "email": "macauleycheng@google.com",
        "time": "Fri Jul 17 15:59:15 2015 +0800"
      },
      "committer": {
        "name": "macauley",
        "email": "macauleycheng@google.com",
        "time": "Fri Jul 17 15:59:15 2015 +0800"
      },
      "message": "add cicada option\n"
    },
    {
      "commit": "c1b4bd7a244cd219bca8b3720bb7c8de104d0dc0",
      "tree": "0bf81b8d558c32c04ad40e277433b017fc196acb",
      "parents": [
        "a2c3799957a131cb7316394ed670fd4cb48215a2"
      ],
      "author": {
        "name": "macauley",
        "email": "macauleycheng@google.com",
        "time": "Thu Jul 16 15:29:45 2015 +0800"
      },
      "committer": {
        "name": "macauley",
        "email": "macauleycheng@google.com",
        "time": "Thu Jul 16 15:29:45 2015 +0800"
      },
      "message": "add dump-packet option\n"
    },
    {
      "commit": "62b4fb156c9496678afc3da6e2893c26b8d03f51",
      "tree": "0a0092884a724f1a129a1eff1da2bedbdde0f425",
      "parents": [
        "c72ef4647aac1cd148c9e41c38f34d40de6805f7"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Apr 02 18:04:10 2015 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Apr 08 11:43:37 2015 -0700"
      },
      "message": "oft: add --random-order option\n\nIt\u0027s sometimes useful to run tests in random order to catch interactions\nbetween tests that don\u0027t occur when run in the default sorted order.\n"
    },
    {
      "commit": "c72ef4647aac1cd148c9e41c38f34d40de6805f7",
      "tree": "9be36800265c1d28db996119c83ef59b11319d82",
      "parents": [
        "95640dd68b5528a5b3fe6cec0f672c1edb66365f"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Apr 02 17:52:44 2015 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Wed Apr 08 11:41:49 2015 -0700"
      },
      "message": "oft: sort tests by name\n\nThe old ordering was based on iterating over a hashtable.\n"
    },
    {
      "commit": "0158865d8123d83bb98b24848ceacd7a8b906643",
      "tree": "392c0a4dda7ef894011c6b9a1697abd0bc15c537",
      "parents": [
        "7424a74d3b52aefa651aad2bb53c81ce2b1914fe"
      ],
      "author": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Thu May 15 20:03:12 2014 +0100"
      },
      "committer": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Wed Sep 10 22:01:13 2014 +0100"
      },
      "message": "oft: Convert to print_function\n\nReplace the Python \u0027print\u0027 keyword (\u0027print x\u0027) with the function\nversion (\u0027print(x)\u0027). This is the recommended approach for new Python\ncode.\n\nIn addition, replace a number of \u0027print\u0027 calls with either logging or\ncalls to \u0027die\u0027 to be consistent.\n\nSigned-off-by: Stephen Finucane \u003cstephenfinucane@hotmail.com\u003e\n"
    },
    {
      "commit": "7424a74d3b52aefa651aad2bb53c81ce2b1914fe",
      "tree": "80c5e7f5b0b37d06c8573b265a6b9797782823f4",
      "parents": [
        "0b8ba3901bb5e9040b48f101bc9d80b6e7642c39"
      ],
      "author": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Thu May 15 19:46:06 2014 +0100"
      },
      "committer": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Wed Sep 10 21:51:32 2014 +0100"
      },
      "message": "oft: Name constants in UPPERCASE\n\nSigned-off-by: Stephen Finucane \u003cstephenfinucane@hotmail.com\u003e\n"
    },
    {
      "commit": "1278255612bb2f6a571f68867e534ac62993bc5f",
      "tree": "41f422ce420b96f6e29695e8d329f1565a01b143",
      "parents": [
        "6219af7f6dbab1e45aa94d7b29851b3915fb2862"
      ],
      "author": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Tue May 20 21:55:04 2014 +0100"
      },
      "committer": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Tue May 20 21:57:20 2014 +0100"
      },
      "message": "oft: Enclose \u0027xmlrunner\u0027 import in try-except\n\nIf the \u0027xmlrunner\u0027 package cannot be imported, an exception is\nthrown. Unhandled, the datapath will not shut down causing the\nprogram to hang. Ensure the datapath is killed before re-raising\nthe exception.\n\nSigned-off-by: Stephen Finucane \u003cstephenfinucane@hotmail.com\u003e\n"
    },
    {
      "commit": "6219af7f6dbab1e45aa94d7b29851b3915fb2862",
      "tree": "bf205c09b87013a47acaca5cb825deb2c37a9f16",
      "parents": [
        "e016cf29d5b602efc6ba2f435f7c9010151187b2"
      ],
      "author": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Wed May 14 21:08:30 2014 +0100"
      },
      "committer": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Thu May 15 19:17:29 2014 +0100"
      },
      "message": "oft: Move profiler setup/teardown to function\n\nProfiler setup/teardown was done \"in-situ\". This was inconsistent\nwith the general design of \u0027oft\u0027. Fix this, by moving these\noperations to a seperate file.\n\nIn addition, add a \u0027--profile-file\u0027 parameter, so that the output\nfile can be changed if necessary.\n\nSigned-off-by: Stephen Finucane \u003cstephenfinucane@hotmail.com\u003e\n"
    },
    {
      "commit": "e016cf29d5b602efc6ba2f435f7c9010151187b2",
      "tree": "8c2c6b27fce0bacb9a4685264931dbc4ccb896a6",
      "parents": [
        "93e604b46739114327cc27807eb5caba87e568fa"
      ],
      "author": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Wed Apr 16 22:04:11 2014 +0100"
      },
      "committer": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Thu May 15 19:06:42 2014 +0100"
      },
      "message": "oft: Add support for XML output\n\nAdd support for xUnit-format XML output by utilising the \u0027xmlrunner\u0027\npackage. This feature is optional, and is disabled by default.\n\nResolves issue #123.\n\nSigned-off-by: Stephen Finucane \u003cstephenfinucane@hotmail.com\u003e\n"
    },
    {
      "commit": "48f6aed48c44bef36147eb091350458674715f0d",
      "tree": "c9dafc2322589f647119124b91aa9975d665f97e",
      "parents": [
        "9631f008fc5de5e60ee6b07260b5857e5f90f82d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Sun Mar 23 15:51:02 2014 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Sun Mar 23 15:51:02 2014 -0700"
      },
      "message": "oft: add --default-negative-timeout command line option\n\nThis option controls how long OFTest waits for an event that we don\u0027t expect to\noccur. It replaces several hardcoded values.\n"
    },
    {
      "commit": "9631f008fc5de5e60ee6b07260b5857e5f90f82d",
      "tree": "a712c3eb947c36cc7f6561599b05fa410c123794",
      "parents": [
        "ea75771823780a77876eb715b5571713de71c14b"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Mar 21 18:05:16 2014 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Sun Mar 23 14:18:00 2014 -0700"
      },
      "message": "oft: add --profile command line option\n\nThis produces a Python profile of the testcases. The resulting profile.out file\ncan be read with the pstats module, RunSnake, or pyprof2calltree.\n"
    },
    {
      "commit": "92f7cf6bf060f5cf258d7e398b08b9a97623b38f",
      "tree": "72b3ee8bef694a9599ddeaff313ef8d244acd1c1",
      "parents": [
        "b0de8ab15d80f5153b2390cb07d84ceea36bca59"
      ],
      "author": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Thu Mar 13 15:08:11 2014 +0000"
      },
      "committer": {
        "name": "Stephen Finucane",
        "email": "stephenfinucane@hotmail.com",
        "time": "Thu Mar 13 15:08:11 2014 +0000"
      },
      "message": "oft: Add \u0027disable-ipv6\u0027 command line option"
    },
    {
      "commit": "4d1f3eb2c792f679ccc05ab2aae1af1c97182b52",
      "tree": "0aabc9727dc8c90eacdc665fc7f1c4e370e268fb",
      "parents": [
        "07c1cc72b66a60b6fa69d767c44a31b36cc2501c"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Oct 03 13:45:57 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Oct 04 12:50:44 2013 -0700"
      },
      "message": "oft: change default port to 6653\n\n6653 is the IANA assigned port number.\n"
    },
    {
      "commit": "472aaea288edad9d16f33a0800af74964a8a5748",
      "tree": "3441a0672c380034e1d3e229da05feed7c7b9540",
      "parents": [
        "a9e64420edde500743f191735a856d89db34dd2d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Aug 27 09:27:38 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Aug 27 13:08:19 2013 -0700"
      },
      "message": "use PcapWriter to log dataplane traffic\n\nWhen we write a logfile we\u0027ll also write a pcap file with the extension\nreplaced by \".pcap\". If per-test logging is enabled we\u0027ll open a new pcap file\nfor each test.\n"
    },
    {
      "commit": "69fd8e00e577492589447cf867d9cd6794511858",
      "tree": "78801fb30c66ae47e8c9d5f60c22834b827a5bb7",
      "parents": [
        "4a905e0663b3befdde8fb53f51e8c9cfafdf7915"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 23 16:23:42 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 23 16:35:30 2013 -0700"
      },
      "message": "per-test logfiles\n\nThe new --log-dir option creates a directory with one log file for every test\n(plus main.log for the oft script). It takes precedence over the --log-file\noption if both are specified.\n\nThe --log-append option and the ability to pass \"-\" or \"stderr\" to --log-file\nhave been removed.\n"
    },
    {
      "commit": "4a905e0663b3befdde8fb53f51e8c9cfafdf7915",
      "tree": "06476a482d55000e514449d7af6b0261fc42fa6b",
      "parents": [
        "fb863894c2bd5b7ad19d4c18a743697a3025efd4"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 23 15:00:29 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri Aug 23 15:00:29 2013 -0700"
      },
      "message": "oft: fix padding of msecs log field\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": "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": "74b13d1f5613e00b759428b0cbf30a5d730a3734",
      "tree": "9568ccb5ba2d6ef5a74ff5ea14dc5e94f1a2ee8c",
      "parents": [
        "1ab6f83ca994c42033e066ca6329ff043b82c79e"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri May 03 17:58:50 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri May 03 17:58:50 2013 -0700"
      },
      "message": "oft: compute default test dir based on OF version\n"
    },
    {
      "commit": "50cfa508a71a5603544739d815969aa3d06037d6",
      "tree": "c27b3fe9df6f779c273c358c9005898d35755bdb",
      "parents": [
        "542b959acb62df4cb5b686475acbf6a4e78c41fd"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Thu Apr 25 13:45:08 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Fri May 03 17:47:27 2013 -0700"
      },
      "message": "oft: use pyloxi version map\n"
    },
    {
      "commit": "ec6084d660ea143dc64e5852b7d6984a0c8b7d75",
      "tree": "8d65cc2ff284321a336c67315d9f28c564f6ddae",
      "parents": [
        "161290852a49dda9c282746efdf4b15f4a980baa"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Thu Mar 14 10:38:22 2013 -0700"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Thu Mar 14 10:38:22 2013 -0700"
      },
      "message": "Report random seed in log even when not specified\n"
    },
    {
      "commit": "3f7098c6ff7932ee35fca6ca2e25a911e69e876d",
      "tree": "d808e8f3b4820150bc4bede1f9567433f8215ce8",
      "parents": [
        "e717c6ec92edba03c453a4204a788d7c22ab47bd"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:28:32 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:29:30 2013 -0700"
      },
      "message": "use loxi.protocol to import the correct module\n"
    },
    {
      "commit": "efdc2c5e3c8e8f2f2222d9c3ade7e1ab799dead2",
      "tree": "64bf32c837531c48c6b495cde2751f5026495778",
      "parents": [
        "b658dddb70833c6a12daeba71ab51ddc754683ab"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 10:15:45 2013 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rlane@bigswitch.com",
        "time": "Tue Mar 12 11:29:30 2013 -0700"
      },
      "message": "oft: use pyloxi\n"
    },
    {
      "commit": "edb12d30a4ae0066d0f53570cadb0e7795fabdfb",
      "tree": "2711847d5343110a835d24afc92dd4d2d5d42b5c",
      "parents": [
        "f1bc654b2035c0fcad0aa36df28458ffff3837f2"
      ],
      "author": {
        "name": "Jeffrey Townsend",
        "email": "jeffrey.townsend@bigswitch.com",
        "time": "Wed Feb 06 14:52:30 2013 -0800"
      },
      "committer": {
        "name": "Jeffrey Townsend",
        "email": "jeffrey.townsend@bigswitch.com",
        "time": "Wed Feb 06 14:52:30 2013 -0800"
      },
      "message": "Allow logging to stderr.\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "c93b7d35fa33720bf6c2e5852b879946f3fb5c54",
      "tree": "dafd63363b6c972bdc05d08ad3baa6c2df4aa7be",
      "parents": [
        "b7f12466ae1b55525d260591cba1e762e63de433"
      ],
      "author": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Mon Nov 26 17:55:36 2012 -0800"
      },
      "committer": {
        "name": "Shudong Zhou",
        "email": "shudongzhou@gmail.com",
        "time": "Mon Nov 26 17:55:36 2012 -0800"
      },
      "message": "Add run_test_list, simple version\n"
    },
    {
      "commit": "69ca4d6f9345e031b701d0ea62e5bcfed66139d6",
      "tree": "f38bf5368e140026c0c1337723e58ea8d910eb91",
      "parents": [
        "afcf467ee2c362c8e7445d84a61467e191bf5ceb"
      ],
      "author": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Thu Nov 15 11:50:22 2012 -0800"
      },
      "committer": {
        "name": "Dan Talayco",
        "email": "dan.talayco@bigswitch.com",
        "time": "Thu Nov 15 11:50:22 2012 -0800"
      },
      "message": "Support active connect, overwrite log\n\nAdded options:\n  --switch-ip   If set, actively connect to this switch on controller-port\n  --log-append  Append to existing log\n\nThe default log file generation behavior has changed.  By default, now\nover-write the existing log.  To have the old append behavior, use the\n--log-append option.\n\nActive switch connections have been tested, but not exhaustively.  It\nshold still be considered experimental.  The old behavior (listen for\nswitch connections) should be unchanged.\n"
    },
    {
      "commit": "51590f6dcaf651356a63d8a5449a885a7acfbca8",
      "tree": "f3879c3e5b6da4cca9ce3f52504c6b6736607629",
      "parents": [
        "8260a2dd049a2dc9976ad23b935a7cb948b09714"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Oct 09 15:06:29 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Oct 09 15:06:29 2012 -0700"
      },
      "message": "add platforms dir to the pythonpath\n"
    },
    {
      "commit": "8260a2dd049a2dc9976ad23b935a7cb948b09714",
      "tree": "4c506cc2f171153a90473f67ae80d87b5e761f58",
      "parents": [
        "e703c6801ddb686e042bc82589e1ae4a7a4b1a41"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Oct 09 14:58:35 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Tue Oct 09 14:58:35 2012 -0700"
      },
      "message": "add --priority option for minimum test priority\n"
    },
    {
      "commit": "e703c6801ddb686e042bc82589e1ae4a7a4b1a41",
      "tree": "b1b5baf8e137b8adeb15936f143dcb0dc18b96c7",
      "parents": [
        "1a8d5aab3d18952a4d03e166e1c9a39b64dbad5a"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Oct 08 15:45:24 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Mon Oct 08 15:45:51 2012 -0700"
      },
      "message": "add short option -v for --verbose\n"
    },
    {
      "commit": "483e15412b1c3902ec398cdaa7c79d9cec147d76",
      "tree": "302725431e1f75b7e72397c621bd1039e4bf053e",
      "parents": [
        "b90a1c4dfc0cfe40251187124ff89d7651f2755d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Oct 05 09:29:39 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Oct 05 18:10:21 2012 -0700"
      },
      "message": "remove test_dir from the platform import path\n\nAll python files under test_dir are considered tests.\n"
    },
    {
      "commit": "477f4817eedc0ef6306459de1f88d77739bee7cf",
      "tree": "2133c905fdd5da93949bd4cc8bb343be93370b1c",
      "parents": [
        "d1d9c287220588b5e8cff337f4f136ab9660a235"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Oct 04 22:49:00 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Oct 05 12:30:31 2012 -0700"
      },
      "message": "add a global config dictionary\n\nThere was no need for each test module to keep a copy for itself. This means we\ncan also get rid of test_set_init.\n"
    },
    {
      "commit": "d1d9c287220588b5e8cff337f4f136ab9660a235",
      "tree": "3b5439219990b915babac00fae72ae4b6eb9b1b9",
      "parents": [
        "15f64de4174aeba38652a360d480e7567b2ea531"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Oct 04 22:07:10 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Oct 05 08:44:34 2012 -0700"
      },
      "message": "define priorities as a property on the test class\n\nThis is just cleaner than keeping a global dictionary.\n"
    },
    {
      "commit": "15f64de4174aeba38652a360d480e7567b2ea531",
      "tree": "d8d9d104a55fc038aa31190c21b6df1e63c53be6",
      "parents": [
        "943be671b60dfcce829f177984c8ae82e0925fa8"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Oct 04 21:25:57 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Oct 05 08:44:34 2012 -0700"
      },
      "message": "centralize test-spec parsing and matching\n\nThis cleans up the code and fixes inconsistencies between different users of\nthe test-spec.\n"
    },
    {
      "commit": "943be671b60dfcce829f177984c8ae82e0925fa8",
      "tree": "cd8ccbc34053a2b5e9eaefd0ed9456855c09d1fb",
      "parents": [
        "7bfaeb42d985cd7168001f376bca615ae314ffa3"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Oct 04 19:20:16 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Oct 05 08:44:34 2012 -0700"
      },
      "message": "simplify test list generation\n\nos.walk is used instead of find/grep. All python files in the test directory\nare imported and used as modules if they define a subclass of\nunittest.TestCase. A single datastructure of tests cases is produced instead of\ntwo.\n"
    },
    {
      "commit": "a92f2526be41f5334728f36be4b6d6dd4db6f46e",
      "tree": "fdddd0d859e98741cc87b1b4b5cfbcfb65e05d6f",
      "parents": [
        "5bd6cf94def52d433139d430cc34a6c1c49f8fd8"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Oct 04 18:11:04 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Oct 05 08:44:34 2012 -0700"
      },
      "message": "remove unnecessary uses of eval\n\nThere are easier ways to do everything that was being done with eval.\n"
    },
    {
      "commit": "5bd6cf94def52d433139d430cc34a6c1c49f8fd8",
      "tree": "aa1acfca857ee652ec3f66cc90e9eea2c028349a",
      "parents": [
        "9a00381ec150547bc039a60b5c5f0269bc0a8dfb"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Oct 04 17:57:24 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Fri Oct 05 08:44:31 2012 -0700"
      },
      "message": "fix SIGINT handling\n"
    },
    {
      "commit": "b0470146defb891d7428b781b1539b9db65ee9fd",
      "tree": "494f58297e022836fe6bc2679b383ff000dba3df",
      "parents": [
        "2a3bbb4f5d7e1cdd48704a53d8d8f22c5590abbc"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Oct 04 15:50:35 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Thu Oct 04 17:28:05 2012 -0700"
      },
      "message": "exit with a nice error message when missing message classes\n"
    },
    {
      "commit": "fadf3459b641ddadf1cf2d9cd17f0b75580dc8ba",
      "tree": "a78e75430ecd3b10495fc39dc4d8f5dc15d12a4d",
      "parents": [
        "ac2da802cf0a04fae33f486513fecaa6aa39340d"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Oct 03 16:23:37 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Oct 03 16:23:37 2012 -0700"
      },
      "message": "fix import path issues when running from a symlink\n"
    },
    {
      "commit": "e284b6bfcebcfd7782431ecfda3d570f9281401a",
      "tree": "36b3c4fe37bb0ea46f69e2cc69e7a328f64be517",
      "parents": [
        "da3b5ad89ce995cbc3a08dfff06dcb4f66f85578"
      ],
      "author": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Oct 03 09:19:58 2012 -0700"
      },
      "committer": {
        "name": "Rich Lane",
        "email": "rich.lane@bigswitch.com",
        "time": "Wed Oct 03 10:15:33 2012 -0700"
      },
      "message": "move oft script to the top level\n"
    }
  ]
}
