41 lines
		
	
	
		
			809 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			809 B
		
	
	
	
		
			Go
		
	
	
	
| // Copyright 2019 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package queue
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"sync"
 | |
| )
 | |
| 
 | |
| // testStateRecorder is used to record state changes for testing, to help debug async behaviors
 | |
| type testStateRecorder struct {
 | |
| 	records []string
 | |
| 	mu      sync.Mutex
 | |
| }
 | |
| 
 | |
| var testRecorder = &testStateRecorder{}
 | |
| 
 | |
| func (t *testStateRecorder) Record(format string, args ...any) {
 | |
| 	t.mu.Lock()
 | |
| 	t.records = append(t.records, fmt.Sprintf(format, args...))
 | |
| 	if len(t.records) > 1000 {
 | |
| 		t.records = t.records[len(t.records)-1000:]
 | |
| 	}
 | |
| 	t.mu.Unlock()
 | |
| }
 | |
| 
 | |
| func (t *testStateRecorder) Records() []string {
 | |
| 	t.mu.Lock()
 | |
| 	r := make([]string, len(t.records))
 | |
| 	copy(r, t.records)
 | |
| 	t.mu.Unlock()
 | |
| 	return r
 | |
| }
 | |
| 
 | |
| func (t *testStateRecorder) Reset() {
 | |
| 	t.mu.Lock()
 | |
| 	t.records = nil
 | |
| 	t.mu.Unlock()
 | |
| }
 |