| /* |
| * Copyright (C) 2012 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 <stdio.h> |
| |
| #include <utils/String8.h> |
| |
| #include <UniquePtr.h> |
| |
| #include "Log.h" |
| #include "Report.h" |
| #include "task/TaskGeneric.h" |
| #include "task/ModelBuilder.h" |
| |
| // For flushing report and log before exiting |
| class CleanupStatics { |
| public: |
| |
| CleanupStatics() {}; |
| ~CleanupStatics() { |
| Log::Finalize(); |
| Report::Finalize(); |
| } |
| }; |
| |
| int main(int argc, char *argv[]) |
| { |
| if (argc < 2) { |
| fprintf(stderr, "%s [-llog_level] test_xml\n", argv[0]); |
| return 1; |
| } |
| int logLevel = 3; |
| int argCurrent = 1; |
| if (strncmp(argv[argCurrent], "-l", 2) == 0) { |
| logLevel = atoi(argv[argCurrent] + 2); |
| argCurrent++; |
| } |
| if (argCurrent == argc) { |
| fprintf(stderr, "wrong arguments"); |
| return 1; |
| } |
| android::String8 xmlFile(argv[argCurrent]); |
| |
| android::String8 dirName; |
| if (!FileUtil::prepare(dirName)) { |
| fprintf(stderr, "cannot prepare report dir"); |
| return 1; |
| } |
| |
| UniquePtr<CleanupStatics> staticStuffs(new CleanupStatics()); |
| if (Log::Instance(dirName.string()) == NULL) { |
| fprintf(stderr, "cannot create Log"); |
| return 1; |
| } |
| Log::Instance()->setLogLevel((Log::LogLevel)logLevel); |
| // Log can be used from here |
| if (Report::Instance(dirName.string()) == NULL) { |
| |
| LOGE("cannot create log"); |
| return 1; |
| } |
| |
| ModelBuilder modelBuilder; |
| UniquePtr<TaskGeneric> topTask(modelBuilder.parseTestDescriptionXml(xmlFile)); |
| if (topTask.get() == NULL) { |
| LOGE("Parsing of %x failed", xmlFile.string()); |
| return 1; |
| } |
| topTask->run(); |
| return 0; |
| } |
| |