Browse Source

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.
tags/0.2
draxil 10 years ago
parent
commit
6688c29c37
2 changed files with 32 additions and 1 deletions
  1. +5
    -1
      worker/worker.go
  2. +27
    -0
      worker/worker_test.go

+ 5
- 1
worker/worker.go View File

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


+ 27
- 0
worker/worker_test.go View File

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

Loading…
Cancel
Save