go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/lucicfg/testdata/swarming/dimension.star (about)

     1  load("@stdlib//internal/luci/lib/swarming.star", "swarming")
     2  
     3  def test_dimension_ctor():
     4      def eq(dim, value, expiration):
     5          assert.eq(dim.value, value)
     6          assert.eq(dim.expiration, expiration)
     7  
     8      eq(swarming.dimension("abc"), "abc", None)
     9      eq(swarming.dimension("abc", expiration = time.minute), "abc", time.minute)
    10      eq(swarming.dimension("abc", expiration = 5 * time.minute), "abc", 5 * time.minute)
    11  
    12      # 'value' validation.
    13      assert.fails(lambda: swarming.dimension(123), "got int, want string")
    14      assert.fails(lambda: swarming.dimension(""), "must not be empty")
    15  
    16      # 'expiration' validation.
    17      assert.fails(lambda: swarming.dimension("a", expiration = 300), "got int, want duration")
    18      assert.fails(lambda: swarming.dimension("a", expiration = time.zero), "0s should be >= 1m0s")
    19      assert.fails(lambda: swarming.dimension("a", expiration = 61 * time.second), "losing precision when truncating 1m1s to 1m0s units")
    20  
    21  def test_validate_dimensions():
    22      call = lambda dims: swarming.validate_dimensions("dims", dims)
    23  
    24      v1 = swarming.dimension("v1")
    25      v2 = swarming.dimension("v2", expiration = 5 * time.minute)
    26  
    27      assert.eq(call(None), {})
    28      assert.eq(call({"a": "v1", "b": v2}), {"a": [v1], "b": [v2]})
    29      assert.eq(call({"a": ["v1", v2]}), {"a": [v1, v2]})
    30  
    31      assert.fails(lambda: call({123: "v1"}), "got int key, want string")
    32      assert.fails(lambda: call({"a": 123}), "got int, want swarming.dimension")
    33  
    34  test_dimension_ctor()
    35  test_validate_dimensions()