queue_test.go 906 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package mhayaQueue
  2. import (
  3. "fmt"
  4. "math/rand"
  5. "sync"
  6. "testing"
  7. "time"
  8. )
  9. func TestQueue(t *testing.T) {
  10. num := 3
  11. q := NewQueue()
  12. for i := 0; i < num; i++ {
  13. q.Push(i)
  14. }
  15. for i := 0; i < num; i++ {
  16. fmt.Println(q.Pop())
  17. }
  18. }
  19. func BenchmarkNewFIFOQueue(b *testing.B) {
  20. q := NewQueue()
  21. for i := 0; i < 1000000; i++ {
  22. q.Push(i)
  23. }
  24. b.ResetTimer()
  25. for i := 0; i < b.N; i++ {
  26. q.Push(i)
  27. q.Pop()
  28. }
  29. }
  30. func TestQueuePop(t *testing.T) {
  31. num := 10
  32. q := NewQueue()
  33. for i := 0; i < num; i++ {
  34. q.Push(i)
  35. }
  36. go func() {
  37. for {
  38. time.Sleep(10 * time.Millisecond)
  39. q.Push(rand.Int31n(10000))
  40. }
  41. }()
  42. go func() {
  43. postTicker := time.NewTicker(5 * time.Millisecond)
  44. postNum := 100
  45. for {
  46. <-postTicker.C
  47. for i := 0; i < postNum; i++ {
  48. v := q.Pop()
  49. if v == nil {
  50. break
  51. }
  52. fmt.Println(v)
  53. }
  54. }
  55. }()
  56. wg := &sync.WaitGroup{}
  57. wg.Add(1)
  58. wg.Wait()
  59. }