golang.org/x/build@v0.0.0-20240506185731-218518f32b70/internal/coordinator/pool/queue/item_test.go (about) 1 // Copyright 2022 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build linux || darwin 6 7 package queue 8 9 import ( 10 "testing" 11 "time" 12 ) 13 14 func TestSchedItemLess(t *testing.T) { 15 t1 := time.Date(2022, 1, 1, 0, 0, 0, 0, time.UTC) 16 t2 := t1.Add(time.Second) 17 tests := []struct { 18 name string 19 a, b *SchedItem 20 want bool 21 }{ 22 { 23 name: "gomote over reg", 24 a: &SchedItem{ 25 IsGomote: true, 26 RequestTime: t2, 27 }, 28 b: &SchedItem{ 29 RequestTime: t1, 30 }, 31 want: true, 32 }, 33 { 34 name: "gomote over try", 35 a: &SchedItem{ 36 IsGomote: true, 37 RequestTime: t2, 38 }, 39 b: &SchedItem{ 40 IsTry: true, 41 RequestTime: t1, 42 }, 43 want: true, 44 }, 45 { 46 name: "try over reg", 47 a: &SchedItem{ 48 IsTry: true, 49 RequestTime: t2, 50 }, 51 b: &SchedItem{ 52 RequestTime: t1, 53 }, 54 want: true, 55 }, 56 { 57 name: "try FIFO", 58 a: &SchedItem{ 59 IsTry: true, 60 RequestTime: t1, 61 }, 62 b: &SchedItem{ 63 IsTry: true, 64 RequestTime: t2, 65 }, 66 want: true, 67 }, 68 { 69 name: "reg LIFO, less", 70 a: &SchedItem{ 71 CommitTime: t2, 72 RequestTime: t1, // shouldn't be used 73 }, 74 b: &SchedItem{ 75 CommitTime: t1, 76 RequestTime: t2, // shouldn't be used 77 }, 78 want: true, 79 }, 80 { 81 name: "release branch less than master", 82 a: &SchedItem{ 83 CommitTime: t2, 84 Branch: "release-branch.go1.19", 85 }, 86 b: &SchedItem{ 87 CommitTime: t1, 88 Branch: "master", 89 }, 90 want: true, 91 }, 92 } 93 for _, tt := range tests { 94 t.Run(tt.name, func(t *testing.T) { 95 got := tt.a.Less(tt.b) 96 if got != tt.want { 97 t.Errorf("got %v; want %v", got, tt.want) 98 } 99 if got == tt.b.Less(tt.a) { 100 t.Errorf("not reflexive") 101 } 102 }) 103 } 104 }