Untitled
unknown
plain_text
a year ago
17 kB
6
Indexable
function extractRemoteMessage(data, result, index, retryCount) { middleware.notifyUser('Fetching screen data'); let asrLat = ""; let nmtLat = ""; return new Promise((resolve, reject) => { let rs = ""; try { rs = result .split("INTERPRETER :")[1] .split("INSTRUMENTATION_STATUS_CODE:")[0] .replace("]", ""); } catch (error) { Log.debug(TAG, "Fetch text was empty " + error); rs = ""; } let excel_obj = {}; let nfrDetails = {}; let tc = index + 1; var asr = ""; var translation = ""; let wordCount = 0, wordsFailed = 0, wordRecognitionRate = 0, testCaseResult = 0, wordsHighlight = "", remarks = "", triageSummary = ""; var expectedTranslation = "", autoDetectLanguage = "", autoDetectLanguageScore = "", similarityScore = ""; if (rs.includes("::")) { if (rs.split("::").length > 1) { asr = rs.split("::")[1].trim(); translation = rs.split("::")[0].trim(); } if (rs.split("::").length == 1) { translation = rs.split("::")[0].trim(); } if (config.retry == "TRUE" && retryCount <= parseInt(config.retryCount) && (asr == "" || !helper.checkASR(data.conversation, asr))) { console.log("RETRY " + retryCount); resolve("RETRY"); } else { //for nfr info try { Log.debug(TAG, 'Getting latency info from this file '); logmonitor.stop_log_monitor().then((logfilePath) => { Log.debug(TAG, 'Getting latency info from this file ' + logfilePath); //ASR nfr.calculateLatency(logfilePath, keyStrings.asr_start_log, keyStrings.asr_end_log, "ASR").then((asrLatency) => { Log.debug(TAG, "ASR ----------- " + asrLatency); asrLat = asrLatency; nfr.calculateLatency(logfilePath, keyStrings.int_nmt_start_log, keyStrings.int_nmt_end_log, "NMT").then((lastOccurrence) => { Log.debug(TAG, "NMT ---------- " + lastOccurrence); nmtLat = lastOccurrence; nfr.getMemInfo(data.conversation, config.testDeviceLanguage).then((memObj) => { memObj.asr_latency = asrLat; memObj.nmt_latency = nmtLat; nfrDetails = { ...memObj }; Log.debug(TAG, "NFRrrrrrrrrrrrrrrrrrrrrrrrrrrr " + JSON.stringify(memObj)) let data_test = data.conversation + "::" + memObj.native_heap_size + "::" + memObj.native_heap_alloc + "::" + memObj.dalvik_heap_size + "::" + memObj.dalvik_heap_alloc + "::" + asrLat + "::" + nmtLat + "::" + memObj.battery + "::" + memObj.thermal + "\n"; Log.debug(TAG, "MEMORY INFO==========" + data_test); fs1.appendFile( path.join(outputPath, memory_report_name), data_test ); let input_formated = compare_util.get_formated_data(data.conversation); let asr_formated = compare_util.get_formated_data(asr); let [insertedCount, deletedCount, replacedCount, insertedArray, deletedArray, replacedArray, wordsHighlight, triageCategories] = compare_util.get_comparison(input_formated, asr_formated, helper.isCharBased(config.testDeviceLanguage)); wordCount = data.conversation.split(" ").length; wordsFailed = deletedCount + replacedCount; if (wordsFailed > 0) asrFailCases++; else asrPassCases++; wordRecognitionRate = (((wordCount - wordsFailed) / wordCount) * 100).toFixed(2); commonVariable.setWrr(wordRecognitionRate); testCaseResult = (wordsFailed + insertedCount) === 0 ? 1 : 0; commonVariable.setSrr(testCaseResult * 100); if (insertedArray.length > 0) remarks += "\nInserted -> " + insertedArray.join(" | "); if (deletedArray.length > 0) remarks += "\nDeleted -> " + deletedArray.join(" | "); if (replacedArray.length > 0) remarks += "\nReplaced -> " + replacedArray.join(" | "); remarks = remarks.trim(); if (remarks.length == 0) remarks = "NA"; triageSummary = triageCategories.join(" | "); translate.detect_language(translation).then((res) => { autoDetectLanguage = res.detected_lang; autoDetectLanguageScore = res.lang_score; let fromLang = config.testDeviceLanguage.substring(0, 2).toLowerCase(); let toLang = config.supportDeviceLanguage.substring(0, 2).toLowerCase(); /** * This function translates the given ASR text into the specified language using either the Native or Google translation API. * @param {string} asr - The ASR text to be translated. * @param {string} lang - The language code to translate the ASR text into. * @param {string} translationOption - The translation API to use, either "Native" or "Google". * @return {Promise} - A promise that resolves when the translation is complete, or rejects if there is an error. */ const translationPromise = new Promise((resolve, reject) => { if (translationOption == "Libre") { Log.debug(TAG, "Inside Libre Translate") translate.get_translate(asr, toLang).then((res) => { Log.debug(TAG, "Expected translation from AI Model : " + res); resolve(res); }).catch(reject); } else if (translationOption == "Google") { Log.debug(TAG, "Inside Google Translate"); let source_language, target_language; if(fromLang == "zh") { source_language = "zh-CN" } else { source_language = fromLang; } if(toLang == "zh"){ target_language = "zh-CN" } else { target_language = toLang; } translate.googleTranslate(asr,source_language,target_language).then((res) => { Log.debug(TAG, "Expected translation from AI Model : " + res.data); resolve(res.data); }).catch(reject); } else { reject(new Error("Invalid translation option")); } }); translationPromise.then((res) => { expectedTranslation = res; similarCheck.get_similarity(expectedTranslation, translation).then((res) => { if (res == "NA") { similarityScore = "NA"; } else { similarityScore = (res * 100).toFixed(2); if (similarityScore > 90) nmtHighCases++; else if (similarityScore > 30) nmtMidCases++; else nmtLowCases++; } excel_obj = { tcno: data.TC_NO, input: data.conversation, wordCount: wordCount, asr: asr, wordsHighlight: wordsHighlight, wordsFailed: wordsFailed, wordRecognitionRate: wordRecognitionRate, testCaseResult: testCaseResult, remarks: remarks, triageSummary: triageSummary, translation: translation, expectedTranslation: expectedTranslation, autoDetectLanguage: autoDetectLanguage, autoDetectLanguageScore: autoDetectLanguageScore, similarityScore: similarityScore, ...nfrDetails }; let intermediate_result = "\n" + data.TC_NO + "::" + data.conversation + "::" + wordCount + "::" + asr + "::" + wordsHighlight + "::" + wordsFailed + "::" + wordRecognitionRate + "::" + remarks + "::" + triageSummary + "::" + translation + "::" + expectedTranslation + "::" + autoDetectLanguage + "::" + autoDetectLanguageScore + "::" + similarityScore; Log.debug(TAG, "RESULT>>>>>>>>>>>>>>>>>>>>>>>> " + intermediate_result); fs1.appendFile( path.join(outputPath, intermediate_report_name), intermediate_result ); excel_obj.testType = 'Interpreter'; result_table.insert_new_row(); result_table.update_table_results(excel_obj); jsonFile.push(excel_obj); fs.writeFileSync(path.join(__dirname, '..', 'test_data', 'output', 'out1.json'), JSON.stringify(jsonFile, null, 2)); // excel_obj.totalCount = totalTestCases; front_end_data_updater.update_summary_table_gui(excel_obj, totalTestCases); front_end_data_updater.update_execution_count_gui(tc, totalTestCases); excelObj.push(excel_obj); Log.debug(TAG, "Final excel object is " + JSON.stringify(excelObj)); Log.debug(TAG, "All details " + JSON.stringify(nfr.getNFRValuesforUI())); middleware.updateNfr(nfr.getNFRValuesforUI()); resolve(excel_obj); }).catch((error) => { Log.debug(TAG, error); }); }).catch((error) => { Log.debug(TAG, error); }); }).catch((error) => { Log.debug(TAG, error); }); }); }) }).catch(error => { Log.debug(TAG, "Error occurred " + error); }); }); } catch (error) { Log.debug(TAG, "Error occurred while Getting latency " + error); } } } else { try { Log.debug(TAG, 'Getting latency info from this file '); logmonitor.stop_log_monitor().then((logfilePath) => { Log.debug(TAG, 'Getting latency info from this file ' + logfilePath); //ASR nfr.calculateLatency(logfilePath, keyStrings.asr_start_log, keyStrings.asr_end_log, "ASR").then((asrLatency) => { Log.debug(TAG, "ASR ----------- " + asrLatency); asrLat = asrLatency; nfr.calculateLatency(logfilePath, keyStrings.int_nmt_start_log, keyStrings.int_nmt_end_log, "NMT").then((lastOccurrence) => { Log.debug(TAG, "NMT ---------- " + lastOccurrence); nmtLat = lastOccurrence; nfr.getMemInfo(asr, config.testDeviceLanguage).then((memObj) => { memObj.asr_latency = asrLat; memObj.nmt_latency = nmtLat; nfrDetails = { ...memObj }; Log.debug(TAG, "NFRrrrrrrrrrrrrrrrrrrrrrrrrrrr " + JSON.stringify(memObj)) let data_test = data.conversation + "::" + memObj.native_heap_size + "::" + memObj.native_heap_alloc + "::" + memObj.dalvik_heap_size + "::" + memObj.dalvik_heap_alloc + "::" + asrLat + "::" + nmtLat + "::" + memObj.battery + "::" + memObj.thermal + "\n"; Log.debug(TAG, "MEMORY INFO==========" + data_test); fs1.appendFile( path.join(outputPath, memory_report_name), data_test ); excel_obj = { tcno: data.TC_NO, input: data.conversation, wordCount: wordCount, asr: asr, wordsHighlight: wordsHighlight, wordsFailed: wordsFailed, wordRecognitionRate: wordRecognitionRate, testCaseResult: testCaseResult, remarks: remarks, triageSummary: triageSummary, translation: translation, expectedTranslation: expectedTranslation, autoDetectLanguage: autoDetectLanguage, autoDetectLanguageScore: autoDetectLanguageScore, similarityScore: similarityScore, ...nfrDetails }; let intermediate_result = "\n" + data.TC_NO + "::" + data.conversation + "::" + wordCount + "::" + asr + "::" + wordsHighlight + "::" + wordsFailed + "::" + wordRecognitionRate + "::" + remarks + "::" + triageSummary + "::" + translation + "::" + expectedTranslation + "::" + autoDetectLanguage + "::" + autoDetectLanguageScore + "::" + similarityScore; Log.debug(TAG, "RESULT>>>>>>>>>>>>>>>>>>>>>>>> " + intermediate_result); fs1.appendFile( path.join(outputPath, intermediate_report_name), intermediate_result ); excelObj.push(excel_obj); Log.debug(TAG, "Final excel object is " + JSON.stringify(excelObj)); resolve(excel_obj); }); }) }).catch(error => { Log.debug(TAG, "Error occurred " + error); }); }); } catch (error) { Log.debug(TAG, "Error occurred while Getting latency " + error); } } }); } function extractAndFetchMsg(data, index, retryCount) { if (index >= data.length || execution_util.get_execution_tracker() == 'STOPPED') { writeExcel(excelObj); execution_util.stop_execution(config); middleware.notifyUser('Execution Completed...'); return Promise.resolve("done"); } return new Promise((resolve, reject) => { let text = data[index].conversation; helper .createAudioFile(text, audioRepo, config.testDeviceLanguage) .then((dataObj) => { if ("error" in dataObj) { Log.debug(TAG, dataObj.error); if (dataObj.error.includes("Text given is empty") || dataObj.error.includes("Audio file is corrupted")) { extractRemoteMessage(data[index], "", index, retryCount).then((result) => { // extractAndFetchMsg(data, index + 1,1).then(resolve); if (result == "RETRY") { extractAndFetchMsg( data, index, retryCount + 1 ).then(resolve); } else extractAndFetchMsg( data, index + 1, 1 ).then(resolve); }); } } else { let m4aDuration = 2000; let mainCmd = `${path.join(ffplayPath, ffplayExecutable)}`; if (!playAudioCmd.includes("-autoexit")) { mainCmd = "adb"; m4aDuration = dataObj.duration + 3000; } helper .execute_and_monitor_uiauto_process( "adb", testOpenInterpreter, false ) .then(() => { helper .execute_and_monitor_uiauto_process( "adb", ["-s", currentDevice, "shell", "input", "keyevent 85"], false ) .then(() => { helper .execute_and_monitor_uiauto_process( "adb", startNstopRecording, false ) .then(() => { // middleware.changeAudioImage(); middleware.notifyUser('Audio started playing'); middleware.displayGifInPlayer1(); Log.debug(TAG, "Duration is " + m4aDuration); helper .execute_and_monitor_uiauto_process( mainCmd, playAudioCmd, false ) .then(() => { // middleware.changeAudioImage(); middleware.notifyUser('Completed playing audio'); middleware.displayGifInPlayer1(); helper.sleep(m4aDuration).then(() => { helper .execute_and_monitor_uiauto_process( "adb", [ "-s", currentDevice, "shell", "input", "keyevent 85", ], false ) .then(() => { helper.sleep(2000).then(() => { helper .execute_and_monitor_uiauto_process( "adb", getInterpreterText, true ) .then((fetchData) => { extractRemoteMessage( data[index], fetchData, index, retryCount ).then((result) => { // console.log(JSON.stringify(result)); if (result == "RETRY") { extractAndFetchMsg( data, index, retryCount + 1 ).then(resolve); } else extractAndFetchMsg( data, index + 1, 1 ).then(resolve); }); }); }); }); }); }); }); }); }); } }); }); }
Editor is loading...
Leave a Comment