(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TYPES) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'control out in' span_id:51))} spids: [49] ) ] ) (C {(declare)} {(-i)} {(COUNT)} {(BUFLEN)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(50000)} spids: [95] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUFLEN) op: assign_op.Equal rhs: {(2048)} spids: [98] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$DEVICE'))} {(Id.Lit_Equals '=')} {(DQ )} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:124) ) ] action: [ (C {(echo)} {(DQ ('testing ALL recognized usbtest devices'))}) (C {(echo)} {(DQ )}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_ARGS) op: assign_op.Equal rhs: {(DQ (-a))} spids: [142] ) ] ) ] spids: [110 126] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_ARGS) op: assign_op.Equal rhs: {(DQ )} spids: [150] ) ] ) ] ) (command.ShFunction name: do_test body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Pipeline children: [ (command.Simple words: [ {(./testusb)} {($ Id.VSub_DollarName '$TEST_ARGS')} {(-s)} {($ Id.VSub_DollarName '$BUFLEN')} {(-c)} {($ Id.VSub_DollarName '$COUNT')} {($ Id.VSub_Star '$*')} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:183) fd: 2 arg_word: {(/dev/null)} ) ] ) ] negated: T ) ] action: [ (C {(echo)} {(DQ (FAIL))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:197) arg_word: {(1)} ) ] spids: [165 187] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ARGS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Star '$*'))} spids: [207] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$ARGS'))} {(Id.Lit_Equals '=')} {(DQ )} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:227) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ARGS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$TYPES'))} spids: [232] ) ] ) ] spids: [213 229] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CONFIG) op: assign_op.Equal rhs: {(SQ )} spids: [247] ) ] ) (command.ShFunction name: check_config body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$CONFIG'))} {(Id.Lit_Equals '=')} {(DQ )} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:274) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CONFIG) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [279] ) ] ) (C {(echo)} {(DQ ('assuming ') ($ Id.VSub_DollarName '$CONFIG') (' configuration'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:292) ) ] spids: [260 276] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$CONFIG'))} {(Id.Lit_Equals '=')} {($ Id.VSub_Number '$1')} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:311) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:316) ) ] spids: [298 313] ) ] ) (C {(echo)} { (DQ ('** device must be in ') ($ Id.VSub_Number '$1') (" config, but it's ") ($ Id.VSub_DollarName '$CONFIG') (' instead') ) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:334) arg_word: {(1)} ) ] ) ) (C {(echo)} {(DQ ('TESTING: ') ($ Id.VSub_DollarName '$ARGS'))}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:350) cond: [(C {(Id.Lit_Other ':')} {(true)})] body: (command.DoGroup children: [ (C {(echo)} { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:361) command_list: (command.CommandList children:[(C {(date)})]) ) } ) (command.ForEach iter_name: TYPE iter_words: [{($ Id.VSub_DollarName '$ARGS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(5000)} spids: [383] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUFLEN) op: assign_op.Equal rhs: {(2048)} spids: [387] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$TYPE')} arms: [ (case_arm pat_list: [{(control)}] action: [ (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'** Control test cases:' span_id:423))} ) (C {(echo)} {(DQ ('test 9: ch9 postconfig'))}) (C {(do_test)} {(-t)} {(9)} {(-c)} {(5000)}) (C {(echo)} {(DQ ('test 10: control queueing'))}) (C {(do_test)} {(-t)} {(10)} {(-c)} {(5000)}) (C {(echo)} {(DQ ('test 14: control writes'))}) (C {(do_test)} {(-t)} {(14)} {(-c)} {(15000)} {(-s)} {(256)} {(-v)} {(1)}) (C {(echo)} {(DQ ('test 21: control writes, unaligned'))}) (C {(do_test)} {(-t)} {(21)} {(-c)} {(100)} {(-s)} {(256)} {(-v)} {(1)}) ] spids: [412 413 523 -1] ) (case_arm pat_list: [{(out)}] action: [ (C {(check_config)} {(sink-src)}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '** Host Write (OUT) test cases:' span_id: 539 ) ) } ) (C {(echo)} { (DQ ('test 1: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, same size') ) } ) (C {(do_test)} {(-t)} {(1)}) (C {(echo)} { (DQ ('test 3: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, variable/short size') ) } ) (C {(do_test)} {(-t)} {(3)} {(-v)} {(421)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(100)} spids: [581] ) ] ) (C {(echo)} { (DQ ('test 17: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, unaligned DMA map by core') ) } ) (C {(do_test)} {(-t)} {(17)}) (C {(echo)} { (DQ ('test 19: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, unaligned DMA map by usb_alloc_coherent') ) } ) (C {(do_test)} {(-t)} {(19)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(2000)} spids: [619] ) ] ) (C {(echo)} { (DQ ('test 5: ') ($ Id.VSub_DollarName '$COUNT') (' scatterlists, same size entries') ) } ) (C {(do_test)} {(-t)} {(5)}) (C {(echo)} { (DQ ('test 7a: ') ($ Id.VSub_DollarName '$COUNT') (' scatterlists, variable size/short entries') ) } ) (C {(do_test)} {(-t)} {(7)} {(-v)} {(579)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUFLEN) op: assign_op.Equal rhs: {(4096)} spids: [664] ) ] ) (C {(echo)} { (DQ ('test 7b: ') ($ Id.VSub_DollarName '$COUNT') (' scatterlists, variable size/bigger entries') ) } ) (C {(do_test)} {(-t)} {(7)} {(-v)} {(41)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUFLEN) op: assign_op.Equal rhs: {(64)} spids: [688] ) ] ) (C {(echo)} { (DQ ('test 7c: ') ($ Id.VSub_DollarName '$COUNT') (' scatterlists, variable size/micro entries') ) } ) (C {(do_test)} {(-t)} {(7)} {(-v)} {(63)}) ] spids: [527 528 712 -1] ) (case_arm pat_list: [{(iso-out)}] action: [ (C {(check_config)} {(sink-src)}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '** Host ISOCHRONOUS Write (OUT) test cases:' span_id: 728 ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUFLEN) op: assign_op.Equal rhs: {(24500)} spids: [745] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(1000)} spids: [750] ) ] ) (C {(echo)} { (DQ ('test 15: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, same size') ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUFLEN) op: assign_op.Equal rhs: {(32768)} spids: [772] ) ] ) (C {(do_test)} {(-t)} {(15)} {(-g)} {(8)} {(-v)} {(0)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(100)} spids: [801] ) ] ) (C {(echo)} { (DQ ('test 22: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, non aligned') ) } ) (C {(do_test)} {(-t)} {(22)} {(-g)} {(8)} {(-v)} {(0)}) ] spids: [716 717 830 -1] ) (case_arm pat_list: [{(Id.KW_In in)}] action: [ (C {(check_config)} {(sink-src)}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '** Host Read (IN) test cases:' span_id: 846 ) ) } ) (C {(echo)} { (DQ ('test 2: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, same size') ) } ) (C {(do_test)} {(-t)} {(2)}) (C {(echo)} { (DQ ('test 4: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, variable size') ) } ) (C {(do_test)} {(-t)} {(4)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(100)} spids: [893] ) ] ) (C {(echo)} { (DQ ('test 18: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, unaligned DMA map by core') ) } ) (C {(do_test)} {(-t)} {(18)}) (C {(echo)} { (DQ ('test 20: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, unaligned DMA map by usb_alloc_coherent') ) } ) (C {(do_test)} {(-t)} {(20)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(2000)} spids: [931] ) ] ) (C {(echo)} { (DQ ('test 6: ') ($ Id.VSub_DollarName '$COUNT') (' scatterlists, same size entries') ) } ) (C {(do_test)} {(-t)} {(6)}) (C {(echo)} { (DQ ('test 8: ') ($ Id.VSub_DollarName '$COUNT') (' scatterlists, variable size entries') ) } ) (C {(do_test)} {(-t)} {(8)}) ] spids: [834 835 967 -1] ) (case_arm pat_list: [{(iso-in)}] action: [ (C {(check_config)} {(sink-src)}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '** Host ISOCHRONOUS Read (IN) test cases:' span_id: 983 ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUFLEN) op: assign_op.Equal rhs: {(24500)} spids: [1000] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(1000)} spids: [1005] ) ] ) (C {(echo)} { (DQ ('test 16: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, same size') ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUFLEN) op: assign_op.Equal rhs: {(32768)} spids: [1027] ) ] ) (C {(do_test)} {(-t)} {(16)} {(-g)} {(8)} {(-v)} {(0)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(100)} spids: [1056] ) ] ) (C {(echo)} { (DQ ('test 23: ') ($ Id.VSub_DollarName '$COUNT') (' transfers, unaligned') ) } ) (C {(do_test)} {(-t)} {(23)} {(-g)} {(8)} {(-v)} {(0)}) ] spids: [971 972 1085 -1] ) (case_arm pat_list: [{(halt)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(2000)} spids: [1109] ) ] ) (C {(echo)} {(DQ ('test 13: ') ($ Id.VSub_DollarName '$COUNT') (' halt set/clear'))} ) (C {(do_test)} {(-t)} {(13)}) ] spids: [1089 1090 1129 -1] ) (case_arm pat_list: [{(unlink)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(2000)} spids: [1137] ) ] ) (C {(echo)} {(DQ ('test 11: ') ($ Id.VSub_DollarName '$COUNT') (' read unlinks'))} ) (C {(do_test)} {(-t)} {(11)}) (C {(echo)} {(DQ ('test 12: ') ($ Id.VSub_DollarName '$COUNT') (' write unlinks'))} ) (C {(do_test)} {(-t)} {(12)}) ] spids: [1133 1134 1174 -1] ) (case_arm pat_list: [{(loop)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUFLEN) op: assign_op.Equal rhs: {(2048)} spids: [1186] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(32)} spids: [1190] ) ] ) (C {(check_config)} {(loopback)}) (C {(echo)} { (DQ ('write ') ($ Id.VSub_DollarName '$COUNT') (' buffers of ') ($ Id.VSub_DollarName '$BUFLEN') (' bytes, read them back') ) } ) (C {(echo)} { (DQ ('write ') ($ Id.VSub_DollarName '$COUNT') (' variable size buffers, read them back') ) } ) ] spids: [1178 1179 1232 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(DQ ("Don't understand test type ") ($ Id.VSub_DollarName '$TYPE'))} ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1248) arg_word: {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1251) ) ] spids: [1236 1237 -1 1254] ) ] ) (C {(echo)} {(SQ )}) ] ) ) ] ) ) ] )