@@ -14,7 +14,7 @@ import (
1414
1515func TestBackend (t * testing.T ) {
1616 Convey ("Given a new Backend binding at a random port" , t , func () {
17- backend , err := NewBackend ("127.0.0.1:0" , nil , nil )
17+ backend , err := NewBackend ("127.0.0.1:0" , nil , nil , false )
1818 So (err , ShouldBeNil )
1919
2020 backendAddr , err := net .ResolveUDPAddr ("udp" , backend .conn .LocalAddr ().String ())
@@ -91,52 +91,203 @@ func TestBackend(t *testing.T) {
9191 })
9292 })
9393
94- Convey ("When sending a PUSH_DATA packet with RXPK" , func () {
95- p := PushDataPacket {
96- ProtocolVersion : ProtocolVersion2 ,
97- RandomToken : 1234 ,
98- GatewayMAC : [8 ]byte {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 },
99- Payload : PushDataPayload {
100- RXPK : []RXPK {
101- {
102- Time : CompactTime (time .Now ().UTC ()),
103- Tmst : 708016819 ,
104- Freq : 868.5 ,
105- Chan : 2 ,
106- RFCh : 1 ,
107- Stat : 1 ,
108- Modu : "LORA" ,
109- DatR : DatR {LoRa : "SF7BW125" },
110- CodR : "4/5" ,
111- RSSI : - 51 ,
112- LSNR : 7 ,
113- Size : 16 ,
114- Data : "QAEBAQGAAAABVfdjR6YrSw==" ,
94+ Convey ("Given skipCRCCheck=false" , func () {
95+ backend .skipCRCCheck = false
96+
97+ Convey ("When sending a PUSH_DATA packet with RXPK (CRC OK)" , func () {
98+ p := PushDataPacket {
99+ ProtocolVersion : ProtocolVersion2 ,
100+ RandomToken : 1234 ,
101+ GatewayMAC : [8 ]byte {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 },
102+ Payload : PushDataPayload {
103+ RXPK : []RXPK {
104+ {
105+ Time : CompactTime (time .Now ().UTC ()),
106+ Tmst : 708016819 ,
107+ Freq : 868.5 ,
108+ Chan : 2 ,
109+ RFCh : 1 ,
110+ Stat : 1 ,
111+ Modu : "LORA" ,
112+ DatR : DatR {LoRa : "SF7BW125" },
113+ CodR : "4/5" ,
114+ RSSI : - 51 ,
115+ LSNR : 7 ,
116+ Size : 16 ,
117+ Data : "QAEBAQGAAAABVfdjR6YrSw==" ,
118+ },
115119 },
116120 },
117- },
118- }
119- b , err := p .MarshalBinary ()
120- So (err , ShouldBeNil )
121- _ , err = gwConn .WriteToUDP (b , backendAddr )
122- So (err , ShouldBeNil )
121+ }
122+ b , err := p .MarshalBinary ()
123+ So (err , ShouldBeNil )
124+ _ , err = gwConn .WriteToUDP (b , backendAddr )
125+ So (err , ShouldBeNil )
123126
124- Convey ("Then an ACK packet is returned" , func () {
125- buf := make ([]byte , 65507 )
126- i , _ , err := gwConn .ReadFromUDP (buf )
127+ Convey ("Then an ACK packet is returned" , func () {
128+ buf := make ([]byte , 65507 )
129+ i , _ , err := gwConn .ReadFromUDP (buf )
130+ So (err , ShouldBeNil )
131+ var ack PushACKPacket
132+ So (ack .UnmarshalBinary (buf [:i ]), ShouldBeNil )
133+ So (ack .RandomToken , ShouldEqual , p .RandomToken )
134+ So (ack .ProtocolVersion , ShouldEqual , p .ProtocolVersion )
135+ })
136+
137+ Convey ("Then the packet is returned by the RX packet channel" , func () {
138+ rxPacket := <- backend .RXPacketChan ()
139+
140+ rxPacket2 , err := newRXPacketFromRXPK (p .GatewayMAC , p .Payload .RXPK [0 ])
141+ So (err , ShouldBeNil )
142+ So (rxPacket , ShouldResemble , rxPacket2 )
143+ })
144+ })
145+
146+ Convey ("When sending a PUSH_DATA packet with RXPK (CRC not OK)" , func () {
147+ p := PushDataPacket {
148+ ProtocolVersion : ProtocolVersion2 ,
149+ RandomToken : 1234 ,
150+ GatewayMAC : [8 ]byte {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 },
151+ Payload : PushDataPayload {
152+ RXPK : []RXPK {
153+ {
154+ Time : CompactTime (time .Now ().UTC ()),
155+ Tmst : 708016819 ,
156+ Freq : 868.5 ,
157+ Chan : 2 ,
158+ RFCh : 1 ,
159+ Stat : - 1 ,
160+ Modu : "LORA" ,
161+ DatR : DatR {LoRa : "SF7BW125" },
162+ CodR : "4/5" ,
163+ RSSI : - 51 ,
164+ LSNR : 7 ,
165+ Size : 16 ,
166+ Data : "QAEBAQGAAAABVfdjR6YrSw==" ,
167+ },
168+ },
169+ },
170+ }
171+ b , err := p .MarshalBinary ()
127172 So (err , ShouldBeNil )
128- var ack PushACKPacket
129- So (ack .UnmarshalBinary (buf [:i ]), ShouldBeNil )
130- So (ack .RandomToken , ShouldEqual , p .RandomToken )
131- So (ack .ProtocolVersion , ShouldEqual , p .ProtocolVersion )
173+ _ , err = gwConn .WriteToUDP (b , backendAddr )
174+ So (err , ShouldBeNil )
175+
176+ Convey ("Then an ACK packet is returned" , func () {
177+ buf := make ([]byte , 65507 )
178+ i , _ , err := gwConn .ReadFromUDP (buf )
179+ So (err , ShouldBeNil )
180+ var ack PushACKPacket
181+ So (ack .UnmarshalBinary (buf [:i ]), ShouldBeNil )
182+ So (ack .RandomToken , ShouldEqual , p .RandomToken )
183+ So (ack .ProtocolVersion , ShouldEqual , p .ProtocolVersion )
184+ })
185+
186+ Convey ("Then the packet is not returned by the RX packet channel" , func () {
187+ So (backend .RXPacketChan (), ShouldHaveLength , 0 )
188+ })
132189 })
190+ })
191+
192+ Convey ("Given skipCRCCheck=true" , func () {
193+ backend .skipCRCCheck = true
194+
195+ Convey ("When sending a PUSH_DATA packet with RXPK (CRC OK)" , func () {
196+ p := PushDataPacket {
197+ ProtocolVersion : ProtocolVersion2 ,
198+ RandomToken : 1234 ,
199+ GatewayMAC : [8 ]byte {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 },
200+ Payload : PushDataPayload {
201+ RXPK : []RXPK {
202+ {
203+ Time : CompactTime (time .Now ().UTC ()),
204+ Tmst : 708016819 ,
205+ Freq : 868.5 ,
206+ Chan : 2 ,
207+ RFCh : 1 ,
208+ Stat : 1 ,
209+ Modu : "LORA" ,
210+ DatR : DatR {LoRa : "SF7BW125" },
211+ CodR : "4/5" ,
212+ RSSI : - 51 ,
213+ LSNR : 7 ,
214+ Size : 16 ,
215+ Data : "QAEBAQGAAAABVfdjR6YrSw==" ,
216+ },
217+ },
218+ },
219+ }
220+ b , err := p .MarshalBinary ()
221+ So (err , ShouldBeNil )
222+ _ , err = gwConn .WriteToUDP (b , backendAddr )
223+ So (err , ShouldBeNil )
224+
225+ Convey ("Then an ACK packet is returned" , func () {
226+ buf := make ([]byte , 65507 )
227+ i , _ , err := gwConn .ReadFromUDP (buf )
228+ So (err , ShouldBeNil )
229+ var ack PushACKPacket
230+ So (ack .UnmarshalBinary (buf [:i ]), ShouldBeNil )
231+ So (ack .RandomToken , ShouldEqual , p .RandomToken )
232+ So (ack .ProtocolVersion , ShouldEqual , p .ProtocolVersion )
233+ })
234+
235+ Convey ("Then the packet is returned by the RX packet channel" , func () {
236+ rxPacket := <- backend .RXPacketChan ()
133237
134- Convey ("Then the packet is returned by the RX packet channel" , func () {
135- rxPacket := <- backend .RXPacketChan ()
238+ rxPacket2 , err := newRXPacketFromRXPK (p .GatewayMAC , p .Payload .RXPK [0 ])
239+ So (err , ShouldBeNil )
240+ So (rxPacket , ShouldResemble , rxPacket2 )
241+ })
242+ })
136243
137- rxPacket2 , err := newRXPacketFromRXPK (p .GatewayMAC , p .Payload .RXPK [0 ])
244+ Convey ("When sending a PUSH_DATA packet with RXPK (CRC not OK)" , func () {
245+ p := PushDataPacket {
246+ ProtocolVersion : ProtocolVersion2 ,
247+ RandomToken : 1234 ,
248+ GatewayMAC : [8 ]byte {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 },
249+ Payload : PushDataPayload {
250+ RXPK : []RXPK {
251+ {
252+ Time : CompactTime (time .Now ().UTC ()),
253+ Tmst : 708016819 ,
254+ Freq : 868.5 ,
255+ Chan : 2 ,
256+ RFCh : 1 ,
257+ Stat : - 1 ,
258+ Modu : "LORA" ,
259+ DatR : DatR {LoRa : "SF7BW125" },
260+ CodR : "4/5" ,
261+ RSSI : - 51 ,
262+ LSNR : 7 ,
263+ Size : 16 ,
264+ Data : "QAEBAQGAAAABVfdjR6YrSw==" ,
265+ },
266+ },
267+ },
268+ }
269+ b , err := p .MarshalBinary ()
270+ So (err , ShouldBeNil )
271+ _ , err = gwConn .WriteToUDP (b , backendAddr )
138272 So (err , ShouldBeNil )
139- So (rxPacket , ShouldResemble , rxPacket2 )
273+
274+ Convey ("Then an ACK packet is returned" , func () {
275+ buf := make ([]byte , 65507 )
276+ i , _ , err := gwConn .ReadFromUDP (buf )
277+ So (err , ShouldBeNil )
278+ var ack PushACKPacket
279+ So (ack .UnmarshalBinary (buf [:i ]), ShouldBeNil )
280+ So (ack .RandomToken , ShouldEqual , p .RandomToken )
281+ So (ack .ProtocolVersion , ShouldEqual , p .ProtocolVersion )
282+ })
283+
284+ Convey ("Then the packet is returned by the RX packet channel" , func () {
285+ rxPacket := <- backend .RXPacketChan ()
286+
287+ rxPacket2 , err := newRXPacketFromRXPK (p .GatewayMAC , p .Payload .RXPK [0 ])
288+ So (err , ShouldBeNil )
289+ So (rxPacket , ShouldResemble , rxPacket2 )
290+ })
140291 })
141292 })
142293
0 commit comments