)]}'
{
  "commit": "d0b2d487821e00f2aee2ebff58062aeff9a01be6",
  "tree": "31a5716108aac957e1199d0cacfaa14a07e43f14",
  "parents": [
    "1ea1305312d4228228b44e9701d33b6a03b65381"
  ],
  "author": {
    "name": "Alexei Frolov",
    "email": "frolv@google.com",
    "time": "Wed Dec 04 11:06:23 2019 -0800"
  },
  "committer": {
    "name": "Alexei Frolov",
    "email": "frolv@google.com",
    "time": "Fri Dec 06 22:55:28 2019 +0000"
  },
  "message": "Add pw_test_server module\n\nThis change adds a pw_test_server module which implements a gRPC server\nfor queueing and distributing unit tests across multiple test runners.\nThe server is implemented as a Go library which can be imported and used\nby developers to build a custom unit test running infrastructure.\n\nTo use the server, a UnitTestRunner interface that processes requests to\nrun unit tests must be implemented and registered with the server. An\nimplementation of this interface which runs unit test executables\nthrough an external command is provided alongside the server.\n\nAn example program that uses the server library to run a unit test\nserver is also provided within the module. This program uses the\ncommand-based test runners to run unit tests on a local machine. It is\nconfigurable through a config file, allowing multiple workers to be\nregistered with the server. The program additionally doubles as a gRPC\nclient for the server which can be invoked with the path to a unit test\nexecutable to schedule it to be run.\n\nChange-Id: I347d230370620395de09e277f9763d7df1c4abad\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "662adc451c19f2c47400851ad800dd04ac1ef619",
      "old_mode": 33188,
      "old_path": "docs/BUILD.gn",
      "new_id": "af3cd1f1f699d91d4e54beb1c0b8e9aec8a14215",
      "new_mode": 33188,
      "new_path": "docs/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "cb2aa773c421392e954905879ce3dd31e04841ac",
      "old_mode": 33188,
      "old_path": "docs/modules.rst",
      "new_id": "b166a0f8c27a134efd6b582307d19581ac9e59b5",
      "new_mode": 33188,
      "new_path": "docs/modules.rst"
    },
    {
      "type": "modify",
      "old_id": "9c1d816c22cc5caa2865a0138d3f707cb6800021",
      "old_mode": 33188,
      "old_path": "modules.gni",
      "new_id": "16c6a2edc61ef79fe7ae5e5170a865518f30cec1",
      "new_mode": 33188,
      "new_path": "modules.gni"
    },
    {
      "type": "modify",
      "old_id": "1dde12c2c1acb9ae5c3e197c69bcb67cdf7ac5c6",
      "old_mode": 33261,
      "old_path": "pw_presubmit/py/pw_presubmit/pigweed_presubmit.py",
      "new_id": "6efa86e5666ab7bd1dfb11e9d1f2cd0e4a183a07",
      "new_mode": 33261,
      "new_path": "pw_presubmit/py/pw_presubmit/pigweed_presubmit.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "851ae59a6bf9ea96975db9edc0137db56d70b24c",
      "new_mode": 33188,
      "new_path": "pw_test_server/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "550783f7862741d415223f07a4ee8d9c063232b3",
      "new_mode": 33188,
      "new_path": "pw_test_server/config.proto"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2215fe8245fd3c016f687a28230376957d0ecac0",
      "new_mode": 33188,
      "new_path": "pw_test_server/docs.rst"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "94e09d2b4a92b004a2c0c548ac83ab0c5e337b28",
      "new_mode": 33188,
      "new_path": "pw_test_server/example_config.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9eed4a233c8597ce8763c5ffcdb1a4f257208fac",
      "new_mode": 33188,
      "new_path": "pw_test_server/go/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d61a2261e390f86f031ed2bc6431263a73fba823",
      "new_mode": 33188,
      "new_path": "pw_test_server/go/client/client.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f35374b6dc4c28ce26d88407d2173a956c926922",
      "new_mode": 33188,
      "new_path": "pw_test_server/go/docs.rst"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4b4fdb8ab38e842ba436515c5826815b7ab446f9",
      "new_mode": 33188,
      "new_path": "pw_test_server/go/go.mod"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "16310d91cec44e45554c1bcb8aa0e17b4598e6fa",
      "new_mode": 33188,
      "new_path": "pw_test_server/go/go.sum"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7284068e9078c2323316f7fd8718c419f1c9b08e",
      "new_mode": 33188,
      "new_path": "pw_test_server/go/main.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "174960cab3b497779453db42dda9170afd832a26",
      "new_mode": 33188,
      "new_path": "pw_test_server/go/server/exec_test_runner.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "edb9f115f2552a6af9497e915007426fafd06507",
      "new_mode": 33188,
      "new_path": "pw_test_server/go/server/server.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9713ab482949bce30acf2366a1fa2aa2dbebd24f",
      "new_mode": 33188,
      "new_path": "pw_test_server/go/server/test_worker_pool.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "253582342d450076626d874be0614c35ba83ae23",
      "new_mode": 33188,
      "new_path": "pw_test_server/unit_test.proto"
    }
  ]
}
