Untitled
unknown
plain_text
a year ago
17 kB
11
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