(List (= scope= flags=0 words=[] bindings=[('CURRENT_DIR', {[DQ [ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]]}) (Com {[LIT_CHARS pwd]}) )]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[DQ [VarSub CURRENT_DIR][LIT_CHARS /../integration_test_setup.sh]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "integration_test_setup.sh not found!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef set_up [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS a]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package(default_visibility = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS "cc_binary(\n"][LIT_CHARS "name = 'test',\n"][LIT_CHARS "srcs = [ 'test.cc' ],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/test.cc]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#include \n"][LIT_CHARS "int main() { std::cout << "][RIGHT_D_QUOTE "\""][LIT_CHARS "Hello world!"][RIGHT_D_QUOTE "\""][LIT_CHARS " << std::endl; return 0; }\n"]]} 0), > ) (= scope= flags=0 words=[] bindings=[('work_path', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[VarSub TEST_TMPDIR] [LIT_CHARS /remote.XXXXXXXX]})]})]) (= scope= flags=0 words=[] bindings=[('pid_file', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -u]} {[VarSub TEST_TMPDIR] [LIT_CHARS /remote.XXXXXXXX]})]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('worker_port', {[ComSub (Com {[LIT_CHARS pick_random_unused_tcp_port]})]})]) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "no port found"]]}) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('hazelcast_port', {[ComSub (Com {[LIT_CHARS pick_random_unused_tcp_port]})]})]) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "no port found"]]}) ) (Fork (Com {[VarSub bazel_data] [LIT_CHARS /src/tools/remote_worker/remote_worker]} {[LIT_CHARS --work_path] [LIT_OTHER "="] [VarSub work_path]} {[LIT_CHARS --listen_port] [LIT_OTHER "="] [VarSub worker_port]} {[LIT_CHARS --hazelcast_standalone_listen_port] [LIT_OTHER "="] [VarSub hazelcast_port]} {[LIT_CHARS --pid_file] [LIT_OTHER "="] [VarSub pid_file]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) ) (= scope= flags=0 words=[] bindings=[('wait_seconds', {[LIT_CHARS 0]})]) (While (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -s]} {[DQ [VarSub pid_file]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[VarSub wait_seconds]} {[LIT_CHARS -eq]} {[LIT_CHARS 30]} {[LIT_OTHER "]"]}) ) (List (Com {[LIT_CHARS sleep]} {[LIT_CHARS 1]}) (AndOr OP_OR_IF (DParen {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub wait_seconds]}} }) (Com {[LIT_CHARS true]}) ) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -s]} {[DQ [VarSub pid_file]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Timed out waiting for remote worker to start."]]}) ) ) ) (FunctionDef tear_down [] (List (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -s]} {[VarSub pid_file]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('pid', {[ComSub (Com {[LIT_CHARS cat]} {[VarSub pid_file]})]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS kill]} {[VarSub pid]}) (Com {[LIT_CHARS true]}) ) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub pid_file]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub work_path]}) ) ) (FunctionDef test_cc_binary [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //a] [LIT_OTHER ":"] [LIT_CHARS test]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build //a:test without remote execution"]]}) ) (Com {[LIT_CHARS cp]} {[LIT_CHARS bazel-bin/a/test]} {[VarSub TEST_TMPDIR] [LIT_CHARS /test_expected]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]} {[LIT_CHARS --expunge]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --spawn_strategy] [LIT_OTHER "="] [LIT_CHARS remote]} {[LIT_CHARS --hazelcast_node] [LIT_OTHER "="] [LIT_CHARS localhost] [LIT_OTHER ":"] [VarSub hazelcast_port]} {[LIT_CHARS --remote_worker] [LIT_OTHER "="] [LIT_CHARS localhost] [LIT_OTHER ":"] [VarSub worker_port]} {[LIT_CHARS //a] [LIT_OTHER ":"] [LIT_CHARS test]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build //a:test with remote execution"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[LIT_CHARS bazel-bin/a/test]} {[VarSub TEST_TMPDIR] [LIT_CHARS /test_expected]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Remote execution generated different result"]]}) ) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "Remote execution tests"]]}) )