@@ -1207,52 +1207,54 @@ class CountingUsbRequest extends UsbRequest {
1207
1207
@ Override public Object getClientData () { count += 1 ; return super .getClientData (); }
1208
1208
}
1209
1209
1210
- usb .open (EnumSet .of (UsbWrapper .OpenCloseFlags .NO_IOMANAGER_THREAD ));
1211
- int len = usb .serialPort .getReadEndpoint ().getMaxPacketSize ();
1212
- usb .close ();
1213
1210
CommonUsbSerialPortWrapper .setReadQueueRequestSupplier (usb .serialPort , CountingUsbRequest ::new );
1214
- CommonUsbSerialPort port = (CommonUsbSerialPort ) usb .serialPort ;
1215
-
1216
- port .setReadQueue (2 , len );
1211
+ usb .serialPort .setReadQueue (2 , 0 );
1212
+ assertEquals (0 , usb .serialPort .getReadQueueBufferSize ());
1217
1213
usb .open (EnumSet .of (UsbWrapper .OpenCloseFlags .NO_IOMANAGER_START ));
1218
- usb . setParameters ( 115200 , 8 , 1 , UsbSerialPort . PARITY_NONE );
1219
- telnet . setParameters ( 115200 , 8 , 1 , UsbSerialPort . PARITY_NONE );
1220
- assertEquals (2 , port .getReadQueueBufferCount ());
1214
+ int len = usb . serialPort . getReadEndpoint (). getMaxPacketSize ( );
1215
+ assertEquals ( len , usb . serialPort . getReadQueueBufferSize () );
1216
+ assertEquals (2 , usb . serialPort .getReadQueueBufferCount ());
1221
1217
assertEquals (4 , usb .ioManager .getReadQueueBufferCount ()); // not set at port yet
1222
1218
assertThrows (IllegalStateException .class , () -> usb .ioManager .setReadQueue (1 )); // cannot reduce bufferCount
1223
1219
usb .ioManager .setReadQueue (2 );
1224
1220
usb .ioManager .start ();
1225
- port .setReadQueue (4 , len );
1221
+ usb .serialPort .setReadQueue (3 , 0 );
1222
+ usb .serialPort .setReadQueue (3 , len );
1223
+ usb .ioManager .setReadQueue (4 );
1226
1224
1225
+ usb .setParameters (115200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1226
+ telnet .setParameters (115200 , 8 , 1 , UsbSerialPort .PARITY_NONE );
1227
1227
// linux kernel does round-robin
1228
1228
LinkedList <UsbRequest > requests = CommonUsbSerialPortWrapper .getReadQueueRequests (usb .serialPort );
1229
1229
assertNotNull (requests );
1230
- for (int i =0 ; i <16 ; i ++) {
1230
+ for (int i =0 ; i <4 * 4 ; i ++) {
1231
1231
telnet .write (new byte [1 ]);
1232
1232
usb .read (1 );
1233
1233
}
1234
- List <Integer > requestCounts ;
1235
- if (usb .serialDriver instanceof FtdiSerialDriver ) {
1236
- for (UsbRequest request : requests ) {
1237
- int count = ((CountingUsbRequest )request ).count ;
1234
+ for (UsbRequest request : requests ) {
1235
+ int count = ((CountingUsbRequest )request ).count ;
1236
+ if (usb .serialDriver instanceof FtdiSerialDriver ) {
1238
1237
assertTrue (String .valueOf (count ), count >= 4 );
1238
+ } else {
1239
+ assertEquals (String .valueOf (count ), 4 , count );
1239
1240
}
1240
- } else {
1241
- requestCounts = requests .stream ().map (r -> ((CountingUsbRequest )r ).count ).collect (Collectors .toList ());
1242
- assertThat (requestCounts , equalTo (Arrays .asList (4 , 4 , 4 , 4 )));
1243
1241
}
1244
1242
usb .ioManager .setReadQueue (6 );
1245
- for (int i =0 ; i <18 ; i ++) {
1243
+ for (int i =0 ; i <3 * 6 ; i ++) {
1246
1244
telnet .write (new byte [1 ]);
1247
1245
usb .read (1 );
1248
1246
}
1249
- requestCounts = requests .stream ().map (r -> ((CountingUsbRequest )r ).count ).collect (Collectors .toList ());
1250
- if (!(usb .serialDriver instanceof FtdiSerialDriver )) {
1251
- assertThat (requestCounts , equalTo (Arrays .asList (7 , 7 , 7 , 7 , 3 , 3 )));
1247
+ for (UsbRequest request : requests ) {
1248
+ int count = ((CountingUsbRequest )request ).count ;
1249
+ if (usb .serialDriver instanceof FtdiSerialDriver ) {
1250
+ assertTrue (String .valueOf (count ), count >= 3 );
1251
+ } else {
1252
+ assertTrue (String .valueOf (count ), count == 7 || count == 3 );
1253
+ }
1252
1254
}
1253
1255
usb .close ();
1254
1256
usb .open (EnumSet .of (UsbWrapper .OpenCloseFlags .NO_IOMANAGER_START ));
1255
- port .setReadQueue (8 , len );
1257
+ usb . serialPort .setReadQueue (8 , len );
1256
1258
assertThrows (IllegalStateException .class , () -> usb .serialPort .read (new byte [len ], 1 ) ); // cannot use timeout != 0
1257
1259
assertThrows (IllegalStateException .class , () -> usb .serialPort .read (new byte [4 ], 0 ) ); // cannot use different length
1258
1260
assertThrows (IllegalStateException .class , () -> usb .ioManager .start ()); // cannot reduce bufferCount
0 commit comments