File: swarming-task.js

package info (click to toggle)
chromium 120.0.6099.224-1~deb11u1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,112,112 kB
  • sloc: cpp: 32,907,025; ansic: 8,148,123; javascript: 3,679,536; python: 2,031,248; asm: 959,718; java: 804,675; xml: 617,256; sh: 111,417; objc: 100,835; perl: 88,443; cs: 53,032; makefile: 29,579; fortran: 24,137; php: 21,162; tcl: 21,147; sql: 20,809; ruby: 17,735; pascal: 12,864; yacc: 8,045; lisp: 3,388; lex: 1,323; ada: 727; awk: 329; jsp: 267; csh: 117; exp: 43; sed: 37
file content (55 lines) | stat: -rw-r--r-- 1,707 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

'use strict';

// SwarmingTask represents a task in the swarming server.
class SwarmingTask {
  constructor(runner, json) {
    this.query_runner_ = runner;
    this.task_id_ = json.task_id;
    this.run_id_ = json.run_id || undefined;
    this.failure_ = json.failure;
    this.state_ = json.state;
    this.tags_ = {};
    json.tags.map(tag => {
      const parts = tag.split(':');
      this.tags_[parts.shift()] = parts.join(':');
    });
  }

  get name() {
    return this.tags_.name;
  }
  get task_id() {
    return this.task_id_;
  }
};

// A ChildSwarmingTask is the task that actually runs tests and contains
// artifacts. So to find all the failed tests, it downloads the artifacts from
// the swarming server, and parses the `output.json` file.
class ChildSwarmingTask extends SwarmingTask {
  // Returns a promoise for a parsed JSON object from the contents in
  // `filename` for this task.
  async downloadJSONFile(filename) {
    return this.query_runner_.retrieveJSONFile(this.task_id_, filename);
  }
};

// A ParentSwarmingTask itself does not run tests. It delegates the job of
// running the tests to a ChildSwarmingTask. Therefore, to find all the all
// failing tests, it needs to aggregate the failed tests of all its children
// swarming tasks.
class ParentSwarmingTask extends SwarmingTask {
  findChildTasks() {
    const results =
        this.query_runner_.retrieveTasks(`parent_task_id:${this.run_id_}`);
    return results.map(r => new ChildSwarmingTask(this.query_runner_, r));
  }
};

module.exports = {
  ParentSwarmingTask,
};