1- package gearman
1+ package gearman // import "github.com/nathanaelle/gearman"
22
33import (
44 "bytes"
@@ -28,10 +28,12 @@ func NewMockServer() *MockServer {
2828 }
2929}
3030
31+ // AddServers implements Client.AddServers and Worker.AddServers
3132func (mc * MockServer ) AddServers (... Conn ) {
3233
3334}
3435
36+ // AddHandler implements Worker.AddHandler
3537func (mc * MockServer ) AddHandler (name string , job Job ) Worker {
3638 mc .lock .Lock ()
3739 defer mc .lock .Unlock ()
@@ -41,6 +43,7 @@ func (mc *MockServer) AddHandler(name string, job Job) Worker {
4143 return mc
4244}
4345
46+ // DelHandler implements Worker.DelHandler
4447func (mc * MockServer ) DelHandler (name string ) Worker {
4548 mc .lock .Lock ()
4649 defer mc .lock .Unlock ()
@@ -50,6 +53,7 @@ func (mc *MockServer) DelHandler(name string) Worker {
5053 return mc
5154}
5255
56+ // DelAllHandlers implements Worker.DelAllHandlers
5357func (mc * MockServer ) DelAllHandlers () Worker {
5458 mc .lock .Lock ()
5559 defer mc .lock .Unlock ()
@@ -59,6 +63,7 @@ func (mc *MockServer) DelAllHandlers() Worker {
5963 return mc
6064}
6165
66+ // GetHandler implements Worker.GetHandler
6267func (mc * MockServer ) GetHandler (name string ) Job {
6368 mc .lock .Lock ()
6469 defer mc .lock .Unlock ()
@@ -70,57 +75,76 @@ func (mc *MockServer) GetHandler(name string) Job {
7075 return FailJob
7176}
7277
78+ // Receivers implements Client.Receivers and Worker.Receivers
7379func (mc * MockServer ) Receivers () (<- chan Message , context.Context ) {
7480 return nil , nil
7581}
7682
83+ // Close implements Client.Close and Worker.Close
7784func (mc * MockServer ) Close () error {
7885 return nil
7986}
8087
88+ // Submit implements Client.Submit
8189func (mc * MockServer ) Submit (req Task ) Task {
8290 pkt := req .Packet ()
8391
8492 switch pkt .Cmd () {
8593 case protocol .SubmitJob :
86- reply := make ( chan protocol. Packet , 5 )
94+ reply := mockPacketEmiter ( req )
8795
8896 go runWorker (mc .GetHandler (string (pkt .At (0 ).Bytes ())), bytes .NewReader (pkt .At (2 ).Bytes ()), reply , TaskID {})
8997
90- go func () {
91- for res := range reply {
92- switch res .Cmd () {
93- case protocol .WorkCompleteWorker :
94- taskRes , _ := protocol .WorkComplete .Borrow (res )
95- go req .Handle (taskRes )
96- close (reply )
97- break
98-
99- default :
100- log .Fatalf ("res unknown: %v %q" , res .Cmd (), res .Payload ())
101- }
102- }
103- }()
104-
10598 default :
10699 log .Fatalf ("unknown: %v %q" , pkt .Cmd (), pkt .Payload ())
107100 }
108101
109102 return req
110103}
111104
112- func (mc * MockServer ) assignTask (tid TaskID ) {
105+ // AssignTask implements Client.AssignTask
106+ func (mc * MockServer ) AssignTask (tid TaskID ) {
113107
114108}
115109
116- func (mc * MockServer ) getTask (TaskID ) Task {
110+ // GetTask implements Client.GetTask
111+ func (mc * MockServer ) GetTask (TaskID ) Task {
117112 return nil
118113}
119114
120- func (mc * MockServer ) extractTask (TaskID ) Task {
115+ // ExtractTask implements Client.ExtractTask
116+ func (mc * MockServer ) ExtractTask (TaskID ) Task {
121117 return nil
122118}
123119
124- func (mc * MockServer ) receivers () (<- chan Message , context.Context ) {
125- return nil , nil
120+ func mockPacketEmiter (req Task ) PacketEmiter {
121+ lock := sync.Mutex {}
122+
123+ return newFuncPacketEmiter (func (res protocol.Packet , fpe PacketEmiter ) {
124+ lock .Lock ()
125+ defer lock .Unlock ()
126+
127+ switch res .Cmd () {
128+ case protocol .WorkCompleteWorker :
129+ taskRes , _ := protocol .WorkComplete .Borrow (res )
130+ go req .Handle (taskRes )
131+ return
132+
133+ case protocol .WorkFailWorker :
134+ taskRes , _ := protocol .WorkFail .Borrow (res )
135+ go req .Handle (taskRes )
136+ return
137+
138+ case protocol .WorkExceptionWorker :
139+ taskRes , _ := protocol .WorkException .Borrow (res )
140+ go req .Handle (taskRes )
141+ return
142+
143+ case protocol .WorkDataWorker :
144+ taskRes , _ := protocol .WorkData .Borrow (res )
145+ go req .Handle (taskRes )
146+ return
147+ }
148+ log .Fatalf ("res unknown: %v %q" , res .Cmd (), res .Payload ())
149+ })
126150}
0 commit comments