143 lines
4.4 KiB
C++
143 lines
4.4 KiB
C++
/*
|
|
* 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 <map>
|
|
|
|
#include <android-base/logging.h>
|
|
#include <getopt.h>
|
|
|
|
#include <android-base/logging.h>
|
|
#include "TcpServerForRunner.h"
|
|
|
|
static constexpr const char* kDefaultSpecDirPath = "/data/local/tmp/spec/";
|
|
static constexpr const char* kDefaultHalDriverPath32 = "./vts_hal_driver32";
|
|
static constexpr const char* kDefaultHalDriverPath64 = "./vts_hal_driver64";
|
|
static constexpr const char* kDefaultShellDriverPath32 = "./vts_shell_driver32";
|
|
static constexpr const char* kDefaultShellDriverPath64 = "./vts_shell_driver64";
|
|
|
|
using namespace std;
|
|
|
|
void ShowUsage() {
|
|
printf(
|
|
"Usage: vts_hal_agent [options]\n"
|
|
"--hal_driver_path_32: Set 32 bit hal driver binary path.\n"
|
|
"--hal_driver_path_32: Set 64 bit hal driver binary path.\n"
|
|
"--spec_dir: Set vts spec directory. \n"
|
|
"--shell_driver_path_32: Set 32 bit shell driver binary path\n"
|
|
"--shell_driver_path_64: Set 64 bit shell driver binary path\n"
|
|
"--log_severity: Set log severity\n"
|
|
"--help: Show help\n");
|
|
exit(1);
|
|
}
|
|
|
|
int main(int argc, char** argv) {
|
|
string hal_driver_path32 = kDefaultHalDriverPath32;
|
|
string hal_driver_path64 = kDefaultHalDriverPath64;
|
|
string shell_driver_path32 = kDefaultShellDriverPath32;
|
|
string shell_driver_path64 = kDefaultShellDriverPath64;
|
|
string spec_dir_path = kDefaultSpecDirPath;
|
|
string log_severity = "INFO";
|
|
|
|
enum {
|
|
HAL_DRIVER_PATH32 = 1000,
|
|
HAL_DRIVER_PATH64,
|
|
SHELL_DRIVER_PATH32,
|
|
SHELL_DRIVER_PATH64,
|
|
SPEC_DIR
|
|
};
|
|
|
|
const char* const short_opts = "hl:";
|
|
const option long_opts[] = {
|
|
{"help", no_argument, nullptr, 'h'},
|
|
{"hal_driver_path_32", required_argument, nullptr, HAL_DRIVER_PATH32},
|
|
{"hal_driver_path_64", required_argument, nullptr, HAL_DRIVER_PATH64},
|
|
{"shell_driver_path_32", required_argument, nullptr, SHELL_DRIVER_PATH32},
|
|
{"shell_driver_path_64", required_argument, nullptr, SHELL_DRIVER_PATH64},
|
|
{"spec_dir", required_argument, nullptr, SPEC_DIR},
|
|
{"log_severity", required_argument, nullptr, 'l'},
|
|
{nullptr, 0, nullptr, 0},
|
|
};
|
|
|
|
while (true) {
|
|
int opt = getopt_long(argc, argv, short_opts, long_opts, nullptr);
|
|
if (opt == -1) {
|
|
break;
|
|
}
|
|
|
|
switch (opt) {
|
|
case 'h':
|
|
case '?':
|
|
ShowUsage();
|
|
return 0;
|
|
case 'l': {
|
|
log_severity = string(optarg);
|
|
break;
|
|
}
|
|
case HAL_DRIVER_PATH32: {
|
|
hal_driver_path32 = string(optarg);
|
|
break;
|
|
}
|
|
case HAL_DRIVER_PATH64: {
|
|
hal_driver_path64 = string(optarg);
|
|
break;
|
|
}
|
|
case SHELL_DRIVER_PATH32: {
|
|
shell_driver_path32 = string(optarg);
|
|
break;
|
|
}
|
|
case SHELL_DRIVER_PATH64: {
|
|
shell_driver_path64 = string(optarg);
|
|
break;
|
|
}
|
|
case SPEC_DIR: {
|
|
spec_dir_path = string(optarg);
|
|
break;
|
|
}
|
|
default:
|
|
printf("getopt_long returned unexpected value: %d\n", opt);
|
|
return 2;
|
|
}
|
|
}
|
|
|
|
map<string, string> log_map = {
|
|
{"ERROR", "*:e"}, {"WARNING", "*:w"}, {"INFO", "*:i"}, {"DEBUG", "*:d"},
|
|
};
|
|
|
|
if (log_map.find(log_severity) != log_map.end()) {
|
|
setenv("ANDROID_LOG_TAGS", log_map[log_severity].c_str(), 1);
|
|
}
|
|
|
|
android::base::InitLogging(argv, android::base::StderrLogger);
|
|
|
|
LOG(INFO) << "|| VTS AGENT ||";
|
|
|
|
char* dir_path;
|
|
dir_path = (char*)malloc(strlen(argv[0]) + 1);
|
|
strcpy(dir_path, argv[0]);
|
|
for (int index = strlen(argv[0]) - 2; index >= 0; index--) {
|
|
if (dir_path[index] == '/') {
|
|
dir_path[index] = '\0';
|
|
break;
|
|
}
|
|
}
|
|
chdir(dir_path);
|
|
|
|
android::vts::StartTcpServerForRunner(
|
|
spec_dir_path.c_str(), hal_driver_path32.c_str(),
|
|
hal_driver_path64.c_str(), shell_driver_path32.c_str(),
|
|
shell_driver_path64.c_str());
|
|
return 0;
|
|
}
|