(command.CommandList
  children: [
    (command.ShFunction
      name: test_case
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'name='> (DQ (${ Id.VSub_Number 1))})
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.Sentence
              child: (C {<local>} {<Id.Lit_VarLike 'check_function='> (DQ (${ Id.VSub_Number 1))})
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (C {<atf_test_case>} {(DQ (${ Id.VSub_Name name))} {<cleanup>})
            (C {<eval>} {(DQ (${ Id.VSub_Name name) <'_head() {  }'>)})
            (C {<eval>} 
              {
                (DQ (${ Id.VSub_Name name) <'_body() { '> <'\t\t'> (${ Id.VSub_Name check_function) <' '>)
              } {(DQ (${ Id.VSub_At '@'))} {(DQ <'; '> <'\t}'>)}
            )
            (C {<eval>} 
              {
                (DQ (${ Id.VSub_Name name) <'_cleanup() { '> 
                  <'\t\tRUMP_SERVER=unix://commsock rump.halt\n'> <'        }'>
                )
              }
            )
          ]
        )
    )
    (C {<test_case>} {<basic>} {<basic>})
    (C {<test_case>} {<stress_short>} {<stress>} {<1>})
    (C {<test_case>} {<stress_long>} {<stress>} {<2>})
    (C {<test_case>} {<stress_killer>} {<stress>} {<5>} {<kill>})
    (C {<test_case>} {<fork_simple>} {<fork>} {<simple>})
    (C {<test_case>} {<fork_pipecomm>} {<fork>} {<pipecomm>})
    (C {<test_case>} {<fork_fakeauth>} {<fork>} {<fakeauth>})
    (C {<test_case>} {<sigsafe>} {<sigsafe>} {<sigsafe>})
    (C {<test_case>} {<signal>} {<signal>})
    (C {<test_case>} {<reconnect>} {<reconnect>})
    (command.ShFunction
      name: basic
      body: 
        (BraceGroup
          children: [
            (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>})
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump_server>} 
              {(${ Id.VSub_Name RUMP_SERVER)}
            )
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<atf_get_srcdir>})) 
                <'/h_client/h_simplecli'>
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: stress_short_head
      body: (BraceGroup children:[(C {<atf_set>} {(DQ <require.memory>)} {(DQ <64M>)})])
    )
    (command.ShFunction
      name: stress_long_head
      body: (BraceGroup children:[(C {<atf_set>} {(DQ <require.memory>)} {(DQ <64M>)})])
    )
    (command.ShFunction
      name: stress
      body: 
        (BraceGroup
          children: [
            (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>})
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump_server>} 
              {<-lrumpvfs>} {<-lrumpnet>} {<-lrumpnet_net>} {<-lrumpnet_netinet>} {<-lrumpdev>} {(${ Id.VSub_Name RUMP_SERVER)}
            )
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<ignore>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<atf_get_srcdir>})) 
                <'/h_client/h_stresscli'>
              } {($ Id.VSub_At '$@')}
            )
          ]
        )
    )
    (command.ShFunction
      name: fork
      body: 
        (BraceGroup
          children: [
            (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>})
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump_server>} 
              {<-lrumpvfs>} {<-lrumpdev>} {(${ Id.VSub_Name RUMP_SERVER)}
            )
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<atf_get_srcdir>})) 
                <'/h_client/h_forkcli'>
              } {(${ Id.VSub_Number 1)}
            )
          ]
        )
    )
    (command.ShFunction
      name: sigsafe
      body: 
        (BraceGroup
          children: [
            (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>})
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump_server>} 
              {(${ Id.VSub_Name RUMP_SERVER)}
            )
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<atf_get_srcdir>})) 
                <'/h_client/h_sigcli'>
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: signal
      body: 
        (BraceGroup
          children: [
            (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>})
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<atf_get_srcdir>})) 
                <'/h_server/h_simpleserver'>
              } {(${ Id.VSub_Name RUMP_SERVER)} {<sendsig>} {<27>}
            )
            (C {<atf_check>} {<-s>} {<signal> <Id.Lit_Colon ':'> <27>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<atf_get_srcdir>})) 
                <'/h_client/h_simplecli'>
              } {<block>}
            )
          ]
        )
    )
    (command.ShFunction
      name: reconnect
      body: 
        (BraceGroup
          children: [
            (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>})
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump_server>} 
              {(${ Id.VSub_Name RUMP_SERVER)}
            )
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<ignore>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<atf_get_srcdir>})) 
                <'/h_client/h_reconcli'>
              } {<2>}
            )
          ]
        )
    )
    (command.ShFunction
      name: atf_init_test_cases
      body: 
        (BraceGroup
          children: [
            (C {<atf_add_test_case>} {<basic>})
            (C {<atf_add_test_case>} {<stress_short>})
            (C {<atf_add_test_case>} {<stress_long>})
            (C {<atf_add_test_case>} {<stress_killer>})
            (C {<atf_add_test_case>} {<fork_simple>})
            (C {<atf_add_test_case>} {<fork_pipecomm>})
            (C {<atf_add_test_case>} {<fork_fakeauth>})
            (C {<atf_add_test_case>} {<sigsafe>})
            (C {<atf_add_test_case>} {<signal>})
            (C {<atf_add_test_case>} {<reconnect>})
          ]
        )
    )
  ]
)