def test_execute_commands_and_build_email_test_suite_timeout(self): """Test functions correctly when a test suite timeout occurs.""" obs = _execute_commands_and_build_email( [['Test1', 'echo foo'], ['Test2', 'sleep 65 && echo bar']], ['echo setting up'], ['echo foo', 'sleep 65 && echo bar'], ['echo tearing down'], 1, 1, 1, 'test-cluster-tag') self.assertEqual(obs[0], 'Test1: Pass\n\nThe maximum allowable time ' 'of 1 minutes for all test suites to run was exceeded. The following ' 'test suites were not tested: Test2\n\n') self.assertEqual(len(obs[1]), 2) name, log_f = obs[1][0] self.assertEqual(name, 'automated_testing_log.txt') self.assertEqual(log_f.read(), "Command:\n\necho setting up\n\nStdout:\n\nsetting up\n\n" "Stderr:\n\n\n" "Command:\n\necho foo\n\nStdout:\n\nfoo\n\nStderr:\n\n\n" "Command:\n\necho tearing down\n\nStdout:\n\ntearing down\n\n" "Stderr:\n\n\n") name, log_f = obs[1][1] self.assertEqual(name, 'Test1_results.txt') self.assertEqual(log_f.read(), "Command:\n\necho foo\n\nStdout:\n\nfoo\n\nStderr:\n\n\n")
def test_execute_commands_and_build_email_teardown_timeout(self): """Test functions correctly when a teardown timeout occurs.""" obs = _execute_commands_and_build_email( [['Test1', 'echo foo']], ['echo setting up'], ['echo foo'], ['echo tearing down && sleep 65'], 1, 1, 1, 'test-cluster-tag') self.assertEqual(obs[0], "Test1: Pass\n\nThe maximum allowable " "cluster termination time of 1 minutes was exceeded.\n\nIMPORTANT: " "You should check that the cluster labelled with the tag " "'test-cluster-tag' was properly terminated. If not, you should " "manually terminate it.\n\n") self.assertEqual(len(obs[1]), 2) name, log_f = obs[1][0] self.assertEqual(name, 'automated_testing_log.txt') self.assertEqual(log_f.read(), "Command:\n\necho setting up\n\nStdout:\n\nsetting up\n\n" "Stderr:\n\n\n" "Command:\n\necho foo\n\nStdout:\n\nfoo\n\nStderr:\n\n\n") name, log_f = obs[1][1] self.assertEqual(name, 'Test1_results.txt') self.assertEqual(log_f.read(), "Command:\n\necho foo\n\nStdout:\n\nfoo\n\nStderr:\n\n\n")
def test_execute_commands_and_build_email_failures(self): """Test functions correctly when a test suite fails.""" obs = _execute_commands_and_build_email( [['Test1', 'foobarbaz']], ['echo setting up'], ['foobarbaz'], ['echo tearing down'], 1, 1, 1, 'test-cluster-tag') self.assertEqual(obs[0], 'Test1: Fail\n\n') self.assertEqual(len(obs[1]), 2) name, log_f = obs[1][0] self.assertEqual(name, 'automated_testing_log.txt') # We can't directly test the error message returned by /bin/sh because # this will differ between platforms (tested on Mac OS X and Ubuntu). # So strip out the error message, but keep everything else. self.assertEqual(sub('Stderr:\n\n.*\n\n', 'Stderr:\n\n\n\n', log_f.read()), "Command:\n\necho setting up\n\nStdout:\n\nsetting up\n\n" "Stderr:\n\n\n" "Command:\n\nfoobarbaz\n\nStdout:\n\n\nStderr:\n\n\n\n" "Command:\n\necho tearing down\n\nStdout:\n\ntearing down\n\n" "Stderr:\n\n\n") name, log_f = obs[1][1] self.assertEqual(name, 'Test1_results.txt') self.assertEqual(sub('Stderr:\n\n.*\n\n', 'Stderr:\n\n\n\n', log_f.read()), "Command:\n\nfoobarbaz\n\nStdout:\n\n\nStderr:\n\n\n\n")
def test_execute_commands_and_build_email(self): """Test functions correctly using standard, valid input.""" obs = _execute_commands_and_build_email( [['Test1', 'echo foo'], ['Test2', 'echo bar']], ['echo setting up', 'echo ...'], ['echo foo', 'echo bar'], ['echo tearing down', 'echo ...'], 1, 1, 1, 'test-cluster-tag') self.assertEqual(obs[0], 'Test1: Pass\nTest2: Pass\n\n') self.assertEqual(len(obs[1]), 3) name, log_f = obs[1][0] self.assertEqual(name, 'automated_testing_log.txt') self.assertEqual(log_f.read(), "Command:\n\necho setting up\n\nStdout:\n\nsetting up\n\n" "Stderr:\n\n\n" "Command:\n\necho ...\n\nStdout:\n\n...\n\nStderr:\n\n\n" "Command:\n\necho foo\n\nStdout:\n\nfoo\n\nStderr:\n\n\n" "Command:\n\necho bar\n\nStdout:\n\nbar\n\nStderr:\n\n\n" "Command:\n\necho tearing down\n\nStdout:\n\ntearing down\n\n" "Stderr:\n\n\n" "Command:\n\necho ...\n\nStdout:\n\n...\n\nStderr:\n\n\n") name, log_f = obs[1][1] self.assertEqual(name, 'Test1_results.txt') self.assertEqual(log_f.read(), "Command:\n\necho foo\n\nStdout:\n\nfoo\n\nStderr:\n\n\n") name, log_f = obs[1][2] self.assertEqual(name, 'Test2_results.txt') self.assertEqual(log_f.read(), "Command:\n\necho bar\n\nStdout:\n\nbar\n\nStderr:\n\n\n")
def test_execute_commands_and_build_email_setup_timeout(self): """Test functions correctly when a setup timeout occurs.""" obs = _execute_commands_and_build_email( [['Test1', 'echo foo']], ['echo setting up && sleep 65'], ['echo foo'], ['echo tearing down'], 1, 1, 1, 'test-cluster-tag') self.assertEqual(obs[0], 'The maximum allowable cluster setup time of ' '1 minutes was exceeded.\n\n') self.assertEqual(len(obs[1]), 1) name, log_f = obs[1][0] self.assertEqual(name, 'automated_testing_log.txt') self.assertEqual(log_f.read(), "Command:\n\necho tearing down\n\nStdout:\n\ntearing down\n\n" "Stderr:\n\n\n")
def test_execute_commands_and_build_email_setup_failure(self): """Test functions correctly when a setup command fails.""" obs = _execute_commands_and_build_email( [['Test1', 'echo foo']], ['foobarbaz', 'echo setting up'], ['echo foo'], ['echo tearing down'], 1, 1, 1, 'test-cluster-tag') self.assertEqual(obs[0], 'There were problems in starting the remote ' 'cluster while preparing to execute the test suite(s). Please check ' 'the attached log for more details.\n\n') self.assertEqual(len(obs[1]), 1) name, log_f = obs[1][0] self.assertEqual(name, 'automated_testing_log.txt') self.assertEqual(sub('Stderr:\n\n.*\n\n', 'Stderr:\n\n\n\n', log_f.read()), "Command:\n\nfoobarbaz\n\nStdout:\n\n\nStderr:\n\n\n\n" "Command:\n\necho tearing down\n\nStdout:\n\ntearing down\n\n" "Stderr:\n\n\n")
def test_execute_commands_and_build_email_teardown_failure(self): """Test functions correctly when a teardown command fails.""" obs = _execute_commands_and_build_email( [['Test1', 'echo foo']], ['foobarbaz', 'echo setting up'], ['echo foo'], ['foobarbaz'], 1, 1, 1, 'test-cluster-tag') self.assertEqual(obs[0], "There were problems in starting the remote " "cluster while preparing to execute the test suite(s). Please check " "the attached log for more details.\n\nThere were problems in " "terminating the remote cluster. Please check the attached log for " "more details.\n\nIMPORTANT: You should check that the cluster " "labelled with the tag 'test-cluster-tag' was properly terminated. If " "not, you should manually terminate it.\n\n") self.assertEqual(len(obs[1]), 1) name, log_f = obs[1][0] self.assertEqual(name, 'automated_testing_log.txt') self.assertEqual(sub('Stderr:\n\n.*\n\n', 'Stderr:\n\n\n\n', log_f.read()), "Command:\n\nfoobarbaz\n\nStdout:\n\n\nStderr:\n\n\n\n" "Command:\n\nfoobarbaz\n\nStdout:\n\n\nStderr:\n\n\n\n")