ITS: Report individual test result to CtsVerifier.
bug:181989757
Change-Id: Iaccb2cd9ce498480fa70605920d300778c570fd7
diff --git a/apps/CameraITS/tools/run_all_tests.py b/apps/CameraITS/tools/run_all_tests.py
index d2be8cf..2ecddf0 100644
--- a/apps/CameraITS/tools/run_all_tests.py
+++ b/apps/CameraITS/tools/run_all_tests.py
@@ -405,6 +405,8 @@
tot_pass = 0
for s in scenes:
test_params_content['scene'] = s
+ results[s]['TEST_STATUS'] = []
+
# unit is millisecond for execution time record in CtsVerifier
scene_start_time = int(round(time.time() * 1000))
scene_test_summary = f'Cam{camera_id} {s}' + '\n'
@@ -498,6 +500,8 @@
os.remove(MOBLY_TEST_SUMMARY_TXT_FILE)
logging.info('%s %s/%s', return_string, s, test)
+ test_name = test.split('/')[-1].split('.')[0]
+ results[s]['TEST_STATUS'].append({'test':test_name,'status':return_string.strip()})
msg_short = '%s %s' % (return_string, test)
scene_test_summary += msg_short + '\n'
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsTestActivity.java
index fb4a893..cd75746 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsTestActivity.java
@@ -38,6 +38,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.io.BufferedReader;
@@ -83,7 +84,7 @@
List<String> mToBeTestedCameraIds = null;
// Scenes
- private static final ArrayList<String> mSceneIds = new ArrayList<String> () { {
+ private static final ArrayList<String> mSceneIds = new ArrayList<String> () {{
add("scene0");
add("scene1_1");
add("scene1_2");
@@ -97,17 +98,147 @@
add("scene5");
add("scene_change");
add("sensor_fusion");
- } };
+ }};
// This must match scenes of HIDDEN_PHYSICAL_CAMERA_TESTS in run_all_tests.py
private static final ArrayList<String> mHiddenPhysicalCameraSceneIds =
- new ArrayList<String> () { {
+ new ArrayList<String> () {{
add("scene0");
add("scene1_1");
add("scene1_2");
add("scene2_a");
add("scene4");
add("sensor_fusion");
- }};
+ }};
+
+ private static final ArrayList<String> mScene0Tests = new ArrayList<String>() {{
+ add("test_burst_capture");
+ add("test_capture_result_dump");
+ add("test_gyro_bias");
+ add("test_jitter");
+ add("test_metadata");
+ add("test_param_sensitivity_burst");
+ add("test_read_write");
+ add("test_sensor_events");
+ add("test_solid_color_test_pattern");
+ add("test_test_patterns");
+ add("test_tonemap_curve");
+ add("test_unified_timestamps");
+ add("test_vibration_restriction");
+ }};
+
+ private static final ArrayList<String> mScene1_1Tests = new ArrayList<String>() {{
+ add("test_3a");
+ add("test_ae_af");
+ add("test_ae_precapture_trigger");
+ add("test_auto_vs_manual");
+ add("test_black_white");
+ add("test_burst_sameness_manual");
+ add("test_capture_result");
+ add("test_crop_region_raw");
+ add("test_crop_regions");
+ add("test_dng_noise_model");
+ add("test_ev_compensation_advanced");
+ add("test_ev_compensation_basic");
+ add("test_exposure");
+ add("test_jpeg");
+ add("test_latching");
+ add("test_linearity");
+ add("test_locked_burst");
+ add("test_multi_camera_match");
+ add("test_param_color_correction");
+ add("test_param_exposure_time");
+ add("test_param_flash_mode");
+ add("test_param_noise_reduction");
+ }};
+
+ private static final ArrayList<String> mScene1_2Tests = new ArrayList<String>() {{
+ add("test_param_sensitivity");
+ add("test_param_shading_mode");
+ add("test_param_tonemap_mode");
+ add("test_post_raw_sensitivity_boost");
+ add("test_raw_exposure");
+ add("test_raw_sensitivity_burst");
+ add("test_raw_sensitivity");
+ add("test_reprocess_noise_reduction");
+ add("test_tonemap_sequence");
+ add("test_yuv_jpeg_all");
+ add("test_yuv_plus_dng");
+ add("test_yuv_plus_jpeg");
+ add("test_yuv_plus_raw");
+ add("test_yuv_plus_raw10");
+ add("test_yuv_plus_raw12");
+ }};
+
+ private static final ArrayList<String> mScene2_aTests = new ArrayList<String>() {{
+ add("test_effects");
+ add("test_faces");
+ add("test_format_combos");
+ add("test_jpeg_quality");
+ add("test_num_faces");
+ }};
+
+ private static final ArrayList<String> mScene2_bTests = new ArrayList<String>() {{
+ add("test_auto_per_frame_control");
+ add("test_num_faces");
+ }};
+
+ private static final ArrayList<String> mScene2_cTests = new ArrayList<String>() {{
+ add("test_num_faces");
+ }};
+
+ private static final ArrayList<String> mScene2_dTests = new ArrayList<String>() {{
+ add("test_num_faces");
+ }};
+
+ private static final ArrayList<String> mScene2_eTests = new ArrayList<String>() {{
+ add("test_num_faces");
+ add("test_continuous_picture");
+ }};
+
+ private static final ArrayList<String> mScene3Tests = new ArrayList<String>() {{
+ add("test_3a_consistency");
+ add("test_edge_enhancement");
+ add("test_flip_mirror");
+ add("test_lens_movement_reporting");
+ add("test_lens_position");
+ add("test_reprocess_edge_enhancement");
+ }};
+
+ private static final ArrayList<String> mScene4Tests = new ArrayList<String>() {{
+ add("test_aspect_ratio_and_crop");
+ add("test_multi_camera_alignment");
+ }};
+
+ private static final ArrayList<String> mScene5Tests = new ArrayList<String>() {{
+ add("test_lens_shading_and_color_uniformity");
+ }};
+
+ private static final ArrayList<String> mSceneChangeTests = new ArrayList<String>() {{
+ add("test_scene_change");
+ }};
+
+ private static final ArrayList<String> mSensorFusionTests = new ArrayList<String>() {{
+ add("test_multi_camera_frame_sync");
+ add("test_sensor_fusion");
+ }};
+
+ private static final HashMap<String,ArrayList<String>> mSceneTestMap =
+ new HashMap<String,ArrayList<String>>() {{
+ put("scene0", mScene0Tests);
+ put("scene1_1",mScene1_1Tests );
+ put("scene1_2", mScene1_2Tests);
+ put("scene2_a",mScene2_aTests);
+ put("scene2_b",mScene2_bTests);
+ put("scene2_c",mScene2_cTests);
+ put("scene2_d", mScene2_dTests);
+ put("scene2_e",mScene2_eTests);
+ put("scene3",mScene3Tests);
+ put("scene4",mScene4Tests);
+ put("scene5",mScene5Tests);
+ put("scene_change",mSceneChangeTests);
+ put("sensor_fusion",mSensorFusionTests);
+ }};
+
// TODO: cache the following in saved bundle
private Set<ResultKey> mAllScenes = null;
@@ -239,7 +370,36 @@
// Update test execution results
for (String scene : scenes) {
+ HashMap<String, String> executedTests = new HashMap<>();
JSONObject sceneResult = jsonResults.getJSONObject(scene);
+ Log.v(TAG, sceneResult.toString());
+ if(sceneResult.has("TEST_STATUS")){
+ JSONArray testResults = sceneResult.getJSONArray("TEST_STATUS");
+ for(int i=0;i < testResults.length();i++){
+ JSONObject obj = (JSONObject)testResults.get(i);
+ String test_name = obj.get("test").toString();
+ String test_status = obj.get("status").toString();
+ executedTests.put(test_name,test_status);
+ }
+ Log.v(TAG,"Individual test results are:" + executedTests.toString());
+ for (Map.Entry<String,String> entry : executedTests.entrySet()){
+ int testResult;
+ String test_name,status;
+ test_name = entry.getKey();
+ status = entry.getValue();
+ if(status.equals("PASS")) {
+ testResult = TestResult.TEST_RESULT_PASSED;
+ } else if (status.equals("SKIP")) {
+ testResult = TestResult.TEST_RESULT_NOT_EXECUTED;
+ } else {
+ testResult = TestResult.TEST_RESULT_FAILED;
+ }
+ setTestResult(testId(cameraId, scene) + "_" + test_name, testResult);
+ Log.v(TAG, "setTestResult for " +
+ testId(cameraId, scene) + "_" + test_name + ": " + testResult);
+ }
+
+ }
String result = sceneResult.getString("result");
if (result == null) {
Log.e(TAG, "Result for " + scene + " is null");
@@ -405,6 +565,13 @@
adapter.add(new DialogTestListItem(this,
testTitle(cam, scene),
testId(cam, scene)));
+ if(mSceneTestMap.containsKey(scene)){
+ ArrayList<String> testList = mSceneTestMap.get(scene);
+ for(String test_name : testList){
+ adapter.add(new DialogTestListItem(
+ this,test_name,testId(cam, scene) + "_" + test_name));
+ }
+ }
}
}
}