blob: ffe36c5cf2fcb07d75298f0823d435cb03ddfaac [file] [log] [blame]
/*
* 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;
}