def collectJiraMetrics():
    global cachedMetrics
    global serviceIsReady
    #metricsStrReplaced =""

    start = datetime.now()
    logger.info('Start collecting metrics...')
    metrics_descriptions_file = config.get('jira', 'metrics_descriptions_file')
    try:
        jiraCollector = JiraCollector(metrics_descriptions_file)
        # Collect all jira metrics
        metricsDict = jiraCollector.collect()
    except:
        logger.exception("Error while trying to collect metrics")
        raise

    # Convert to metric format
    metricsStr = stringifyJsonMetric(str(metricsDict))
    end = datetime.now()

    # Add metrics about this run
    metricsStr = addInternalMetrics(metricsStr, start, end, len(metricsDict))

    # Update cached metrics
    cachedMetrics = metricsStr
    logger.info("Metrics collected OK")

    serviceIsReady = True
def test_collect_metrics_converts_jsonfile_to_correct_jql(mock_query_jira):
    mock_query_jira.return_value ="42"
    
    jc = JiraCollector("simple_test.json")    
    
    result = jc.collect()
    assert mock_query_jira.call_count == 2
    mock_query_jira.assert_any_call('project = BIP AND status IN ("10002")', 0)
    mock_query_jira.assert_any_call('project = DAPLA AND status IN ("10002")', 0)
def test_collect_metrics_converts_jql_results_to_correct_dictionary(mock_query_jira):
    mock_query_jira.return_value ="42"
    
    jc = JiraCollector("simple_test.json")    
    
    result = jc.collect()
    expectedMetricsDict ={
        "jira_total_done{project_name=\"BIP\"}":"42",
        "jira_total_done{project_name=\"DAPLA\"}":"42"
    }
    assert result ==  expectedMetricsDict