)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b60823abe64c0de2a5164365cbf48736c808f317",
      "old_mode": 33188,
      "old_path": "src/python/oftest/controller.py",
      "new_id": "fa346c37c2a67aa07fd93f2c69683580767b77b2",
      "new_mode": 33188,
      "new_path": "src/python/oftest/controller.py"
    },
    {
      "type": "modify",
      "old_id": "de7b52a868917d25d4755dc42e1836b40bc3c327",
      "old_mode": 33188,
      "old_path": "src/python/oftest/testutils.py",
      "new_id": "0fc6ce0fa6f7e768d16e78783a0b9efc458a20b6",
      "new_mode": 33188,
      "new_path": "src/python/oftest/testutils.py"
    },
    {
      "type": "modify",
      "old_id": "4d420da744b528446c0eef1ebd7bf9a4fb54ceec",
      "old_mode": 33188,
      "old_path": "tests/FuncUtils.py",
      "new_id": "ad1b1ea266c31f748f6704574f87e883cc7304e8",
      "new_mode": 33188,
      "new_path": "tests/FuncUtils.py"
    },
    {
      "type": "modify",
      "old_id": "330068ce68669f8e5b135be3370d51b60d420ff6",
      "old_mode": 33188,
      "old_path": "tests/actions.py",
      "new_id": "62afda8b347a6a2755a51ea8071b310f8d24a8b5",
      "new_mode": 33188,
      "new_path": "tests/actions.py"
    },
    {
      "type": "modify",
      "old_id": "84c4d6365776c40a7f3793d19bbe8df094885450",
      "old_mode": 33188,
      "old_path": "tests/basic.py",
      "new_id": "06d43046bb0a3e942720287fc8294f72e42f2869",
      "new_mode": 33188,
      "new_path": "tests/basic.py"
    },
    {
      "type": "modify",
      "old_id": "70ca990ed3cafb6dc69d1e63d30def9cfc6ab0e6",
      "old_mode": 33188,
      "old_path": "tests/bsn_ipmask.py",
      "new_id": "51f2213416392a0278414bd1a18f01fb6640a99c",
      "new_mode": 33188,
      "new_path": "tests/bsn_ipmask.py"
    },
    {
      "type": "modify",
      "old_id": "fd211c891da1ce964eaba9802b5315d017f2497e",
      "old_mode": 33188,
      "old_path": "tests/bsn_mirror.py",
      "new_id": "8a713bec3df2e8bb356f2790eaf6d0fa352938e8",
      "new_mode": 33188,
      "new_path": "tests/bsn_mirror.py"
    },
    {
      "type": "modify",
      "old_id": "6c488400e6e2d1127c88a67c1764e200819ef6bd",
      "old_mode": 33188,
      "old_path": "tests/caps.py",
      "new_id": "9f80d4b338e4e1b20af8ec00f2f550dae767521a",
      "new_mode": 33188,
      "new_path": "tests/caps.py"
    },
    {
      "type": "modify",
      "old_id": "25fc6830c12e5f55f1ac851620126215259699c4",
      "old_mode": 33188,
      "old_path": "tests/detailed_contr_sw_messages.py",
      "new_id": "3ca0038d574e60e7f31e07ffa914ae23404ef3b9",
      "new_mode": 33188,
      "new_path": "tests/detailed_contr_sw_messages.py"
    },
    {
      "type": "modify",
      "old_id": "93df5f8f748a7c14820d99f4cdc426078bb1898d",
      "old_mode": 33188,
      "old_path": "tests/flow_expire.py",
      "new_id": "705cab07bf08114f44ec29d3e9fed9a0bb7d3172",
      "new_mode": 33188,
      "new_path": "tests/flow_expire.py"
    },
    {
      "type": "modify",
      "old_id": "13c82c31fb7bd92792be2f847a5f2245b0addf53",
      "old_mode": 33188,
      "old_path": "tests/flow_query.py",
      "new_id": "b205101cce779706265c62323438edb6b937e92d",
      "new_mode": 33188,
      "new_path": "tests/flow_query.py"
    },
    {
      "type": "modify",
      "old_id": "da12071f983e6c7c61d25ab4906797235e1d4b93",
      "old_mode": 33188,
      "old_path": "tests/flow_stats.py",
      "new_id": "e8322fd751a9cc9dc558a949a0e1b39ca9d3dbc8",
      "new_mode": 33188,
      "new_path": "tests/flow_stats.py"
    },
    {
      "type": "modify",
      "old_id": "b35abc13aa0ecca75a25036527d7adeca017ab16",
      "old_mode": 33188,
      "old_path": "tests/load.py",
      "new_id": "d3d3ca62e26640e097a957f47c042c4df1abd790",
      "new_mode": 33188,
      "new_path": "tests/load.py"
    },
    {
      "type": "modify",
      "old_id": "2beaaab911c71ce12c64e906827bb26681fd4b01",
      "old_mode": 33188,
      "old_path": "tests/message_types.py",
      "new_id": "0a72acd49dff09513e539c0e92dfb152b32ba4f0",
      "new_mode": 33188,
      "new_path": "tests/message_types.py"
    },
    {
      "type": "modify",
      "old_id": "2d579786770129870396875a209b6f342214e4f6",
      "old_mode": 33188,
      "old_path": "tests/openflow_protocol_messages.py",
      "new_id": "037209de66efc514ba434d5d18f140487b1ecfb2",
      "new_mode": 33188,
      "new_path": "tests/openflow_protocol_messages.py"
    },
    {
      "type": "modify",
      "old_id": "5a1bedf41793204bdfb0c91e8be778976f947edc",
      "old_mode": 33188,
      "old_path": "tests/pktact.py",
      "new_id": "4a9f7cc97a619ce90d1a547c6e0326b7d60f2b7c",
      "new_mode": 33188,
      "new_path": "tests/pktact.py"
    },
    {
      "type": "modify",
      "old_id": "eb7e612caa898fda15f84925431302dd2eec09bb",
      "old_mode": 33188,
      "old_path": "tests/port_stats.py",
      "new_id": "bacf1d84a227915b87d85de68ecbba32f9a430ba",
      "new_mode": 33188,
      "new_path": "tests/port_stats.py"
    }
  ]
}
