mirror of
https://github.com/harness/drone.git
synced 2025-05-04 23:22:42 +08:00
95 lines
1.8 KiB
Go
95 lines
1.8 KiB
Go
package queue
|
|
|
|
//
|
|
// import (
|
|
// "sync"
|
|
// "testing"
|
|
//
|
|
// . "github.com/franela/goblin"
|
|
// "github.com/gin-gonic/gin"
|
|
// )
|
|
//
|
|
// func TestBuild(t *testing.T) {
|
|
// g := Goblin(t)
|
|
// g.Describe("Queue", func() {
|
|
//
|
|
// g.It("Should publish item", func() {
|
|
// c := new(gin.Context)
|
|
// q := newQueue()
|
|
// ToContext(c, q)
|
|
//
|
|
// w1 := &Work{}
|
|
// w2 := &Work{}
|
|
// Publish(c, w1)
|
|
// Publish(c, w2)
|
|
// g.Assert(len(q.items)).Equal(2)
|
|
// g.Assert(len(q.itemc)).Equal(2)
|
|
// })
|
|
//
|
|
// g.It("Should remove item", func() {
|
|
// c := new(gin.Context)
|
|
// q := newQueue()
|
|
// ToContext(c, q)
|
|
//
|
|
// w1 := &Work{}
|
|
// w2 := &Work{}
|
|
// w3 := &Work{}
|
|
// Publish(c, w1)
|
|
// Publish(c, w2)
|
|
// Publish(c, w3)
|
|
// Remove(c, w2)
|
|
// g.Assert(len(q.items)).Equal(2)
|
|
// g.Assert(len(q.itemc)).Equal(2)
|
|
//
|
|
// g.Assert(Pull(c)).Equal(w1)
|
|
// g.Assert(Pull(c)).Equal(w3)
|
|
// g.Assert(Remove(c, w2)).Equal(ErrNotFound)
|
|
// })
|
|
//
|
|
// g.It("Should pull item", func() {
|
|
// c := new(gin.Context)
|
|
// q := New()
|
|
// ToContext(c, q)
|
|
//
|
|
// cn := new(closeNotifier)
|
|
// cn.closec = make(chan bool, 1)
|
|
// w1 := &Work{}
|
|
// w2 := &Work{}
|
|
//
|
|
// Publish(c, w1)
|
|
// g.Assert(Pull(c)).Equal(w1)
|
|
//
|
|
// Publish(c, w2)
|
|
// g.Assert(PullClose(c, cn)).Equal(w2)
|
|
// })
|
|
//
|
|
// g.It("Should cancel pulling item", func() {
|
|
// c := new(gin.Context)
|
|
// q := New()
|
|
// ToContext(c, q)
|
|
//
|
|
// cn := new(closeNotifier)
|
|
// cn.closec = make(chan bool, 1)
|
|
// var wg sync.WaitGroup
|
|
// go func() {
|
|
// wg.Add(1)
|
|
// g.Assert(PullClose(c, cn) == nil).IsTrue()
|
|
// wg.Done()
|
|
// }()
|
|
// go func() {
|
|
// cn.closec <- true
|
|
// }()
|
|
// wg.Wait()
|
|
//
|
|
// })
|
|
// })
|
|
// }
|
|
//
|
|
// type closeNotifier struct {
|
|
// closec chan bool
|
|
// }
|
|
//
|
|
// func (c *closeNotifier) CloseNotify() <-chan bool {
|
|
// return c.closec
|
|
// }
|