k8s.io/test-infra/triage@v0.0.0-20240520184403-27c6b4c223d8/script_test.js (about)

     1  const assert = require('assert');
     2  const model = require('./model');
     3  const render = require('./render');
     4  
     5  describe('makeBuckets', () => {
     6      function expect(name, expected, ...args) {
     7          it(name, function() {
     8              assert.deepEqual(render.makeBuckets(...args), expected);
     9          });
    10      }
    11      expect('makes a histogram',           [[0, 3], [4, 2]],     [0, 1, 2, 4, 5], 4, 0, 4)
    12      expect('expands to fill range',       [[0, 0], [4, 0], [8, 0], [12, 0]], [], 4, 0, 12);
    13      expect('shifts start to match width', [[0, 1], [4, 1]],     [2, 6], 4, 2, 6);
    14  });
    15  
    16  describe('sparkLinePath', () => {
    17      function expect(name, expected, ...args) {
    18          it(name, function() {
    19              assert.deepEqual(render.sparkLinePath(...args), expected);
    20          });
    21      }
    22      expect('draws a zero graph', 'M0,9h5', [0,0,0,0,0], 1, 9);
    23      expect('draws a spikey graph', 'M0,9h1V0h1V9h1', [0,1,0], 1, 9);
    24      expect('combines adjacents spans', 'M0,9h1V4h2V0h1V9h1', [0,1,1,2,0], 1, 9);
    25      expect('handles scaling', 'M0,8h0V7h2V6h1V4h1V0h1V8', [2,4,8,16,32], 1, 8);
    26  })
    27  
    28  describe('spyglassURLForBuild', () => {
    29      function expect(name, expected, ...args) {
    30          it(name, function() {
    31              assert.deepEqual(render.spyglassURLForBuild(...args), expected);
    32          });
    33      }
    34      builds = {
    35        jobPaths: {
    36          'pr:pull-kubernetes-verify': 'gs://kubernetes-jenkins/pr-logs/pull/122078/pull-kubernetes-verify',
    37          'pr:cloud-provider-gcp-e2e-full': 'gs://kubernetes-jenkins/pr-logs/pull/cloud-provider-gcp/636/cloud-provider-gcp-e2e-full',
    38          'pr:pull-cluster-api-provider-azure-e2e': 'gs://kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cluster-api-provider-azure/4302/pull-cluster-api-provider-azure-e2e',
    39        }
    40      };
    41      expect('handles k/k jobs', 'https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/122272/pull-kubernetes-verify/1734547176656211968', {job: 'pr:pull-kubernetes-verify', number: '1734547176656211968', pr: '122272'});
    42      expect('handles non-k/k jobs in the kubernetes org', 'https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/cloud-provider-gcp/638/cloud-provider-gcp-e2e-full/1734630461432401920', {job: 'pr:cloud-provider-gcp-e2e-full', number: '1734630461432401920', pr: '638'});
    43      expect('handles non-kubernetes org jobs', 'https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cluster-api-provider-azure/4345/pull-cluster-api-provider-azure-e2e/1734613965410930688', {job: 'pr:pull-cluster-api-provider-azure-e2e', number: '1734613965410930688', pr: '4345'});
    44  })
    45  
    46  describe('Clusters', () => {
    47      describe('refilter', () => {
    48          function expect(name, expected, clustered, opts) {
    49              it(name, function() {
    50                  var c = new model.Clusters(clustered);
    51                  assert.deepEqual(c.refilter(opts).data, expected);
    52              });
    53          }
    54          let ham = {text: 'ham', key: 'ham', id: '1234', owner: 'node', tests: [
    55              {name: 'volume', jobs: [{name: 'cure', builds: [1, 2]}]},
    56          ]};
    57          let spam = {text: 'spam', key: 'spam', id: '5678', owner: 'ui', tests: [
    58              {name: 'networking', jobs: [{name: 'gcure', builds: [2]}]},
    59          ]};
    60          let pr = {text: 'bam', key: 'bam', id: '9abc', tests: [
    61              {name: 'new', jobs: [{name: 'pr:verify', builds: [3]}]},
    62          ]};
    63          let first = {text: 'afirst', key: 'afirst', id: 'def0', tests: [
    64              {name: 'something', jobs: [{name: 'firstjob', builds: [5, 6]}]},
    65          ]};
    66          expect('filters by text', [ham, spam], [ham, spam, pr], {reText: /am/im, reXText: /b/im, ci: true});
    67          expect('filters by test', [spam], [ham, spam, first], {reTest: /ing/im, reXTest: /some/im, ci: true});
    68          expect('filters by job', [ham], [ham, spam], {reJob: /cure/im, reXJob: /g/im, ci: true});
    69          expect('filters by sig', [ham], [ham, spam], {sig: ['node'], ci: true});
    70          expect('shows PRs when demanded', [pr], [ham, spam, pr], {pr: true});
    71          expect('hides PRs otherwise', [ham, spam], [ham, spam, pr], {ci: true});
    72          expect('can hide everything', [], [ham, spam, pr], {});
    73          expect('sorts results by build count', [ham, spam], [spam, ham], {ci: true, sort: 'total'});
    74          expect('sorts results by message', [first, ham, spam], [ham, spam, first], {ci: true, sort: 'message'});
    75      });
    76  });