github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/pkg/rpcserver/last_executing_test.go (about)

     1  // Copyright 2024 syzkaller project authors. All rights reserved.
     2  // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
     3  
     4  package rpcserver
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestLastExecutingEmpty(t *testing.T) {
    13  	last := MakeLastExecuting(10, 10)
    14  	assert.Empty(t, last.Collect())
    15  }
    16  
    17  func TestLastExecuting(t *testing.T) {
    18  	last := MakeLastExecuting(21, 3)
    19  	last.Note(1, 0, []byte("prog1"), 1)
    20  
    21  	last.Note(2, 1, []byte("prog2"), 2)
    22  	last.Note(3, 1, []byte("prog3"), 3)
    23  
    24  	last.Note(4, 3, []byte("prog4"), 4)
    25  	last.Note(5, 3, []byte("prog5"), 5)
    26  	last.Note(6, 3, []byte("prog6"), 6)
    27  
    28  	last.Note(7, 7, []byte("prog7"), 7)
    29  	last.Note(8, 7, []byte("prog8"), 8)
    30  	last.Note(9, 7, []byte("prog9"), 9)
    31  	last.Note(10, 7, []byte("prog10"), 10)
    32  	last.Note(11, 7, []byte("prog11"), 11)
    33  
    34  	last.Note(12, 9, []byte("prog12"), 12)
    35  
    36  	last.Note(13, 8, []byte("prog13"), 13)
    37  
    38  	assert.Equal(t, last.Collect(), []ExecRecord{
    39  		{ID: 1, Proc: 0, Prog: []byte("prog1"), Time: 12},
    40  
    41  		{ID: 2, Proc: 1, Prog: []byte("prog2"), Time: 11},
    42  		{ID: 3, Proc: 1, Prog: []byte("prog3"), Time: 10},
    43  
    44  		{ID: 4, Proc: 3, Prog: []byte("prog4"), Time: 9},
    45  		{ID: 5, Proc: 3, Prog: []byte("prog5"), Time: 8},
    46  		{ID: 6, Proc: 3, Prog: []byte("prog6"), Time: 7},
    47  
    48  		{ID: 9, Proc: 7, Prog: []byte("prog9"), Time: 4},
    49  		{ID: 10, Proc: 7, Prog: []byte("prog10"), Time: 3},
    50  		{ID: 11, Proc: 7, Prog: []byte("prog11"), Time: 2},
    51  
    52  		{ID: 12, Proc: 9, Prog: []byte("prog12"), Time: 1},
    53  
    54  		{ID: 13, Proc: 8, Prog: []byte("prog13"), Time: 0},
    55  	})
    56  }
    57  
    58  func TestLastExecutingHanged(t *testing.T) {
    59  	last := MakeLastExecuting(1, 3)
    60  	last.Note(1, 0, []byte("prog1"), 10)
    61  	last.Note(2, 0, []byte("prog2"), 20)
    62  	last.Hanged(2, 0, []byte("prog2"), 25)
    63  	last.Note(3, 0, []byte("prog3"), 30)
    64  	last.Note(4, 0, []byte("prog4"), 40)
    65  	last.Note(5, 0, []byte("prog5"), 50)
    66  	last.Hanged(5, 0, []byte("prog5"), 55)
    67  	last.Note(6, 0, []byte("prog6"), 60)
    68  	last.Note(7, 0, []byte("prog7"), 70)
    69  	last.Note(8, 0, []byte("prog8"), 80)
    70  	last.Note(9, 0, []byte("prog9"), 90)
    71  	assert.Equal(t, last.Collect(), []ExecRecord{
    72  		{ID: 2, Proc: 32, Prog: []byte("prog2"), Time: 65},
    73  		{ID: 5, Proc: 33, Prog: []byte("prog5"), Time: 35},
    74  		{ID: 7, Proc: 0, Prog: []byte("prog7"), Time: 20},
    75  		{ID: 8, Proc: 0, Prog: []byte("prog8"), Time: 10},
    76  		{ID: 9, Proc: 0, Prog: []byte("prog9"), Time: 0},
    77  	})
    78  }