Beispiel #1
0
def format_log_msg(logObj):
    """
    Using the log object, format the meta information from the object into a meaningful
    message to the user.
    """
    
    msg = ""
    
    # Protocol imported from Version Control System Successfully
    if logObj.message_type == "PRI":
        testSuffix = ""
        caseSuffix = ""
        testCount = logObj.meta.split(",")[0]
        caseCount = logObj.meta.split(",")[1]
        
        if int(testCount) > 1: testSuffix = "s"
        if int(caseCount) > 1: caseSuffix = "s"
         
        msg = "Protocol imported from the VCS with "+testCount+" test"+testSuffix+" and "+caseCount+" case"+caseSuffix+"."

    # Protocol Refresh 
    elif logObj.message_type == "PRF":
        newVersion, oldVersion = logObj.meta.split(',')
        msg = "Protocol refreshed from %s to %s." % (oldVersion, newVersion)
        
    # Protocol initially assigned to gNumber
    elif logObj.message_type == "POA":
        msg = "Protocol owner assigned to %s." % convert_gnumber_link(logObj.meta)

    # Protocol Inactivated
    elif logObj.message_type == "PRN":
        msg = "Protocol deactivated by %s." % convert_gnumber_link(logObj.meta)
        
    # Protocol Reactivation
    elif logObj.message_type == "PRR":
        msg = "Protocol reactivated by %s." % convert_gnumber_link(logObj.meta)

    # Protocol has been reassigned
    elif logObj.message_type == "POC":
        newOwner = logObj.meta.split(',')[0]
        oldOwner = logObj.meta.split(',')[1]
        msg = "Protocol ownership reassigned to %s from %s." % ( convert_gnumber_link(newOwner), convert_gnumber_link(oldOwner) )

    # Protocol state has been updated
    elif logObj.message_type == "PSU":
        newState = logObj.meta.split(',')[0]
        oldState = logObj.meta.split(',')[1]
        if oldState == "None":
            msg = "Protocol state set to %s." % newState
        else:
            msg = "Protocol state changed from %s to %s." % (oldState, newState)

    # Case Option "PRM" was modified
    elif logObj.message_type == "COP":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s value for PRM equipment was changed to %s." % (name, value)
        
    # Case Option "Machsim" was modified
    elif logObj.message_type == "COM":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s value for Machsim equipment was changed to %s." % (name, value)
    
    # Case Option "shield_box" was modified
    elif logObj.message_type == "COS":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s value for Shield box equipment was changed to %s." % (name, value)

    # Case Option "PG Type" was modified
    elif logObj.message_type == "CPG":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s pulse generator type equipment was changed to %s." % (name, value)

    # Case Option "Sensor Type" was modified
    elif logObj.message_type == "CST":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s external sensor type equipment was changed to %s." % (name, value)        
        
    # Case Option "Environment Type" was modified
    elif logObj.message_type == "CET":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s testing environment type was changed to %s." % (name, value)        
        
    # Case Option "Execution Type" was modified
    elif logObj.message_type == "CEE":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s test execution type was changed to %s." % (name, value)        
        
    # Case Option "Automation state" was modified
    elif logObj.message_type == "CAS":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s test automation development state was changed to %s." % (name, value)        
        
    # Case Option "SVMachsim" was modified
    elif logObj.message_type == "CSV":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s value for SVMachsim equipment was changed to %s." % (name, value)
        
    # Case Option "Teltone" was modified
    elif logObj.message_type == "CTE":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s value for Teltone equipment was changed to %s." % (name, value)
        
    # Case Option "Telephone" was modified
    elif logObj.message_type == "CTL":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s value for telephone equipment was changed to %s." % (name, value)
    
    # Planned Execution was added
    elif logObj.message_type == "PEA":
        name = logObj.meta.split(',')[0]
        id = logObj.meta.split(',')[1]
        region = logObj.meta.split(',')[2]
        pg_model = logObj.meta.split(',')[3]
        comm_model = logObj.meta.split(',')[4]
        browser = logObj.meta.split(',')[5]
        if browser == BROWSER_OPTIONS[0][1]:
            browser = ''
        
        # Country was added later, so not all log messages of this type have it
        try:
            country = logObj.meta.split(',')[6]
            msg = 'Test List item for %s added: %s (%s), %s, %s, %s' % (create_planned_exec_created_case_link(logObj.meta), region, country, pg_model, comm_model, browser)
        except IndexError:
            msg = 'Test List item for %s added: %s, %s, %s, %s' % (create_planned_exec_created_case_link(logObj.meta), region, pg_model, comm_model, browser)        

    # Case Option "Centricity" was modified
    elif logObj.message_type == "CCT":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s testing centricity was changed to %s." % (name, value)                
        
    # Case Option "Comm Connection" was modified
    elif logObj.message_type == "CCC":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s communicator connection type was changed to %s." % (name, value)                
        
    # Test Log Parsing Success
    elif logObj.message_type == "TLS":        
        # Get individual meta data
        protocol_name = logObj.meta.split(',')[0]
        case_name = logObj.meta.split(',')[1]
        test_name = logObj.meta.split(',')[2]
        pg_model = logObj.meta.split(',')[3]
        external = logObj.meta.split(',')[4]
        browser = logObj.meta.split(',')[5]
        testplan = logObj.meta.split(',')[6].strip()

        msg = 'Successfully parsed a test log (%s) for %s, %s, %s, with pg = %s, external = %s, and browser = %s' % (convert_planned_exec_link(testplan), protocol_name, test_name, case_name,  pg_model, external, browser)
        
    # Test Log Parsing Failure
    elif logObj.message_type == "TLF":
        msg = "Log Parsing Failure"        

    # Test Log Parsing Incomplete
    elif logObj.message_type == "TLI":
        # Get individual meta data
        protocol_name = logObj.meta.split(',')[0]
        case_name = logObj.meta.split(',')[1]
        test_name = logObj.meta.split(',')[2]

        msg = "<div id='view_details'>Incomplete Log File: " \
            "<div title='<p>Test: <b>%s</b></p>" \
            "<p>Case: <b>%s</b></p>'" \
            " style='display:inline;'>Mouse over to view details.</div>" \
            % (test_name, case_name)
        
    # Case has been reassigned
    elif logObj.message_type == "COC":
        case = logObj.meta.split(',')[0]
        newOwner = logObj.meta.split(',')[1]
        oldOwner = logObj.meta.split(',')[2]
        msg = "%s ownership reassigned to %s from %s." % ( case, convert_gnumber_link(newOwner), convert_gnumber_link(oldOwner) )
        
    # Case automation owner has been assigned
    elif logObj.message_type == "CAO":
        case = logObj.meta.split(',')[0]
        newOwner = logObj.meta.split(',')[1]
        msg = "%s automation ownership assigned to %s." % ( case, convert_gnumber_link(newOwner) )

        
    # Planned Execution was deleted
    elif logObj.message_type == "PED":
        name = logObj.meta.split(',')[0]
        id = logObj.meta.split(',')[1]
        region = logObj.meta.split(',')[2]
        pg_model = logObj.meta.split(',')[3]
        comm_model = logObj.meta.split(',')[4]
        browser = logObj.meta.split(',')[5]
        msg = 'Test List item for %s has been deleted: %s, %s, %s, %s' % (create_planned_exec_created_case_link(logObj.meta), region, pg_model, comm_model, browser)
        
    # Planned Execution was deactivated
    elif logObj.message_type == "PDD":
        name = logObj.meta.split(',')[0]
        id = logObj.meta.split(',')[1]
        region = logObj.meta.split(',')[2]
        pg_model = logObj.meta.split(',')[3]
        comm_model = logObj.meta.split(',')[4]
        browser = logObj.meta.split(',')[5]
        msg = 'Test List item for %s has been deactivated: %s, %s, %s, %s' % (create_planned_exec_created_case_link(logObj.meta), region, pg_model, comm_model, browser)

    # Case Option "USB Relay Type" was modified
    elif logObj.message_type == "CUT":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s external USB relay type equipment was changed to %s." % (name, value)        

    # Case Option "Comm Cellular Type" was modified
    elif logObj.message_type == "CCL":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s external cellular type equipment was changed to %s." % (name, value)        

    # Case Option "Comm Mode" was modified
    elif logObj.message_type == "CCM":
        name = logObj.meta.split(',')[0]
        value = logObj.meta.split(',')[1]
        msg = "%s external mode was changed to %s." % (name, value)    
        
    # Message is not defined
    else:
        msg = "This message cannot be displayed."
        
    return msg 
