)]}'
{
  "commit": "9d9d86fb65b5e5cb16df6cdba89cffe1327ec056",
  "tree": "6d8de651eedb6199321de38cd928f8f8d1718b65",
  "parents": [
    "c5faffb268237a3f08515d0845d6652c27765dfa"
  ],
  "author": {
    "name": "Srikrishna Iyer",
    "email": "sriyer@google.com",
    "time": "Tue Mar 02 00:15:51 2021 -0800"
  },
  "committer": {
    "name": "Srikrishna Iyer",
    "email": "46467186+sriyerg@users.noreply.github.com",
    "time": "Mon Mar 15 21:25:59 2021 -0700"
  },
  "message": "[dvsim] Implement LsfLauncher\n\nThis is a first cut implementation of the LsfLauncher. There are several\nitems left as TODOs - they will be addressed later.\n\nThis implementation dispatches all targets (builds, runs, cov etc) as\njob arrays by default. Builds are run discretely (array of 1 job) since\nwe consider each build to have specific job requirements that cannot be\nshared with other builds (cpu/mem/disk/stack usage settings - these will\nbe added in future). Runs pertaining to a build is dispatched as an\narray. The associated changes made to other sources support the array\ngeneration.\n\nThe job polling is not done by invoking bjobs or bhist, but by looking\nfor the LSF job output file (unique for each array index), which gets\nwritten to only AFTER the job is complete. This offers a really fast way\nto test for completion rather than invoking bjobs or bhist, which bring\nthe system to a crawl when invoked for 20k tests in flight. This largely\nworks for now, but we need to explore other options such as using IBM\u0027s\nPlatform LSF Python APIs (future work!).\n\nWhat launcher system to pick is decided by `DVSIM_LAUNCHER` variable.\nIn addition, this PR also adds support for Python virtualenv to isolate\nproject-specific python requirements that need to be met when running\ntasks on remote machines used by several other projects as well.\n\nSigned-off-by: Srikrishna Iyer \u003csriyer@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b0114a83496b2abbfd3209459d805394adb4d445",
      "old_mode": 33188,
      "old_path": "util/dvsim/Deploy.py",
      "new_id": "e055b81876d3c671def5be59b5728d4e0c015d7a",
      "new_mode": 33188,
      "new_path": "util/dvsim/Deploy.py"
    },
    {
      "type": "modify",
      "old_id": "c3d7200bb2df0793f806fe53b1dde796f2351222",
      "old_mode": 33188,
      "old_path": "util/dvsim/Launcher.py",
      "new_id": "cefcca490b0aa7bdcb536ec7ed159648da129cd1",
      "new_mode": 33188,
      "new_path": "util/dvsim/Launcher.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8d6372391e4e3b03e458f77508dc39b2a01935f0",
      "new_mode": 33188,
      "new_path": "util/dvsim/LauncherFactory.py"
    },
    {
      "type": "modify",
      "old_id": "4e56c580eaec0963fe7fd79f3c29ff7829837e0d",
      "old_mode": 33188,
      "old_path": "util/dvsim/LocalLauncher.py",
      "new_id": "c93e966101de15635018701b465725cc1811fe94",
      "new_mode": 33188,
      "new_path": "util/dvsim/LocalLauncher.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1a65fa13423fc94b01d97f7736906364da165e25",
      "new_mode": 33188,
      "new_path": "util/dvsim/LsfLauncher.py"
    },
    {
      "type": "modify",
      "old_id": "941a1fa5198e442dfbdafec324149abe39f0e6eb",
      "old_mode": 33188,
      "old_path": "util/dvsim/SimCfg.py",
      "new_id": "363214d110abc8161199ced558659b6bbf501696",
      "new_mode": 33188,
      "new_path": "util/dvsim/SimCfg.py"
    },
    {
      "type": "modify",
      "old_id": "5d10b85490b920ca9d89367734070edc7cad6091",
      "old_mode": 33261,
      "old_path": "util/dvsim/dvsim.py",
      "new_id": "e0261eaa5ef718ee50f3028f2e3e762bc7425437",
      "new_mode": 33261,
      "new_path": "util/dvsim/dvsim.py"
    }
  ]
}
