Enahanced Work() without Ready() behaviour:
Now if you try to call Work() without calling Ready(), it will trigger an attempt to run Ready(), and will only panic if there is an error.
Cette révision appartient à :
Parent
3232b11d83
révision
6688c29c37
@ -183,7 +183,11 @@ func (worker *Worker) Ready() (err error) {
|
||||
// Most of time, this should be evaluated in goroutine.
|
||||
func (worker *Worker) Work() {
|
||||
if ! worker.ready {
|
||||
panic( "worker: Work() called before Ready()")
|
||||
// didn't run Ready beforehand, so we'll have to do it:
|
||||
err := worker.Ready()
|
||||
if err != nil {
|
||||
panic( err )
|
||||
}
|
||||
}
|
||||
|
||||
defer func() {
|
||||
|
@ -77,6 +77,33 @@ func TestWork(t *testing.T) {
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
|
||||
func TestWorkerClose(t *testing.T) {
|
||||
worker.Close()
|
||||
}
|
||||
|
||||
func TestWorkWithoutReady(t * testing.T){
|
||||
other_worker := New(Unlimited)
|
||||
var wg sync.WaitGroup
|
||||
|
||||
if err := other_worker.AddServer(Network, "127.0.0.1:4730"); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if err := other_worker.AddFunc("foobar", foobar, 0); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
other_worker.JobHandler = func( j Job ) error {
|
||||
if( ! other_worker.ready ){
|
||||
t.Error("Worker not ready as expected");
|
||||
}
|
||||
wg.Done()
|
||||
return nil
|
||||
}
|
||||
|
||||
go other_worker.Work();
|
||||
|
||||
wg.Add(1)
|
||||
worker.Echo([]byte("Hello"))
|
||||
wg.Wait();
|
||||
}
|
||||
|
Chargement…
Référencer dans un nouveau ticket
Block a user