Beispiel #2
0
def populateTestListTable_ajax(request,cid):
    """
    Send back the planned_exec fields for the test list table in the case detail/test list tab
    Inputs:
        cid - case_id for the requested case
    """    
    try:
        test_list = Planned_Exec.objects.filter(case=cid).select_related('planned_for','case','plm')
    except Planned_Exec.DoesNotExist:
        msg = 'Test List does not exist for this case'
    except:
        msg = 'Unknown Error'

    # Get count of logs for each planned execution
    logCount = Counter()
    for log in TestLog.objects.filter(case=cid):
        logCount[log.testplan_id] += 1
        
    # Get latest testlogs for this case
    latestLogs = {log.planned_exec_id : log.testlog for log in LatestTestLog.objects.filter(planned_exec__case=cid).select_related('testlog')}
    
    release = Case.objects.get(id=cid).protocol.release_id
    schedule = ProjectSchedule.getProjScheduleDict(release)
            
    # dataTables plugin requires only a JSON-formatted list named "aaData" - http://www.datatables.net/examples/data_sources/ajax.html
    dataTables = {'aaData': [], 'status': False}

    # Iterate through the test list to supply the rows
    for test in test_list:

        # Create the checkbox
        tlbox = '''<input type="checkbox" name="delete_select_%s" id="id_delete_select" />''' % str(test.id)
        if test.planned_for:
            planned_for = test.planned_for.name
        else:
            planned_for = "None"
        
        # Create the regression options/edit link if fully automated
        # TODO: This does not reflect the database values if a user has switched from FA to something else after setting regression options. 
        # Originally found in RTC 60655
        if test.case.exec_type == 'FA':
            regression_column = test.get_regression_display()
        else:
            regression_column = "N/A"

        # Handle the deactivated planned executions a little differently
        if test.end_date:
            dataTables['aaData'].append([tlbox,
                                         regression_column,
                                         test.getDataTablesPLMBrowserStr(browser=True),
                                         planned_for,
                                         convert_gnumber_link(test.owner),
                                         "Deactivated", 
                                         "N/A",
                                         "N/A", 
                                         "N/A", 
                                         convert_planned_exec_link(test.id),
                                         ""])
            
        elif test.exec_state == "NR":
            dataTables['aaData'].append([tlbox,
                                         regression_column,
                                         test.getDataTablesPLMBrowserStr(browser=True),
                                         planned_for,
                                         convert_gnumber_link(test.owner),
                                         test.get_exec_state_display(), 
                                         "N/A",
                                         "N/A", 
                                         "N/A", 
                                         convert_planned_exec_link(test.id),
                                         "zActivePE"])
        else:
            # Get the build and phase strings
            build = str(latestLogs[test.id].build)
            testDate = latestLogs[test.id].test_starttime.date()
            phase_str = schedule.get(testDate.toordinal(), 'None')

            dataTables['aaData'].append([tlbox, 
                                         regression_column,
                                         test.getDataTablesPLMBrowserStr(browser=True),
                                         planned_for,
                                         convert_gnumber_link(test.owner),
                                         test.get_exec_state_display(), 
                                         logCount[test.id],
                                         latestLogs[test.id].test_starttime.strftime("%m/%d/%y %H:%M:%S"), 
                                         build+" / "+phase_str, 
                                         convert_planned_exec_link(test.id),
                                         "zActivePE"])

    dataTables['status'] = True    
    return JSONHttpResponse(dataTables)