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.
Esse commit está contido em:
draxil 2014-06-01 16:59:57 +01:00
commit 6688c29c37
2 arquivos alterados com 32 adições e 1 exclusões

Ver arquivo

@ -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() {

Ver arquivo

@ -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();
}