github.com/ngicks/go-sched@v0.0.5/scheduler/queue_test.go (about)

     1  package scheduler_test
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/ngicks/go-sched/scheduler"
     8  )
     9  
    10  func BenchmarkQueue_RemoveCancelled_1000_allCancelled(b *testing.B) {
    11  	b.StopTimer()
    12  	q := scheduler.NewSyncQueue(0)
    13  	now := time.Now()
    14  	for i := 0; i < 1000; i++ {
    15  		t := scheduler.NewTask(now, func(scheduled, current time.Time) {})
    16  		t.Cancel()
    17  		q.Push(t)
    18  	}
    19  	q.Push(scheduler.NewTask(now.Add(-1*time.Second), func(scheduled, current time.Time) {}))
    20  
    21  	b.StartTimer()
    22  	q.Exclude(func(ent *scheduler.Task) bool {
    23  		return ent.IsCancelled()
    24  	}, 0, 1000+1)
    25  }
    26  func BenchmarkQueue_RemoveCancelled_10000_halfCancelled(b *testing.B) {
    27  	b.StopTimer()
    28  	q := scheduler.NewSyncQueue(0)
    29  	now := time.Now()
    30  	for i := 0; i < 10000; i++ {
    31  		t := scheduler.NewTask(now, func(scheduled, current time.Time) {})
    32  		if i < 10000/2 {
    33  			t.Cancel()
    34  		}
    35  		q.Push(t)
    36  	}
    37  	q.Push(scheduler.NewTask(now.Add(-1*time.Second), func(scheduled, current time.Time) {}))
    38  
    39  	b.StartTimer()
    40  	q.Exclude(func(ent *scheduler.Task) bool {
    41  		return ent.IsCancelled()
    42  	}, 0, 10000+1)
    43  }
    44  
    45  func BenchmarkQueue_RemoveCancelled_100000_halfCancelled(b *testing.B) {
    46  	b.StopTimer()
    47  	q := scheduler.NewSyncQueue(0)
    48  	now := time.Now()
    49  	for i := 0; i < 100000; i++ {
    50  		t := scheduler.NewTask(now, func(scheduled, current time.Time) {})
    51  		if i < 100000/2 {
    52  			t.Cancel()
    53  		}
    54  		q.Push(t)
    55  	}
    56  	q.Push(scheduler.NewTask(now.Add(-1*time.Second), func(scheduled, current time.Time) {}))
    57  
    58  	b.StartTimer()
    59  	q.Exclude(func(ent *scheduler.Task) bool {
    60  		return ent.IsCancelled()
    61  	}, 0, 100000+1)
    62  }
    63  
    64  func BenchmarkQueue_RemoveCancelled_100000_oneCancelled(b *testing.B) {
    65  	b.StopTimer()
    66  	q := scheduler.NewSyncQueue(0)
    67  	now := time.Now()
    68  	for i := 0; i < 100000; i++ {
    69  		t := scheduler.NewTask(now, func(scheduled, current time.Time) {})
    70  		q.Push(t)
    71  	}
    72  	t := scheduler.NewTask(now.Add(-1*time.Second), func(scheduled, current time.Time) {})
    73  	t.Cancel()
    74  	q.Push(t)
    75  
    76  	b.StartTimer()
    77  	q.Exclude(func(ent *scheduler.Task) bool {
    78  		return ent.IsCancelled()
    79  	}, 0, 100000+1)
    80  }