/*
* 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;
}