/* * Copyright 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "poc_test.h" #include <getopt.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <iostream> #include <sstream> using std::cout; using std::cerr; using std::endl; using std::map; using std::string; static struct option long_options[] = { {"device_model", required_argument, 0, 'd'}, {"params", required_argument, 0, 'p'} }; static DeviceModel TranslateDeviceModel(const char *model_name) { DeviceModel device_model; if (!strcmp("Nexus 5", model_name)) { device_model = NEXUS_5; } else if (!strcmp("Nexus 5X", model_name)) { device_model = NEXUS_5X; } else if (!strcmp("Nexus 6", model_name)) { device_model = NEXUS_6; } else if (!strcmp("Nexus 6P", model_name)) { device_model = NEXUS_6P; } else if (!strcmp("Pixel", model_name)) { device_model = PIXEL; } else if (!strcmp("Pixel XL", model_name)) { device_model = PIXEL_XL; } else { device_model = OTHER; } return device_model; } static map<string, string> ExtractParams(const char *test_params) { map<string, string> params; string input(test_params); std::istringstream iss(input); string key_value; while(std::getline(iss, key_value, ',')) { size_t delim = key_value.find('='); if (delim == string::npos) { cerr << "Missing '=' delimiter.\n"; exit(POC_TEST_SKIP); } string key = key_value.substr(0, delim); string value = key_value.substr(delim + 1); params[key] = value; } return params; } VtsHostInput ParseVtsHostFlags(int argc, char *argv[]) { VtsHostInput host_input; int opt = 0; int index = 0; while ((opt = getopt_long_only(argc, argv, "", long_options, &index)) != -1) { switch(opt) { case 'd': host_input.device_model = TranslateDeviceModel(optarg); break; case 'p': host_input.params = ExtractParams(optarg); break; default: cerr << "Wrong parameters.\n"; exit(POC_TEST_SKIP); } } return host_input; }