38 lines
		
	
	
		
			654 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			654 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package sync
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"testing"
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| func TestWaitGroupContext(t *testing.T) {
 | |
| 	wg := NewWaitGroup()
 | |
| 	_ = t
 | |
| 	wg.Add(1)
 | |
| 	ctx, cancel := context.WithTimeout(context.TODO(), 1*time.Second)
 | |
| 	defer cancel()
 | |
| 	wg.WaitContext(ctx)
 | |
| }
 | |
| 
 | |
| func TestWaitGroupReuse(t *testing.T) {
 | |
| 	wg := NewWaitGroup()
 | |
| 	defer func() {
 | |
| 		if wg.Waiters() != 0 {
 | |
| 			t.Fatal("lost goroutines")
 | |
| 		}
 | |
| 	}()
 | |
| 
 | |
| 	wg.Add(1)
 | |
| 	defer wg.Done()
 | |
| 	ctx, cancel := context.WithTimeout(context.TODO(), 1*time.Second)
 | |
| 	defer cancel()
 | |
| 	wg.WaitContext(ctx)
 | |
| 
 | |
| 	wg.Add(1)
 | |
| 	defer wg.Done()
 | |
| 	ctx, cancel = context.WithTimeout(context.TODO(), 1*time.Second)
 | |
| 	defer cancel()
 | |
| 	wg.WaitContext(ctx)
 | |
| }
 |