예제 #1
0
def test_awsem_exception_no_space():
    log = '[fputs] No space left on device' + \
          'some text some text'
    eh = AWSEMErrorHandler()
    res = eh.parse_log(log)
    assert res
    with pytest.raises(AWSEMJobErrorException) as exec_info:
        raise res
    assert 'Not enough space' in str(exec_info.value)
    assert '[fputs]' in str(exec_info.value)
예제 #2
0
def test_awsem_exception_no_space_for_docker():
    log = "failed to register layer: Error processing tar file(exit status 1): " + \
          "write /miniconda3/pkgs/python-3.7.6-h0371630_2.tar.bz2: no space left on device" + \
          "some text some text"
    eh = AWSEMErrorHandler()
    res = eh.parse_log(log)
    assert res
    with pytest.raises(AWSEMJobErrorException) as exec_info:
        raise res
    assert 'No space for docker' in str(exec_info.value)
    assert 'tar.bz2: no space left' in str(exec_info.value)
예제 #3
0
def test_awsem_exception_not_enough_space_for_input():
    log = "sometext some text some other text " + \
          "download failed: s3://somebucket/somefile to ../../data1/input/somefile " + \
          "[Errno 28] No space left on device " + \
          "some other text some other text"
    eh = AWSEMErrorHandler()
    res = eh.parse_log(log)
    assert res
    with pytest.raises(AWSEMJobErrorException) as exec_info:
        raise res
    assert 'Not enough space for input files' in str(exec_info.value)
예제 #4
0
def test_awsem_exception_cwl_missing_input():
    log = "Workflow error, try again with --debug for more information:\n" + \
          "Invalid job input record:\n" + \
          "workflow_gatk-GenotypeGVCFs_plus_vcf-integrity-check.cwl:28:5: Missing required input parameter\n" + \
          "                                                     'chromosomes'\n" + \
          "some text some text"
    eh = AWSEMErrorHandler()
    res = eh.parse_log(log)
    assert res
    with pytest.raises(AWSEMJobErrorException) as exec_info:
        raise res
    assert 'CWL missing input' in str(exec_info.value)
    assert 'chromosomes' in str(exec_info.value)
예제 #5
0
def test_add_custom_errors2():
    log = "sometext some text some other text " + \
          "Exception: File is empty (1234567890abcdefg.regionPeak.gz) some other text"
    eh = AWSEMErrorHandler()
    eh.add_custom_errors([{
        "error_type":
        "No peak called",
        "pattern":
        "Exception: File is empty (.+.regionPeak.gz)"
    }])
    res = eh.parse_log(log)
    assert res
    with pytest.raises(AWSEMJobErrorException) as exec_info:
        raise res
    assert 'No peak called' in str(exec_info.value)
    assert '1234567890abcdefg.regionPeak.gz' in str(exec_info.value)
예제 #6
0
def test_add_custom_errors():
    log = "[M::mem_pestat] low and high boundaries for proper pairs: (1, 22)" + \
          "[mem_sam_pe] paired reads have different names: " + \
          "\"H3MVTCCXX:4:1101:1174861:0\", \"H3MVTCCXX:4:1101:743397:0\""
    eh = AWSEMErrorHandler()
    eh.add_custom_errors([{
        "error_type": "Unmatching pairs in fastq",
        "pattern": "paired reads have different names: .+",
        "multiline": False
    }])
    assert len(eh.ErrorList) == len(eh._ErrorList) + 1
    res = eh.parse_log(log)
    assert res
    with pytest.raises(AWSEMJobErrorException) as exec_info:
        raise res
    assert 'Unmatching pairs in fastq' in str(exec_info.value)
    assert 'H3MVTCCXX:4:1101:1174861:0' in str(exec_info.value)
예제 #7
0
def test_general_awsem_error_msg():
    eh = AWSEMErrorHandler()
    res = eh.general_awsem_error_msg('somejobid')
    assert res == 'Job encountered an error check log using tibanna log --job-id=somejobid [--sfn=stepfunction]'
예제 #8
0
def test_no_matching_error():
    log = 'some text some text no error just some text'
    eh = AWSEMErrorHandler()
    res = eh.parse_log(log)
    assert not res
예제 #9
0
def test_general_awsem_check_log_msg():
    eh = AWSEMErrorHandler()
    res = eh.general_awsem_check_log_msg('somejobid')
    assert res == 'check log using tibanna log --job-id=somejobid [--sfn=stepfunction]'