Merge "Use config options instead of hardcoded values."
diff --git a/Android.mk b/Android.mk
index 6e15608..ad73d41 100644
--- a/Android.mk
+++ b/Android.mk
@@ -24,8 +24,9 @@
include $(CLEAR_VARS)
VTS_PYTHON_ZIP := $(HOST_OUT)/vts_runner_python/vts_runner_python.zip
-VTS_CAMERAITS_ZIP := $(HOST_OUT)/vts/CameraITS.zip
-VTS_TESTCASES_OUT := $(HOST_OUT)/vts/android-vts/testcases
+VTS_OUT_ROOT := $(HOST_OUT)/vts
+VTS_CAMERAITS_ZIP := $(VTS_OUT_ROOT)/CameraITS.zip
+VTS_TESTCASES_OUT := $(VTS_OUT_ROOT)/android-vts/testcases
.PHONY: $(VTS_PYTHON_ZIP) $(VTS_CAMERAITS_ZIP)
$(VTS_PYTHON_ZIP): $(SOONG_ZIP)
@@ -49,7 +50,12 @@
$(hide) unzip $@ -d $(VTS_TESTCASES_OUT)/CameraITS
.PHONY: vts
-vts: $(VTS_PYTHON_ZIP) $(VTS_CAMERAITS_ZIP)
+
+my_deps_copy_pairs :=
+ $(foreach d,$(ADDITIONAL_VTS_JARS),\
+ $(eval my_deps_copy_pairs += $(d):$(VTS_OUT_ROOT)/$(notdir $(d))))
+
+vts: $(VTS_PYTHON_ZIP) $(VTS_CAMERAITS_ZIP) $(call copy-many-files,$(my_deps_copy_pairs))
endif # vts
endif # linux
diff --git a/agents/hal/AgentRequestHandler.cpp b/agents/hal/AgentRequestHandler.cpp
index c31c0b7..457e18f 100644
--- a/agents/hal/AgentRequestHandler.cpp
+++ b/agents/hal/AgentRequestHandler.cpp
@@ -116,7 +116,8 @@
bool AgentRequestHandler::LaunchDriverService(
int driver_type, const string& service_name, const string& file_path,
int target_class, int target_type, float target_version,
- const string& target_package, const string& module_name, int bits) {
+ const string& target_package, const string& target_component_name,
+ const string& module_name, int bits) {
cout << "[runner->agent] command " << __FUNCTION__ << endl;
ResponseCode result = FAIL;
@@ -252,7 +253,8 @@
driver_type == VTS_DRIVER_TYPE_HAL_HIDL) {
cout << "[agent->driver]: LoadHal " << module_name << endl;
result = client->LoadHal(file_path, target_class, target_type,
- target_version, target_package, module_name);
+ target_version, target_package,
+ target_component_name, module_name);
cout << "[driver->agent]: LoadHal returns " << result << endl;
if (result == VTS_DRIVER_RESPONSE_SUCCESS) {
response_msg.set_response_code(SUCCESS);
@@ -505,8 +507,8 @@
command_msg.driver_type(), command_msg.service_name(),
command_msg.file_path(), command_msg.target_class(),
command_msg.target_type(), command_msg.target_version() / 100.0,
- command_msg.target_package(), command_msg.module_name(),
- command_msg.bits());
+ command_msg.target_package(), command_msg.target_component_name(),
+ command_msg.module_name(), command_msg.bits());
case VTS_AGENT_COMMAND_READ_SPECIFICATION:
return ReadSpecification(command_msg.service_name());
case LIST_APIS:
diff --git a/agents/hal/AgentRequestHandler.h b/agents/hal/AgentRequestHandler.h
index be0008b..8e7a36a 100644
--- a/agents/hal/AgentRequestHandler.h
+++ b/agents/hal/AgentRequestHandler.h
@@ -66,6 +66,7 @@
const string& file_path, int target_class,
int target_type, float target_version,
const string& target_package,
+ const string& target_component_name,
const string& module_name, int bits);
// for the VTS_AGENT_COMMAND_READ_SPECIFICATION`
diff --git a/agents/hal/SocketClientToDriver.cpp b/agents/hal/SocketClientToDriver.cpp
index d4e33ac..188db3e 100644
--- a/agents/hal/SocketClientToDriver.cpp
+++ b/agents/hal/SocketClientToDriver.cpp
@@ -68,6 +68,7 @@
int target_class, int target_type,
float target_version,
const string& target_package,
+ const string& target_component_name,
const string& module_name) {
VtsDriverControlCommandMessage command_message;
command_message.set_command_type(LOAD_HAL);
@@ -76,6 +77,7 @@
command_message.set_target_type(target_type);
command_message.set_target_version(target_version);
command_message.set_target_package(target_package);
+ command_message.set_target_component_name(target_component_name);
command_message.set_module_name(module_name);
if (!VtsSocketSendMessage(command_message)) return -1;
diff --git a/agents/hal/SocketClientToDriver.h b/agents/hal/SocketClientToDriver.h
index 1008ac1..877c321 100644
--- a/agents/hal/SocketClientToDriver.h
+++ b/agents/hal/SocketClientToDriver.h
@@ -42,6 +42,7 @@
// Sends a LOAD_HAL request.
int32_t LoadHal(const string& file_path, int target_class, int target_type,
float target_version, const string& target_package,
+ const string& target_component_name,
const string& module_name);
// Sends a LIST_FUNCTIONS request.
diff --git a/doc/developer_testing/kernel/run_individual_ltp_testcase.md b/doc/developer_testing/kernel/run_individual_ltp_testcase.md
index 2fabb22..7351688 100644
--- a/doc/developer_testing/kernel/run_individual_ltp_testcase.md
+++ b/doc/developer_testing/kernel/run_individual_ltp_testcase.md
@@ -9,13 +9,13 @@
`> run vts-kernel -m KernelLtpTest -t <testname1,testname2,...>`
Test names in filter can be any of the following formats:
-`<testsuite-testname>`, `<testsuite-testname_Nbit>`, `<testname>`
+`<testsuite.testname>`, `<testsuite.testname_bitness>`, `<testname>`
It is recommended to include test suite, i.e., the first two formats above.
Example:
-`> run vts-kernel -m KernelLtpTest -t syscalls-accept01,mm-mmapstress05`
+`> run vts-kernel -m KernelLtpTest -t syscalls.accept01,mm.mmapstress05_64bit`
Test cases specified in this filter will be run regardless of
whether they are disabled in configuration, unless a specified test case name
diff --git a/drivers/libprofiling/VtsProfilingInterface.cpp b/drivers/libprofiling/VtsProfilingInterface.cpp
index 37c4825..bd2ad76 100644
--- a/drivers/libprofiling/VtsProfilingInterface.cpp
+++ b/drivers/libprofiling/VtsProfilingInterface.cpp
@@ -13,9 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
#include "VtsProfilingInterface.h"
+#include <fstream>
+#include <string>
+
+#include <android-base/logging.h>
+#include <google/protobuf/text_format.h>
+
#include "test/vts/proto/VtsDriverControlMessage.pb.h"
using namespace std;
@@ -27,14 +32,64 @@
const int VtsProfilingInterface::kProfilingPointCallback = 2;
const int VtsProfilingInterface::kProfilingPointExit = 3;
-VtsProfilingInterface& VtsProfilingInterface::getInstance()
-{
- static VtsProfilingInterface instance;
- return instance;
+VtsProfilingInterface::VtsProfilingInterface(const string& trace_file_path)
+ : trace_file_path_(trace_file_path),
+ trace_output_(nullptr),
+ initialized_(false) {
}
-bool VtsProfilingInterface::AddTraceEvent(
+VtsProfilingInterface::~VtsProfilingInterface() {
+ if (trace_output_) {
+ trace_output_.close();
+ }
+}
+
+static int64_t NanoTime() {
+ std::chrono::nanoseconds duration(
+ std::chrono::steady_clock::now().time_since_epoch());
+ return static_cast<int64_t>(duration.count());
+}
+
+VtsProfilingInterface& VtsProfilingInterface::getInstance(
+ const string& trace_file_path) {
+ static VtsProfilingInterface instance(trace_file_path);
+ return instance;
+}
+
+void VtsProfilingInterface::Init() {
+ if (initialized_) return;
+ // Attach timestamp for the trace file.
+ string file_path = trace_file_path_ + "_" + to_string(NanoTime());
+ LOG(INFO) << "Creating new profiler instance with file path: " << file_path;
+ trace_output_ = std::ofstream(file_path, std::fstream::out);
+ if (!trace_output_) {
+ LOG(ERROR) << "Can not open trace file: " << trace_file_path_;
+ exit(1);
+ }
+ initialized_ = true;
+}
+
+bool VtsProfilingInterface::AddTraceEvent(const char* package,
+ const char* version, const char* interface,
const FunctionSpecificationMessage& message) {
+ if (!initialized_) {
+ LOG(ERROR) << "Profiler not initialized. ";
+ return false;
+ }
+ string msg_str;
+ if (!google::protobuf::TextFormat::PrintToString(message, &msg_str)) {
+ LOG(ERROR) << "Can't print the message";
+ return false;
+ }
+
+ mutex_.lock();
+ // Record the event data with the following format:
+ // timestamp,package_name,package_version,interface_name,message
+ trace_output_ << NanoTime() << "," << package << "," << version << ","
+ << interface << "," << msg_str << "\n";
+ trace_output_.flush();
+ mutex_.unlock();
+
return true;
}
diff --git a/drivers/libprofiling/VtsProfilingInterface.h b/drivers/libprofiling/VtsProfilingInterface.h
index a5d696b..5636a26 100644
--- a/drivers/libprofiling/VtsProfilingInterface.h
+++ b/drivers/libprofiling/VtsProfilingInterface.h
@@ -18,6 +18,8 @@
#define __VTS_DRIVER_PROFILING_INTERFACE_H_
#include <android-base/macros.h>
+#include <fstream>
+#include <utils/Condition.h>
#include "test/vts/proto/ComponentSpecificationMessage.pb.h"
@@ -37,18 +39,26 @@
// for the API exit on the stub side.
static const int kProfilingPointExit;
- //Get and create the VtsProfilingInterface singleton.
- static VtsProfilingInterface& getInstance();
+ explicit VtsProfilingInterface(const string& trace_file_path);
- VtsProfilingInterface() {};
+ virtual ~VtsProfilingInterface();
- virtual ~VtsProfilingInterface() {};
+ void Init();
+
+ // Get and create the VtsProfilingInterface singleton.
+ static VtsProfilingInterface& getInstance(const string& trace_file_path);
// returns true if the given message is added to the tracing queue.
- bool AddTraceEvent(const FunctionSpecificationMessage& message);
+ bool AddTraceEvent(const char* package, const char* version,
+ const char* interface, const FunctionSpecificationMessage& message);
private:
- DISALLOW_COPY_AND_ASSIGN(VtsProfilingInterface);
+ string trace_file_path_; // Path of the trace file.
+ std::ofstream trace_output_; // Writer to the trace file.
+ Mutex mutex_; // Mutex used to synchronize the writing to the trace file.
+ bool initialized_;
+
+ DISALLOW_COPY_AND_ASSIGN (VtsProfilingInterface);
};
} // namespace vts
diff --git a/harnesses/tradefed/src/com/android/tradefed/testtype/VtsMultiDeviceTest.java b/harnesses/tradefed/src/com/android/tradefed/testtype/VtsMultiDeviceTest.java
index 984d917..9ec8742 100644
--- a/harnesses/tradefed/src/com/android/tradefed/testtype/VtsMultiDeviceTest.java
+++ b/harnesses/tradefed/src/com/android/tradefed/testtype/VtsMultiDeviceTest.java
@@ -30,6 +30,7 @@
import com.android.tradefed.util.CommandResult;
import com.android.tradefed.util.CommandStatus;
import com.android.tradefed.util.FileUtil;
+import com.android.tradefed.util.StreamUtil;
import com.android.tradefed.util.JsonUtil;
import com.android.tradefed.util.IRunUtil;
import com.android.tradefed.util.RunUtil;
@@ -43,6 +44,7 @@
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.InputStream;
import java.nio.file.Paths;
import java.util.TreeSet;
import java.util.Set;
@@ -369,6 +371,23 @@
*/
private void updateVtsRunnerTestConfig(JSONObject jsonObject)
throws IOException, JSONException, RuntimeException {
+ CLog.i("Load vendor test config %s", "/config/google-tradefed-vts-config.config");
+ InputStream config = getClass().getResourceAsStream("/config/google-tradefed-vts-config.config");
+ if (config != null) {
+ try {
+ String content = StreamUtil.getStringFromStream(config);
+ CLog.i("Loaded vendor test config %s", content);
+ if (content != null) {
+ JSONObject vendorConfigJson = new JSONObject(content);
+ JsonUtil.deepMergeJsonObjects(jsonObject, vendorConfigJson);
+ }
+ } catch(IOException e) {
+ throw new RuntimeException("Failed to read vendor config json file");
+ } catch(JSONException e) {
+ throw new RuntimeException("Failed to build updated vendor config json data");
+ }
+ }
+
CLog.i("Load original test config %s %s", mTestCaseDataDir, mTestConfigPath);
String content = null;
@@ -489,6 +508,7 @@
} catch(JSONException e) {
throw new RuntimeException("Failed to build updated test config json data");
}
+
CLog.i("config json: %s", jsonObject.toString());
String jsonFilePath = null;
diff --git a/proto/AndroidSystemControlMessage.proto b/proto/AndroidSystemControlMessage.proto
index dd517c6..4e28a83 100644
--- a/proto/AndroidSystemControlMessage.proto
+++ b/proto/AndroidSystemControlMessage.proto
@@ -113,6 +113,9 @@
// the package name of a HIDL HAL.
optional bytes target_package = 3008;
+ // the name of a target component (currently used for HIDL HALs only).
+ optional bytes target_component_name = 3009;
+
// for LIST_APIS
// none
diff --git a/proto/AndroidSystemControlMessage_pb2.py b/proto/AndroidSystemControlMessage_pb2.py
index 54233a3..790dc9c 100644
--- a/proto/AndroidSystemControlMessage_pb2.py
+++ b/proto/AndroidSystemControlMessage_pb2.py
@@ -15,7 +15,7 @@
DESCRIPTOR = _descriptor.FileDescriptor(
name='AndroidSystemControlMessage.proto',
package='android.vts',
- serialized_pb='\n!AndroidSystemControlMessage.proto\x12\x0b\x61ndroid.vts\x1a#ComponentSpecificationMessage.proto\"\x83\x03\n\"AndroidSystemControlCommandMessage\x12.\n\x0c\x63ommand_type\x18\x01 \x01(\x0e\x32\x18.android.vts.CommandType\x12\x0e\n\x05paths\x18\xe9\x07 \x03(\x0c\x12\x16\n\rcallback_port\x18\xcd\x08 \x01(\x05\x12\x15\n\x0cservice_name\x18\xd1\x0f \x01(\x0c\x12\x30\n\x0b\x64river_type\x18\xb9\x17 \x01(\x0e\x32\x1a.android.vts.VtsDriverType\x12\x12\n\tfile_path\x18\xba\x17 \x01(\x0c\x12\r\n\x04\x62its\x18\xbb\x17 \x01(\x05\x12\x15\n\x0ctarget_class\x18\xbc\x17 \x01(\x05\x12\x14\n\x0btarget_type\x18\xbd\x17 \x01(\x05\x12\x17\n\x0etarget_version\x18\xbe\x17 \x01(\x05\x12\x14\n\x0bmodule_name\x18\xbf\x17 \x01(\x0c\x12\x17\n\x0etarget_package\x18\xc0\x17 \x01(\x0c\x12\x0c\n\x03\x61rg\x18\xa1\x1f \x01(\x0c\x12\x16\n\rshell_command\x18\x89\' \x03(\x0c\"\xd3\x01\n#AndroidSystemControlResponseMessage\x12\x30\n\rresponse_code\x18\x01 \x01(\x0e\x32\x19.android.vts.ResponseCode\x12\x0f\n\x06reason\x18\xe9\x07 \x01(\x0c\x12\x13\n\nfile_names\x18\xea\x07 \x03(\x0c\x12\r\n\x04spec\x18\xeb\x07 \x01(\x0c\x12\x0f\n\x06result\x18\xec\x07 \x01(\x0c\x12\x0f\n\x06stdout\x18\xd1\x0f \x03(\x0c\x12\x0f\n\x06stderr\x18\xd2\x0f \x03(\x0c\x12\x12\n\texit_code\x18\xd3\x0f \x03(\x05\"i\n#AndroidSystemCallbackRequestMessage\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x36\n\x03\x61rg\x18\x0b \x03(\x0b\x32).android.vts.VariableSpecificationMessage\"X\n$AndroidSystemCallbackResponseMessage\x12\x30\n\rresponse_code\x18\x01 \x01(\x0e\x32\x19.android.vts.ResponseCode*\xa5\x02\n\x0b\x43ommandType\x12\x18\n\x14UNKNOWN_COMMAND_TYPE\x10\x00\x12\r\n\tLIST_HALS\x10\x01\x12\x11\n\rSET_HOST_INFO\x10\x02\x12\x08\n\x04PING\x10\x03\x12\x18\n\x14\x43HECK_DRIVER_SERVICE\x10\x65\x12\x19\n\x15LAUNCH_DRIVER_SERVICE\x10\x66\x12(\n$VTS_AGENT_COMMAND_READ_SPECIFICATION\x10g\x12\x0e\n\tLIST_APIS\x10\xc9\x01\x12\r\n\x08\x43\x41LL_API\x10\xca\x01\x12$\n\x1fVTS_AGENT_COMMAND_GET_ATTRIBUTE\x10\xcb\x01\x12,\n\'VTS_AGENT_COMMAND_EXECUTE_SHELL_COMMAND\x10\xad\x02*@\n\x0cResponseCode\x12\x19\n\x15UNKNOWN_RESPONSE_CODE\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x08\n\x04\x46\x41IL\x10\x02*\xfd\x01\n\rVtsDriverType\x12\x1a\n\x16UKNOWN_VTS_DRIVER_TYPE\x10\x00\x12$\n VTS_DRIVER_TYPE_HAL_CONVENTIONAL\x10\x01\x12\x1e\n\x1aVTS_DRIVER_TYPE_HAL_LEGACY\x10\x02\x12\x1c\n\x18VTS_DRIVER_TYPE_HAL_HIDL\x10\x03\x12\x31\n-VTS_DRIVER_TYPE_HAL_HIDL_WRAPPED_CONVENTIONAL\x10\x04\x12\x1e\n\x1aVTS_DRIVER_TYPE_LIB_SHARED\x10\x0b\x12\x19\n\x15VTS_DRIVER_TYPE_SHELL\x10\x15')
+ serialized_pb='\n!AndroidSystemControlMessage.proto\x12\x0b\x61ndroid.vts\x1a#ComponentSpecificationMessage.proto\"\xa3\x03\n\"AndroidSystemControlCommandMessage\x12.\n\x0c\x63ommand_type\x18\x01 \x01(\x0e\x32\x18.android.vts.CommandType\x12\x0e\n\x05paths\x18\xe9\x07 \x03(\x0c\x12\x16\n\rcallback_port\x18\xcd\x08 \x01(\x05\x12\x15\n\x0cservice_name\x18\xd1\x0f \x01(\x0c\x12\x30\n\x0b\x64river_type\x18\xb9\x17 \x01(\x0e\x32\x1a.android.vts.VtsDriverType\x12\x12\n\tfile_path\x18\xba\x17 \x01(\x0c\x12\r\n\x04\x62its\x18\xbb\x17 \x01(\x05\x12\x15\n\x0ctarget_class\x18\xbc\x17 \x01(\x05\x12\x14\n\x0btarget_type\x18\xbd\x17 \x01(\x05\x12\x17\n\x0etarget_version\x18\xbe\x17 \x01(\x05\x12\x14\n\x0bmodule_name\x18\xbf\x17 \x01(\x0c\x12\x17\n\x0etarget_package\x18\xc0\x17 \x01(\x0c\x12\x1e\n\x15target_component_name\x18\xc1\x17 \x01(\x0c\x12\x0c\n\x03\x61rg\x18\xa1\x1f \x01(\x0c\x12\x16\n\rshell_command\x18\x89\' \x03(\x0c\"\xd3\x01\n#AndroidSystemControlResponseMessage\x12\x30\n\rresponse_code\x18\x01 \x01(\x0e\x32\x19.android.vts.ResponseCode\x12\x0f\n\x06reason\x18\xe9\x07 \x01(\x0c\x12\x13\n\nfile_names\x18\xea\x07 \x03(\x0c\x12\r\n\x04spec\x18\xeb\x07 \x01(\x0c\x12\x0f\n\x06result\x18\xec\x07 \x01(\x0c\x12\x0f\n\x06stdout\x18\xd1\x0f \x03(\x0c\x12\x0f\n\x06stderr\x18\xd2\x0f \x03(\x0c\x12\x12\n\texit_code\x18\xd3\x0f \x03(\x05\"i\n#AndroidSystemCallbackRequestMessage\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x36\n\x03\x61rg\x18\x0b \x03(\x0b\x32).android.vts.VariableSpecificationMessage\"X\n$AndroidSystemCallbackResponseMessage\x12\x30\n\rresponse_code\x18\x01 \x01(\x0e\x32\x19.android.vts.ResponseCode*\xa5\x02\n\x0b\x43ommandType\x12\x18\n\x14UNKNOWN_COMMAND_TYPE\x10\x00\x12\r\n\tLIST_HALS\x10\x01\x12\x11\n\rSET_HOST_INFO\x10\x02\x12\x08\n\x04PING\x10\x03\x12\x18\n\x14\x43HECK_DRIVER_SERVICE\x10\x65\x12\x19\n\x15LAUNCH_DRIVER_SERVICE\x10\x66\x12(\n$VTS_AGENT_COMMAND_READ_SPECIFICATION\x10g\x12\x0e\n\tLIST_APIS\x10\xc9\x01\x12\r\n\x08\x43\x41LL_API\x10\xca\x01\x12$\n\x1fVTS_AGENT_COMMAND_GET_ATTRIBUTE\x10\xcb\x01\x12,\n\'VTS_AGENT_COMMAND_EXECUTE_SHELL_COMMAND\x10\xad\x02*@\n\x0cResponseCode\x12\x19\n\x15UNKNOWN_RESPONSE_CODE\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x08\n\x04\x46\x41IL\x10\x02*\xfd\x01\n\rVtsDriverType\x12\x1a\n\x16UKNOWN_VTS_DRIVER_TYPE\x10\x00\x12$\n VTS_DRIVER_TYPE_HAL_CONVENTIONAL\x10\x01\x12\x1e\n\x1aVTS_DRIVER_TYPE_HAL_LEGACY\x10\x02\x12\x1c\n\x18VTS_DRIVER_TYPE_HAL_HIDL\x10\x03\x12\x31\n-VTS_DRIVER_TYPE_HAL_HIDL_WRAPPED_CONVENTIONAL\x10\x04\x12\x1e\n\x1aVTS_DRIVER_TYPE_LIB_SHARED\x10\x0b\x12\x19\n\x15VTS_DRIVER_TYPE_SHELL\x10\x15')
_COMMANDTYPE = _descriptor.EnumDescriptor(
name='CommandType',
@@ -70,8 +70,8 @@
],
containing_type=None,
options=None,
- serialized_start=889,
- serialized_end=1182,
+ serialized_start=921,
+ serialized_end=1214,
)
CommandType = enum_type_wrapper.EnumTypeWrapper(_COMMANDTYPE)
@@ -96,8 +96,8 @@
],
containing_type=None,
options=None,
- serialized_start=1184,
- serialized_end=1248,
+ serialized_start=1216,
+ serialized_end=1280,
)
ResponseCode = enum_type_wrapper.EnumTypeWrapper(_RESPONSECODE)
@@ -138,8 +138,8 @@
],
containing_type=None,
options=None,
- serialized_start=1251,
- serialized_end=1504,
+ serialized_start=1283,
+ serialized_end=1536,
)
VtsDriverType = enum_type_wrapper.EnumTypeWrapper(_VTSDRIVERTYPE)
@@ -259,14 +259,21 @@
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
- name='arg', full_name='android.vts.AndroidSystemControlCommandMessage.arg', index=12,
+ name='target_component_name', full_name='android.vts.AndroidSystemControlCommandMessage.target_component_name', index=12,
+ number=3009, type=12, cpp_type=9, label=1,
+ has_default_value=False, default_value="",
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ options=None),
+ _descriptor.FieldDescriptor(
+ name='arg', full_name='android.vts.AndroidSystemControlCommandMessage.arg', index=13,
number=4001, type=12, cpp_type=9, label=1,
has_default_value=False, default_value="",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
- name='shell_command', full_name='android.vts.AndroidSystemControlCommandMessage.shell_command', index=13,
+ name='shell_command', full_name='android.vts.AndroidSystemControlCommandMessage.shell_command', index=14,
number=5001, type=12, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
@@ -282,7 +289,7 @@
is_extendable=False,
extension_ranges=[],
serialized_start=88,
- serialized_end=475,
+ serialized_end=507,
)
@@ -358,8 +365,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=478,
- serialized_end=689,
+ serialized_start=510,
+ serialized_end=721,
)
@@ -393,8 +400,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=691,
- serialized_end=796,
+ serialized_start=723,
+ serialized_end=828,
)
@@ -421,8 +428,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=798,
- serialized_end=886,
+ serialized_start=830,
+ serialized_end=918,
)
_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['command_type'].enum_type = _COMMANDTYPE
diff --git a/proto/ComponentSpecificationMessage.proto b/proto/ComponentSpecificationMessage.proto
index fdf16c5..d6bb167 100644
--- a/proto/ComponentSpecificationMessage.proto
+++ b/proto/ComponentSpecificationMessage.proto
@@ -58,7 +58,7 @@
MOBILE = 6;
// For a WiFi submodule.
BLUETOOTH = 7;
- // For a NFC submodule
+ // For a NFC submodule.
NFC = 8;
// For a power HAL.
POWER = 9;
@@ -66,6 +66,8 @@
MEMTRACK = 10;
// For a biometrics fingerprint HAL.
BFP = 11;
+ // For a vibrator submodule.
+ VIBRATOR = 12;
// for bionic's libm
BIONIC_LIBM = 1001;
diff --git a/proto/VtsDriverControlMessage.proto b/proto/VtsDriverControlMessage.proto
index aa0368a..970a37b 100644
--- a/proto/VtsDriverControlMessage.proto
+++ b/proto/VtsDriverControlMessage.proto
@@ -82,6 +82,8 @@
optional bytes module_name = 1205;
// the package of a HIDL HAL to open.
optional bytes target_package = 1206;
+ // the name of a target component (currently used for HIDL HALs only).
+ optional bytes target_component_name = 1207;
// for LIST_FUNCTIONS
// none
diff --git a/run-angler.sh b/run-angler.sh
index e7cc7c1..d59bad1 100755
--- a/run-angler.sh
+++ b/run-angler.sh
@@ -7,6 +7,7 @@
# PYTHONPATH=$PYTHONPATH:.. python -m vts.testcases.host.camera.conventional.SampleCameraTest
# PYTHONPATH=$PYTHONPATH:.. python -m vts.testcases.host.camera.conventional.2_1.SampleCameraV2Test
# PYTHONPATH=$PYTHONPATH:.. python -m vts.testcases.host.camera.conventional.3_4.SampleCameraV3Test
-# PYTHONPATH=$PYTHONPATH:.. python -m vts.testcases.host.nfc.hidl.NfcHidlBasicTest
+# PYTHONPATH=$PYTHONPATH:.. python -m vts.testcases.hal.nfc.hidl.host.NfcHidlBasicTest
+# PYTHONPATH=$PYTHONPATH:.. python -m vts.testcases.hal.vibrator.hidl.VibratorHidlTest
# PYTHONPATH=$PYTHONPATH:.. python -m vts.testcases.host.shell.SampleShellTest
# PYTHONPATH=$PYTHONPATH:.. python -m vts.testcases.fuzz_test.lib_bionic.LibBionicLibmFuzzTest
diff --git a/runners/host/tcp_client/vts_tcp_client.py b/runners/host/tcp_client/vts_tcp_client.py
index 3ab7b32..ee644ee 100755
--- a/runners/host/tcp_client/vts_tcp_client.py
+++ b/runners/host/tcp_client/vts_tcp_client.py
@@ -134,7 +134,8 @@
def LaunchDriverService(self, driver_type, service_name, bits,
file_path=None, target_class=None, target_type=None,
- target_version=None, target_package=None):
+ target_version=None, target_package=None,
+ target_component_name=None):
"""RPC to LAUNCH_DRIVER_SERVICE."""
logging.info("service_name: %s", service_name)
logging.info("file_path: %s", file_path)
@@ -148,7 +149,8 @@
target_class=target_class,
target_type=target_type,
target_version=target_version,
- target_package=target_package)
+ target_package=target_package,
+ target_component_name=target_component_name)
resp = self.RecvResponse()
logging.info("resp for LAUNCH_DRIVER_SERVICE: %s", resp)
return (resp.response_code == SysMsg_pb2.SUCCESS)
@@ -282,6 +284,7 @@
target_type=None,
target_version=None,
target_package=None,
+ target_component_name=None,
module_name=None,
service_name=None,
callback_port=None,
@@ -318,6 +321,9 @@
if target_package is not None:
command_msg.target_package = target_package
+ if target_component_name is not None:
+ command_msg.target_component_name = target_component_name
+
if module_name is not None:
command_msg.module_name = module_name
diff --git a/specification/Android.mk b/specification/Android.mk
index 0d46185..9b1fc20 100644
--- a/specification/Android.mk
+++ b/specification/Android.mk
@@ -73,6 +73,7 @@
LOCAL_C_INCLUDES := \
${vtslib_interfacespec_includes} \
android.hardware.nfc@1.0 \
+ android.hardware.vibrator@1.0 \
system/core/base/include \
ifeq ($(VTS_ENABLE_TREBLE), true)
@@ -89,6 +90,8 @@
libutils \
android.hardware.nfc@1.0 \
libvts_driver_hidl_nfc@1.0 \
+ android.hardware.vibrator@1.0 \
+ libvts_driver_hidl_vibrator@1.0 \
endif
diff --git a/specification/vts_specification.mk b/specification/vts_specification.mk
index 3d659db..768fbd0 100644
--- a/specification/vts_specification.mk
+++ b/specification/vts_specification.mk
@@ -14,5 +14,7 @@
harware/interfaces/nfc/1.0/vts/Nfc.vts:system/etc/Nfc.vts \
harware/interfaces/nfc/1.0/vts/NfcClientCallback.vts:system/etc/NfcClientCallback.vts \
harware/interfaces/nfc/1.0/vts/types.vts:system/etc/types.vts \
+ harware/interfaces/vibrator/1.0/vts/Vibrator.vts:system/etc/Vibrator.vts \
+ harware/interfaces/vibrator/1.0/vts/types.vts:system/etc/types.vts \
test/vts/specification/lib_bionic/libmV1.vts:system/etc/libmV1.vts \
test/vts/specification/lib_bionic/libcV1.vts:system/etc/libcV1.vts \
diff --git a/sysfuzzer/common/include/specification_parser/SpecificationBuilder.h b/sysfuzzer/common/include/specification_parser/SpecificationBuilder.h
index 982dd43..9d3bc68 100644
--- a/sysfuzzer/common/include/specification_parser/SpecificationBuilder.h
+++ b/sysfuzzer/common/include/specification_parser/SpecificationBuilder.h
@@ -48,7 +48,8 @@
// component.
vts::ComponentSpecificationMessage* FindComponentSpecification(
const int target_class, const int target_type, const float target_version,
- const string submodule_name = "", const string package = "");
+ const string submodule_name = "", const string package = "",
+ const string component_name = "");
vts::ComponentSpecificationMessage*
FindComponentSpecification(const string& component_name);
@@ -69,12 +70,14 @@
// the target component.
bool Process(const char* dll_file_name, const char* spec_lib_file_path,
int target_class, int target_type, float target_version,
- const char* target_package);
+ const char* target_package, const char* target_component_name);
bool LoadTargetComponent(const char* dll_file_name,
const char* spec_lib_file_path, int target_class,
int target_type, float target_version,
- const char* target_package, const char* module_name);
+ const char* target_package,
+ const char* target_component_name,
+ const char* module_name);
FuzzerBase* GetFuzzerBase(
const ComponentSpecificationMessage& iface_spec_msg,
diff --git a/sysfuzzer/common/specification_parser/SpecificationBuilder.cpp b/sysfuzzer/common/specification_parser/SpecificationBuilder.cpp
index bee9e2b..19eb87e 100644
--- a/sysfuzzer/common/specification_parser/SpecificationBuilder.cpp
+++ b/sysfuzzer/common/specification_parser/SpecificationBuilder.cpp
@@ -46,7 +46,8 @@
const int target_type,
const float target_version,
const string submodule_name,
- const string package) {
+ const string package,
+ const string component_name) {
DIR* dir;
struct dirent* ent;
@@ -79,6 +80,11 @@
} else {
if (message->package() == package &&
message->component_type_version() == target_version) {
+ if (component_name.length() > 0) {
+ if (message->component_name() != component_name) {
+ continue;
+ }
+ }
closedir(dir);
return message;
}
@@ -224,10 +230,11 @@
bool SpecificationBuilder::LoadTargetComponent(
const char* dll_file_name, const char* spec_lib_file_path, int target_class,
int target_type, float target_version, const char* target_package,
- const char* module_name) {
+ const char* target_component_name, const char* module_name) {
if_spec_msg_ =
FindComponentSpecification(target_class, target_type, target_version,
- module_name, target_package);
+ module_name, target_package,
+ target_component_name);
if (!if_spec_msg_) {
cerr << __FUNCTION__ << ": no interface specification file found for "
<< "class " << target_class << " type " << target_type << " version "
@@ -439,7 +446,7 @@
FindComponentSpecification(
if_spec_msg_->component_class(), if_spec_msg_->component_type(),
if_spec_msg_->component_type_version(), submodule_name,
- if_spec_msg_->package());
+ if_spec_msg_->package(), if_spec_msg_->component_name());
if (!submodule_iface_spec_msg) {
cerr << __func__ << " submodule InterfaceSpecification not found" << endl;
} else {
@@ -589,7 +596,7 @@
FindComponentSpecification(
if_spec_msg_->component_class(), if_spec_msg_->component_type(),
if_spec_msg_->component_type_version(), submodule_name,
- if_spec_msg_->package());
+ if_spec_msg_->package(), if_spec_msg_->component_name());
if (!submodule_iface_spec_msg) {
cerr << __func__ << " submodule InterfaceSpecification not found" << endl;
} else {
@@ -614,10 +621,11 @@
const char* spec_lib_file_path,
int target_class, int target_type,
float target_version,
- const char* target_package) {
+ const char* target_package,
+ const char* target_component_name) {
vts::ComponentSpecificationMessage* interface_specification_message =
FindComponentSpecification(target_class, target_type, target_version,
- target_package);
+ target_package, target_component_name);
cout << "ifspec addr " << interface_specification_message << endl;
if (!interface_specification_message) {
diff --git a/sysfuzzer/framework/SocketServer.cpp b/sysfuzzer/framework/SocketServer.cpp
index cf064ff..fb226ec 100644
--- a/sysfuzzer/framework/SocketServer.cpp
+++ b/sysfuzzer/framework/SocketServer.cpp
@@ -65,11 +65,13 @@
int32_t VtsDriverHalSocketServer::LoadHal(const string& path, int target_class,
int target_type, float target_version,
const string& target_package,
+ const string& target_component_name,
const string& module_name) {
printf("VtsFuzzerServer::LoadHal(%s)\n", path.c_str());
bool success = spec_builder_.LoadTargetComponent(
path.c_str(), lib_path_, target_class, target_type, target_version,
- target_package.c_str(), module_name.c_str());
+ target_package.c_str(), target_component_name.c_str(),
+ module_name.c_str());
cout << "Result: " << success << std::endl;
if (success) {
return 0;
@@ -152,7 +154,9 @@
int32_t result = LoadHal(
command_message.file_path(), command_message.target_class(),
command_message.target_type(), command_message.target_version(),
- command_message.target_package(), command_message.module_name());
+ command_message.target_package(),
+ command_message.target_component_name(),
+ command_message.module_name());
VtsDriverControlResponseMessage response_message;
response_message.set_response_code(VTS_DRIVER_RESPONSE_SUCCESS);
response_message.set_return_value(result);
diff --git a/sysfuzzer/framework/SocketServer.h b/sysfuzzer/framework/SocketServer.h
index d15a5e7..b87789a 100644
--- a/sysfuzzer/framework/SocketServer.h
+++ b/sysfuzzer/framework/SocketServer.h
@@ -39,7 +39,8 @@
void Exit();
int32_t LoadHal(const string& path, int target_class, int target_type,
float target_version, const string& target_package,
- const string& module_name);
+ const string& module_name,
+ const string& target_component_name);
int32_t Status(int32_t type);
const char* ReadSpecification(const string& name);
const char* Call(const string& arg);
diff --git a/sysfuzzer/framework/VtsFuzzerMain.cpp b/sysfuzzer/framework/VtsFuzzerMain.cpp
index 253302a..4878714 100644
--- a/sysfuzzer/framework/VtsFuzzerMain.cpp
+++ b/sysfuzzer/framework/VtsFuzzerMain.cpp
@@ -85,6 +85,7 @@
{"epoch_count", required_argument, NULL, 'e'},
{"spec_dir", required_argument, NULL, 's'},
{"target_package", optional_argument, NULL, 'k'},
+ {"target_component_name", optional_argument, NULL, 'n'},
#ifndef VTS_AGENT_DRIVER_COMM_BINDER // socket
{"server_socket_path", optional_argument, NULL, 'f'},
#else // binder
@@ -105,6 +106,7 @@
string service_name(VTS_FUZZER_BINDER_SERVICE_NAME);
#endif
string target_package;
+ string target_component_name;
string callback_socket_name;
while (true) {
@@ -177,6 +179,9 @@
case 'k':
target_package = string(optarg);
break;
+ case 'n':
+ target_component_name = string(optarg);
+ break;
default:
if (ic != '?') {
fprintf(stderr, "getopt_long returned unexpected value 0x%x\n", ic);
@@ -196,7 +201,8 @@
bool success =
spec_builder.Process(argv[optind], INTERFACE_SPEC_LIB_FILENAME,
target_class, target_type, target_version,
- target_package.c_str());
+ target_package.c_str(),
+ target_component_name.c_str());
cout << "Result: " << success << endl;
if (success) {
cout << endl << PASSED_MARKER << endl;
diff --git a/sysfuzzer/vtscompiler/VtsCompilerUtils.cpp b/sysfuzzer/vtscompiler/VtsCompilerUtils.cpp
index 80b76ea..d8de0d6 100644
--- a/sysfuzzer/vtscompiler/VtsCompilerUtils.cpp
+++ b/sysfuzzer/vtscompiler/VtsCompilerUtils.cpp
@@ -81,6 +81,8 @@
return "bluetooth";
case NFC:
return "nfc";
+ case VIBRATOR:
+ return "vibrator";
case BIONIC_LIBM:
return "bionic_libm";
}
diff --git a/sysfuzzer/vtscompiler/code_gen/profiler/HalHidlProfilerCodeGen.cpp b/sysfuzzer/vtscompiler/code_gen/profiler/HalHidlProfilerCodeGen.cpp
index f67709e..d79cd53 100644
--- a/sysfuzzer/vtscompiler/code_gen/profiler/HalHidlProfilerCodeGen.cpp
+++ b/sysfuzzer/vtscompiler/code_gen/profiler/HalHidlProfilerCodeGen.cpp
@@ -186,7 +186,7 @@
out << "}\n";
out.unindent();
out << "}\n";
- out << "VtsProfilingInterface::getInstance().AddTraceEvent(msg);\n";
+ out << "profiler.AddTraceEvent(package, version, interface, msg);\n";
out.unindent();
out << "}\n";
}
@@ -196,6 +196,7 @@
// Basic includes.
out << "#include <android-base/logging.h>\n";
out << "#include <hidl/HidlSupport.h>\n";
+ out << "#include <linux/limits.h>\n";
out << "#include <test/vts/proto/ComponentSpecificationMessage.pb.h>\n";
out << "#include <VtsProfilingInterface.h>\n";
out << "\n";
@@ -243,6 +244,12 @@
out << "\n";
}
+void HalHidlProfilerCodeGen::GenerateMacros(Formatter& out,
+ const ComponentSpecificationMessage&) {
+ out << "#define TRACEFILEPREFIX \"/data/local/tmp\"\n";
+ out << "\n";
+}
+
void HalHidlProfilerCodeGen::GenerateProfierSanityCheck(Formatter& out,
const ComponentSpecificationMessage& message) {
out << "if (strcmp(package, \"" << GetPackage(message) << "\") != 0) {\n";
@@ -267,6 +274,21 @@
out << "return;\n";
out.unindent();
out << "}\n";
+ out << "\n";
+}
+
+void HalHidlProfilerCodeGen::GenerateLocalVariableDefinition(Formatter& out,
+ const ComponentSpecificationMessage&) {
+ // generate the name of file to store the trace.
+ out << "char trace_file[PATH_MAX];\n";
+ out << "sprintf(trace_file, \"%s/%s@%s\", TRACEFILEPREFIX, package, version);"
+ << "\n";
+
+ // create and initialize the VTS profiler interface.
+ out << "VtsProfilingInterface& profiler = "
+ << "VtsProfilingInterface::getInstance(trace_file);\n";
+ out << "profiler.Init();\n";
+ out << "\n";
}
} // namespace vts
diff --git a/sysfuzzer/vtscompiler/code_gen/profiler/HalHidlProfilerCodeGen.h b/sysfuzzer/vtscompiler/code_gen/profiler/HalHidlProfilerCodeGen.h
index 5b36e55..019c549 100644
--- a/sysfuzzer/vtscompiler/code_gen/profiler/HalHidlProfilerCodeGen.h
+++ b/sysfuzzer/vtscompiler/code_gen/profiler/HalHidlProfilerCodeGen.h
@@ -72,8 +72,12 @@
const ComponentSpecificationMessage& message) override;
void GenerateUsingDeclaration(Formatter& out,
const ComponentSpecificationMessage& message) override;
+ void GenerateMacros(Formatter& out,
+ const ComponentSpecificationMessage& message) override;
virtual void GenerateProfierSanityCheck(Formatter& out,
const ComponentSpecificationMessage& message) override;
+ virtual void GenerateLocalVariableDefinition(Formatter& out,
+ const ComponentSpecificationMessage& message) override;
private:
DISALLOW_COPY_AND_ASSIGN (HalHidlProfilerCodeGen);
diff --git a/sysfuzzer/vtscompiler/code_gen/profiler/ProfilerCodeGenBase.cpp b/sysfuzzer/vtscompiler/code_gen/profiler/ProfilerCodeGenBase.cpp
index 714d6c6..8251ab0 100644
--- a/sysfuzzer/vtscompiler/code_gen/profiler/ProfilerCodeGenBase.cpp
+++ b/sysfuzzer/vtscompiler/code_gen/profiler/ProfilerCodeGenBase.cpp
@@ -87,6 +87,7 @@
Formatter& out, const ComponentSpecificationMessage& message) {
GenerateSourceIncludeFiles(out, message);
GenerateUsingDeclaration(out, message);
+ GenerateMacros(out, message);
GenerateOpenNameSpaces(out);
if (message.has_interface()) {
@@ -109,9 +110,12 @@
out << "std::vector<void *> *args) {\n";
out.unindent();
- // Code for sanity check.
+ // Generate code for sanity check.
GenerateProfierSanityCheck(out, message);
+ // Generate code to define local variables.
+ GenerateLocalVariableDefinition(out, message);
+
// Generate the profiler code for each method.
for (const FunctionSpecificationMessage api : interface.api()) {
out << "if (strcmp(method, \"" << api.name() << "\") == 0) {\n";
@@ -218,11 +222,6 @@
out << "}\n\n";
}
-void ProfilerCodeGenBase::GenerateProfierSanityCheck(Formatter&,
- const ComponentSpecificationMessage&) {
- return;
-}
-
void ProfilerCodeGenBase::GenerateOpenNameSpaces(Formatter& out) {
out << "namespace android {\n";
out << "namespace vts {\n\n";
diff --git a/sysfuzzer/vtscompiler/code_gen/profiler/ProfilerCodeGenBase.h b/sysfuzzer/vtscompiler/code_gen/profiler/ProfilerCodeGenBase.h
index ca3fdfe..ca98c3b 100644
--- a/sysfuzzer/vtscompiler/code_gen/profiler/ProfilerCodeGenBase.h
+++ b/sysfuzzer/vtscompiler/code_gen/profiler/ProfilerCodeGenBase.h
@@ -106,10 +106,17 @@
// Generates the necessary "using" code for profiler.
virtual void GenerateUsingDeclaration(Formatter& out,
const ComponentSpecificationMessage& message) = 0;
+ // Generates the necessary "#define" code for profiler.
+ virtual void GenerateMacros(Formatter&,
+ const ComponentSpecificationMessage&) {};
// Generates sanity check for profiler. These codes will be generated at the
// beginning of the main profiler function.
- virtual void GenerateProfierSanityCheck(Formatter& out,
- const ComponentSpecificationMessage& message);
+ virtual void GenerateProfierSanityCheck(Formatter&,
+ const ComponentSpecificationMessage&) {};
+ // Generate local variable definition. These codes will be generated after
+ // the sanity check code.
+ virtual void GenerateLocalVariableDefinition(Formatter&,
+ const ComponentSpecificationMessage&) {};
// Generates the profiler code for a typed variable.
virtual void GenerateProfilerForTypedVariable(Formatter& out,
diff --git a/sysfuzzer/vtscompiler/test/golden/PROFILER/Nfc.profiler.cpp b/sysfuzzer/vtscompiler/test/golden/PROFILER/Nfc.profiler.cpp
index 3d236ca..3f39c87 100644
--- a/sysfuzzer/vtscompiler/test/golden/PROFILER/Nfc.profiler.cpp
+++ b/sysfuzzer/vtscompiler/test/golden/PROFILER/Nfc.profiler.cpp
@@ -4,6 +4,8 @@
using namespace android::hardware;
using namespace android::hardware::nfc::V1_0;
+#define TRACEFILEPREFIX "/data/local/tmp"
+
namespace android {
namespace vts {
@@ -27,6 +29,12 @@
LOG(WARNING) << "incorrect interface.";
return;
}
+
+ char trace_file[PATH_MAX];
+ sprintf(trace_file, "%s/%s@%s", TRACEFILEPREFIX, package, version);
+ VtsProfilingInterface& profiler = VtsProfilingInterface::getInstance(trace_file);
+ profiler.Init();
+
if (strcmp(method, "open") == 0) {
FunctionSpecificationMessage msg;
switch (event) {
@@ -51,7 +59,7 @@
break;
}
}
- VtsProfilingInterface::getInstance().AddTraceEvent(msg);
+ profiler.AddTraceEvent(package, version, interface, msg);
}
if (strcmp(method, "write") == 0) {
FunctionSpecificationMessage msg;
@@ -81,7 +89,7 @@
break;
}
}
- VtsProfilingInterface::getInstance().AddTraceEvent(msg);
+ profiler.AddTraceEvent(package, version, interface, msg);
}
if (strcmp(method, "coreInitialized") == 0) {
FunctionSpecificationMessage msg;
@@ -111,7 +119,7 @@
break;
}
}
- VtsProfilingInterface::getInstance().AddTraceEvent(msg);
+ profiler.AddTraceEvent(package, version, interface, msg);
}
if (strcmp(method, "prediscover") == 0) {
FunctionSpecificationMessage msg;
@@ -134,7 +142,7 @@
break;
}
}
- VtsProfilingInterface::getInstance().AddTraceEvent(msg);
+ profiler.AddTraceEvent(package, version, interface, msg);
}
if (strcmp(method, "close") == 0) {
FunctionSpecificationMessage msg;
@@ -157,7 +165,7 @@
break;
}
}
- VtsProfilingInterface::getInstance().AddTraceEvent(msg);
+ profiler.AddTraceEvent(package, version, interface, msg);
}
if (strcmp(method, "controlGranted") == 0) {
FunctionSpecificationMessage msg;
@@ -180,7 +188,7 @@
break;
}
}
- VtsProfilingInterface::getInstance().AddTraceEvent(msg);
+ profiler.AddTraceEvent(package, version, interface, msg);
}
if (strcmp(method, "powerCycle") == 0) {
FunctionSpecificationMessage msg;
@@ -203,7 +211,7 @@
break;
}
}
- VtsProfilingInterface::getInstance().AddTraceEvent(msg);
+ profiler.AddTraceEvent(package, version, interface, msg);
}
}
diff --git a/sysfuzzer/vtscompiler/test/golden/PROFILER/NfcClientCallback.profiler.cpp b/sysfuzzer/vtscompiler/test/golden/PROFILER/NfcClientCallback.profiler.cpp
index 92c299f..79606fc 100644
--- a/sysfuzzer/vtscompiler/test/golden/PROFILER/NfcClientCallback.profiler.cpp
+++ b/sysfuzzer/vtscompiler/test/golden/PROFILER/NfcClientCallback.profiler.cpp
@@ -4,6 +4,8 @@
using namespace android::hardware;
using namespace android::hardware::nfc::V1_0;
+#define TRACEFILEPREFIX "/data/local/tmp"
+
namespace android {
namespace vts {
@@ -27,6 +29,12 @@
LOG(WARNING) << "incorrect interface.";
return;
}
+
+ char trace_file[PATH_MAX];
+ sprintf(trace_file, "%s/%s@%s", TRACEFILEPREFIX, package, version);
+ VtsProfilingInterface& profiler = VtsProfilingInterface::getInstance(trace_file);
+ profiler.Init();
+
if (strcmp(method, "sendEvent") == 0) {
FunctionSpecificationMessage msg;
switch (event) {
@@ -52,7 +60,7 @@
break;
}
}
- VtsProfilingInterface::getInstance().AddTraceEvent(msg);
+ profiler.AddTraceEvent(package, version, interface, msg);
}
if (strcmp(method, "sendData") == 0) {
FunctionSpecificationMessage msg;
@@ -78,7 +86,7 @@
break;
}
}
- VtsProfilingInterface::getInstance().AddTraceEvent(msg);
+ profiler.AddTraceEvent(package, version, interface, msg);
}
}
diff --git a/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/Nfc.vts.h b/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/Nfc.vts.h
index 792851c..81f5e4c 100644
--- a/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/Nfc.vts.h
+++ b/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/Nfc.vts.h
@@ -4,6 +4,7 @@
#include <android-base/logging.h>
#include <hidl/HidlSupport.h>
+#include <linux/limits.h>
#include <test/vts/proto/ComponentSpecificationMessage.pb.h>
#include <VtsProfilingInterface.h>
diff --git a/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/NfcClientCallback.vts.h b/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/NfcClientCallback.vts.h
index 4887970..003c00e 100644
--- a/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/NfcClientCallback.vts.h
+++ b/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/NfcClientCallback.vts.h
@@ -4,6 +4,7 @@
#include <android-base/logging.h>
#include <hidl/HidlSupport.h>
+#include <linux/limits.h>
#include <test/vts/proto/ComponentSpecificationMessage.pb.h>
#include <VtsProfilingInterface.h>
diff --git a/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/types.vts.h b/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/types.vts.h
index 080d39e..f0d11cd 100644
--- a/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/types.vts.h
+++ b/sysfuzzer/vtscompiler/test/golden/PROFILER/hardware/interfaces/nfc/1.0/vts/types.vts.h
@@ -4,6 +4,7 @@
#include <android-base/logging.h>
#include <hidl/HidlSupport.h>
+#include <linux/limits.h>
#include <test/vts/proto/ComponentSpecificationMessage.pb.h>
#include <VtsProfilingInterface.h>
diff --git a/sysfuzzer/vtscompiler/test/golden/PROFILER/types.profiler.cpp b/sysfuzzer/vtscompiler/test/golden/PROFILER/types.profiler.cpp
index 80e0826..eba5f5f 100644
--- a/sysfuzzer/vtscompiler/test/golden/PROFILER/types.profiler.cpp
+++ b/sysfuzzer/vtscompiler/test/golden/PROFILER/types.profiler.cpp
@@ -4,6 +4,8 @@
using namespace android::hardware;
using namespace android::hardware::nfc::V1_0;
+#define TRACEFILEPREFIX "/data/local/tmp"
+
namespace android {
namespace vts {
diff --git a/testcases/host/nfc/Android.mk b/testcases/hal/Android.mk
similarity index 100%
copy from testcases/host/nfc/Android.mk
copy to testcases/hal/Android.mk
diff --git a/testcases/host/nfc/__init__.py b/testcases/hal/__init__.py
similarity index 100%
copy from testcases/host/nfc/__init__.py
copy to testcases/hal/__init__.py
diff --git a/testcases/host/nfc/Android.mk b/testcases/hal/nfc/Android.mk
similarity index 100%
rename from testcases/host/nfc/Android.mk
rename to testcases/hal/nfc/Android.mk
diff --git a/testcases/host/nfc/__init__.py b/testcases/hal/nfc/__init__.py
similarity index 100%
rename from testcases/host/nfc/__init__.py
rename to testcases/hal/nfc/__init__.py
diff --git a/testcases/host/nfc/Android.mk b/testcases/hal/nfc/hidl/Android.mk
similarity index 100%
copy from testcases/host/nfc/Android.mk
copy to testcases/hal/nfc/hidl/Android.mk
diff --git a/testcases/host/nfc/hidl/__init__.py b/testcases/hal/nfc/hidl/__init__.py
similarity index 100%
rename from testcases/host/nfc/hidl/__init__.py
rename to testcases/hal/nfc/hidl/__init__.py
diff --git a/testcases/host/nfc/hidl/Android.mk b/testcases/hal/nfc/hidl/host/Android.mk
similarity index 73%
rename from testcases/host/nfc/hidl/Android.mk
rename to testcases/hal/nfc/hidl/host/Android.mk
index 4c169fc..2d8596c 100644
--- a/testcases/host/nfc/hidl/Android.mk
+++ b/testcases/hal/nfc/hidl/host/Android.mk
@@ -3,5 +3,5 @@
include $(CLEAR_VARS)
LOCAL_MODULE := NfcHidlBasicTest
-VTS_CONFIG_SRC_DIR := testcases/host/nfc/hidl
+VTS_CONFIG_SRC_DIR := testcases/hal/nfc/hidl/host
include test/vts/tools/build/Android.host_config.mk
diff --git a/testcases/host/nfc/hidl/AndroidTest.xml b/testcases/hal/nfc/hidl/host/AndroidTest.xml
similarity index 77%
rename from testcases/host/nfc/hidl/AndroidTest.xml
rename to testcases/hal/nfc/hidl/host/AndroidTest.xml
index bd145e5..711e98a 100644
--- a/testcases/host/nfc/hidl/AndroidTest.xml
+++ b/testcases/hal/nfc/hidl/host/AndroidTest.xml
@@ -15,16 +15,14 @@
-->
<configuration description="Config for VTS HAL NFC test cases">
<target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
- <option name="push-group" value="HostDrivenTest.push" />
+ <option name="push-group" value="HidlHalTest.push" />
<option name="cleanup" value="true" />
- <option name="push" value="DATA/lib/libvts_driver_hidl_nfc@1.0.so->/data/local/tmp/32/libvts_driver_hidl_nfc@1.0.so" />
- <option name="push" value="DATA/lib64/libvts_driver_hidl_nfc@1.0.so->/data/local/tmp/64/libvts_driver_hidl_nfc@1.0.so" />
<option name="push" value="spec/hardware/interfaces/nfc/1.0/vts/Nfc.vts->/data/local/tmp/spec/Nfc.vts" />
<option name="push" value="spec/hardware/interfaces/nfc/1.0/vts/NfcClientCallback.vts->/data/local/tmp/spec/NfcClientCallback.vts" />
<option name="push" value="spec/hardware/interfaces/nfc/1.0/vts/types.vts->/data/local/tmp/spec/types.vts" />
</target_preparer>
<target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
<test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
- <option name="test-case-path" value="vts/testcases/host/nfc/hidl/NfcHidlBasicTest" />
+ <option name="test-case-path" value="vts/testcases/hal/nfc/hidl/host/NfcHidlBasicTest" />
</test>
</configuration>
diff --git a/testcases/host/nfc/hidl/NfcHidlBasicTest.py b/testcases/hal/nfc/hidl/host/NfcHidlBasicTest.py
similarity index 97%
rename from testcases/host/nfc/hidl/NfcHidlBasicTest.py
rename to testcases/hal/nfc/hidl/host/NfcHidlBasicTest.py
index 363b380..4ce50c2 100644
--- a/testcases/host/nfc/hidl/NfcHidlBasicTest.py
+++ b/testcases/hal/nfc/hidl/host/NfcHidlBasicTest.py
@@ -37,6 +37,7 @@
target_basepaths=["/system/lib64"],
target_version=1.0,
target_package="android.hardware.nfc",
+ target_component_name="INfc",
bits=64)
self.dut.shell.InvokeTerminal("one")
diff --git a/testcases/host/nfc/__init__.py b/testcases/hal/nfc/hidl/host/__init__.py
similarity index 100%
copy from testcases/host/nfc/__init__.py
copy to testcases/hal/nfc/hidl/host/__init__.py
diff --git a/testcases/host/nfc/Android.mk b/testcases/hal/vibrator/Android.mk
similarity index 100%
copy from testcases/host/nfc/Android.mk
copy to testcases/hal/vibrator/Android.mk
diff --git a/testcases/host/nfc/__init__.py b/testcases/hal/vibrator/__init__.py
similarity index 100%
copy from testcases/host/nfc/__init__.py
copy to testcases/hal/vibrator/__init__.py
diff --git a/testcases/hal/vibrator/hidl/Android.mk b/testcases/hal/vibrator/hidl/Android.mk
new file mode 100644
index 0000000..f3be6c8
--- /dev/null
+++ b/testcases/hal/vibrator/hidl/Android.mk
@@ -0,0 +1,7 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VibratorHidlTest
+VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/hidl
+include test/vts/tools/build/Android.host_config.mk
diff --git a/testcases/hal/vibrator/hidl/AndroidTest.xml b/testcases/hal/vibrator/hidl/AndroidTest.xml
new file mode 100644
index 0000000..8897cb9
--- /dev/null
+++ b/testcases/hal/vibrator/hidl/AndroidTest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+<configuration description="Config for VTS HAL vibrator test cases">
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+ <option name="push-group" value="HidlHalTest.push" />
+ <option name="cleanup" value="true" />
+ <option name="push" value="spec/hardware/interfaces/vibrator/1.0/vts/Vibrator.vts->/data/local/tmp/spec/Vibrator.vts" />
+ <option name="push" value="spec/hardware/interfaces/vibrator/1.0/vts/types.vts->/data/local/tmp/spec/types.vts" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+ <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+ <option name="test-module-name" value="VibratorHidlTest" />
+ <option name="test-case-path" value="vts/testcases/hal/vibrator/hidl/VibratorHidlTest" />
+ </test>
+</configuration>
diff --git a/testcases/hal/vibrator/hidl/VibratorHidlTest.py b/testcases/hal/vibrator/hidl/VibratorHidlTest.py
new file mode 100644
index 0000000..c436cd1
--- /dev/null
+++ b/testcases/hal/vibrator/hidl/VibratorHidlTest.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python3.4
+#
+# Copyright (C) 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.
+#
+
+import logging
+import time
+
+from vts.runners.host import asserts
+from vts.runners.host import base_test_with_webdb
+from vts.runners.host import test_runner
+from vts.utils.python.controllers import android_device
+
+
+class VibratorHidlTest(base_test_with_webdb.BaseTestWithWebDbClass):
+ """A simple testcase for the VIBRATOR HIDL HAL."""
+
+ _TREBLE_DEVICE_NAME_SUFFIX = "_treble"
+
+ def setUpClass(self):
+ """Creates a mirror and turns on the framework-layer VIBRATOR service."""
+ self.dut = self.registerController(android_device)[0]
+ self.dut.hal.InitHidlHal(
+ target_type="vibrator",
+ target_basepaths=["/system/lib64"],
+ target_version=1.0,
+ target_package="android.hardware.vibrator",
+ target_component_name="IVibrator",
+ bits=64)
+
+ self.dut.shell.InvokeTerminal("one")
+ self.dut.shell.one.Execute("setenforce 0") # SELinux permissive mode
+
+ def testVibratorBasic(self):
+ """A simple test case which just calls each registered function."""
+ asserts.skipIf(
+ not self.dut.model.endswith(self._TREBLE_DEVICE_NAME_SUFFIX),
+ "a non-Treble device.")
+
+ result = self.dut.hal.vibrator.on()
+ logging.info("open result: %s", result)
+
+ time.sleep(1)
+
+ result = self.dut.hal.vibrator.off()
+ logging.info("prediscover result: %s", result)
+
+
+if __name__ == "__main__":
+ test_runner.main()
diff --git a/testcases/host/nfc/hidl/__init__.py b/testcases/hal/vibrator/hidl/__init__.py
similarity index 100%
copy from testcases/host/nfc/hidl/__init__.py
copy to testcases/hal/vibrator/hidl/__init__.py
diff --git a/testcases/kernel/ltp/ltp_configs.py b/testcases/kernel/ltp/ltp_configs.py
index 840219e..a9af3e8 100644
--- a/testcases/kernel/ltp/ltp_configs.py
+++ b/testcases/kernel/ltp/ltp_configs.py
@@ -63,37 +63,37 @@
# Requirement to testcase dictionary.
REQUIREMENTS_TO_TESTCASE = {
ltp_enums.Requirements.LOOP_DEVICE_SUPPORT: [
- 'syscalls-mount01',
- 'syscalls-fchmod06',
- 'syscalls-ftruncate04',
- 'syscalls-ftruncate04_64',
- 'syscalls-inotify03',
- 'syscalls-link08',
- 'syscalls-linkat02',
- 'syscalls-mkdir03',
- 'syscalls-mkdirat02',
- 'syscalls-mknod07',
- 'syscalls-mknodat02',
- 'syscalls-mmap16',
- 'syscalls-mount01',
- 'syscalls-mount02',
- 'syscalls-mount03',
- 'syscalls-mount04',
- 'syscalls-mount06',
- 'syscalls-rename11',
- 'syscalls-renameat01',
- 'syscalls-rmdir02',
- 'syscalls-umount01',
- 'syscalls-umount02',
- 'syscalls-umount03',
- 'syscalls-umount2_01',
- 'syscalls-umount2_02',
- 'syscalls-umount2_03',
- 'syscalls-utime06',
- 'syscalls-utimes01',
- 'syscalls-mkfs01',
+ 'syscalls.mount01',
+ 'syscalls.fchmod06',
+ 'syscalls.ftruncate04',
+ 'syscalls.ftruncate04_64',
+ 'syscalls.inotify03',
+ 'syscalls.link08',
+ 'syscalls.linkat02',
+ 'syscalls.mkdir03',
+ 'syscalls.mkdirat02',
+ 'syscalls.mknod07',
+ 'syscalls.mknodat02',
+ 'syscalls.mmap16',
+ 'syscalls.mount01',
+ 'syscalls.mount02',
+ 'syscalls.mount03',
+ 'syscalls.mount04',
+ 'syscalls.mount06',
+ 'syscalls.rename11',
+ 'syscalls.renameat01',
+ 'syscalls.rmdir02',
+ 'syscalls.umount01',
+ 'syscalls.umount02',
+ 'syscalls.umount03',
+ 'syscalls.umount2_01',
+ 'syscalls.umount2_02',
+ 'syscalls.umount2_03',
+ 'syscalls.utime06',
+ 'syscalls.utimes01',
+ 'syscalls.mkfs01',
],
- ltp_enums.Requirements.BIN_IN_PATH_LDD: ['commands-ldd'],
+ ltp_enums.Requirements.BIN_IN_PATH_LDD: ['commands.ldd'],
}
# Requirement for all test cases
@@ -143,116 +143,48 @@
]
# Staging tests are for debugging and verifying fixed tests
-# Test specified here can be in format: testsuite-testname,
-# or testsuite-testname_**bit, or just testname. Using just testname
+# Test specified here can be in format: testsuite.testname,
+# or testsuite.testname_**bit, or just testname. Using just testname
# is not recommended
STAGING_TESTS = [
- # Tests currently only failing on sailfish and marlin,
+ # Tests currently only failing on pixels,
# these will be inspected soon
- 'syscalls-open14',
- 'syscalls-openat03',
+ 'syscalls.open14',
+ 'syscalls.openat03',
# Recently fixed
- 'connectors-Connectors',
- 'kernel_misc-kmsg01',
- 'syscalls-access01',
- 'syscalls-add_key01',
- 'syscalls-add_key02',
- 'syscalls-chdir03',
- 'syscalls-chroot01',
- 'syscalls-creat01',
- 'syscalls-creat01',
- 'syscalls-creat03',
- 'syscalls-creat04',
- 'syscalls-creat05',
- 'epoll_create1_01',
- 'epoll_ctl01',
- 'epoll_ctl02',
- 'fcntl07',
- 'fcntl07_64',
- 'madvise05',
- 'mkdir02',
- 'mkdir04',
- 'pause01',
- 'pipe01',
- 'pipe02',
- 'pipe03',
- 'posix_fadvise01',
- 'posix_fadvise01_64',
- 'posix_fadvise03',
- 'posix_fadvise03_64',
- 'ppoll01',
- 'preadv01',
- 'preadv01_64',
- 'preadv02_64',
- 'pwritev01',
- 'pwritev02_64',
- 'recvmsg02',
- 'rename09',
- 'syscall01',
- 'utime03',
- 'commands-ldd',
+ 'syscalls.getrusage03',
+ 'syscalls.creat07',
+ 'syscalls.creat08',
+ 'sched.sched_cli_serv',
+ 'admin_tools.at_deny01',
+ 'admin_tools.at_allow01',
+ 'cpuhotplug.cpuhotplug02',
+ 'mm.mtest05',
+ 'numa.move_pages01_64bit',
+ 'numa.move_pages02',
+ 'numa.move_pages04',
+ 'numa.move_pages05',
+ 'numa.move_pages06',
+ 'numa.move_pages07',
+ 'numa.move_pages08',
+ 'numa.move_pages09',
+ 'numa.move_pages10',
# getrusage04 gives inconsistent result over different runs
- 'syscalls-getrusage04',
+ 'syscalls.getrusage04',
# Fail on local device but pass on lab devices
- 'fs-proc01',
- # Fail on lab devices but pass on local device
- 'syscalls-execl01',
- 'syscalls-execle01',
- 'syscalls-execlp01',
- 'syscalls-execv01',
- 'syscalls-execve01',
- 'syscalls-execve04',
- 'syscalls-execvp01',
- 'syscalls-ioctl01_02',
- 'syscalls-move_pages01',
- 'syscalls-move_pages02',
- 'syscalls-move_pages04',
- 'syscalls-move_pages05',
- 'syscalls-move_pages06',
- 'syscalls-move_pages07',
- 'syscalls-move_pages08',
- 'syscalls-move_pages09',
- 'syscalls-move_pages10',
- 'syscalls-setpgid03',
- 'numa-move_pages01_32bit',
+ 'fs.proc01',
# Fail on staging but passing on stable
- 'fs-fs_di',
- # New tests from timers Securebits test suite
- 'check_keepcaps01',
- 'check_keepcaps02',
- 'check_keepcaps03',
- # New tests from timers Tracing test suite
- 'ftrace_regression01',
- 'ftrace_regression02',
- 'ftrace-stress-test',
+ 'fs.fs_di',
]
# Tests disabled
# Based on external/ltp commit 5f01077afe994f4107b147222f3956716d4a8fde
DISABLED_TESTS = [
- # Recently fixed, will push to staging soon
- 'syscalls-getrusage03',
- 'syscalls-creat07',
- 'syscalls-creat08',
- 'sched-sched_cli_serv',
- 'admin_tools-at_deny01',
- 'admin_tools-at_allow01',
- 'cpuhotplug-cpuhotplug02',
- 'mm-mtest05',
- 'numa-move_pages01_64bit',
- 'numa-move_pages02',
- 'numa-move_pages04',
- 'numa-move_pages05',
- 'numa-move_pages06',
- 'numa-move_pages07',
- 'numa-move_pages08',
- 'numa-move_pages09',
- 'numa-move_pages10',
# The following test case is designed only for i386
'f00f',
# The following test cases are uncategorized
- 'syscalls-fcntl34',
- 'syscalls-fcntl34_64',
+ 'syscalls.fcntl34',
+ 'syscalls.fcntl34_64',
'inotify06',
'abort01',
'chmod05',
@@ -533,8 +465,8 @@
'smt_smp_enabled',
'smt_smp_affinity',
'zram03',
- 'ext4_uninit_groups',
- 'ext4_persist_prealloc',
+ 'ext4-uninit-groups',
+ 'ext4-persist-prealloc',
'pipeio_1',
'pipeio_4',
'pipeio_5',
@@ -544,42 +476,42 @@
'cpuhotplug06',
'input06',
'dio10',
- 'fsx_linux',
+ 'fsx-linux',
'dio04',
- 'Numa_testcases',
- 'ext4_uninit_groups',
- 'ext4_persist_prealloc',
+ 'Numa-testcases',
+ 'ext4-uninit-groups',
+ 'ext4-persist-prealloc',
'connect01',
'prot_hsymlinks',
- 'fs-ftest01',
- 'fs-ftest03',
- 'fs-ftest04',
- 'fs-ftest05',
- 'fs-ftest07',
- 'fs-ftest08',
- 'fs-inode02',
- 'ipc-signal_test_01',
- 'mm-data_space',
- 'mm-mmapstress01',
- 'mm-mmapstress03',
- 'mm-mmapstress09',
- 'mm-mmapstress10',
- 'syscalls-clock_nanosleep01',
- 'syscalls-clone04',
- 'syscalls-fcntl14',
- 'syscalls-fcntl14',
- 'syscalls-fcntl14_64',
- 'syscalls-fcntl17',
- 'syscalls-fcntl17_64',
- 'syscalls-getdomainname01',
- 'syscalls-kill12',
- 'syscalls-setdomainname01',
- 'syscalls-setdomainname02',
- 'syscalls-setdomainname03',
- 'syscalls-sighold02',
- 'syscalls-sigpending02',
- 'syscalls-sigrelse01',
- 'syscalls-vfork02',
+ 'fs.ftest01',
+ 'fs.ftest03',
+ 'fs.ftest04',
+ 'fs.ftest05',
+ 'fs.ftest07',
+ 'fs.ftest08',
+ 'fs.inode02',
+ 'ipc.signal_test_01',
+ 'mm.data_space',
+ 'mm.mmapstress01',
+ 'mm.mmapstress03',
+ 'mm.mmapstress09',
+ 'mm.mmapstress10',
+ 'syscalls.clock_nanosleep01',
+ 'syscalls.clone04',
+ 'syscalls.fcntl14',
+ 'syscalls.fcntl14',
+ 'syscalls.fcntl14_64',
+ 'syscalls.fcntl17',
+ 'syscalls.fcntl17_64',
+ 'syscalls.getdomainname01',
+ 'syscalls.kill12',
+ 'syscalls.setdomainname01',
+ 'syscalls.setdomainname02',
+ 'syscalls.setdomainname03',
+ 'syscalls.sighold02',
+ 'syscalls.sigpending02',
+ 'syscalls.sigrelse01',
+ 'syscalls.vfork02',
# The following tests are not stable on 64bit version
'input01_64bit',
'input02_64bit',
@@ -588,25 +520,30 @@
'input05_64bit',
'input06_64bit',
# The following tests are failing on 64bit version
- 'mm-overcommit_memory01_64bit',
- 'mm-overcommit_memory02_64bit',
- 'mm-overcommit_memory03_64bit',
- 'mm-overcommit_memory04_64bit',
- 'mm-overcommit_memory05_64bit',
- 'mm-overcommit_memory06_64bit',
+ 'mm.overcommit_memory01_64bit',
+ 'mm.overcommit_memory02_64bit',
+ 'mm.overcommit_memory03_64bit',
+ 'mm.overcommit_memory04_64bit',
+ 'mm.overcommit_memory05_64bit',
+ 'mm.overcommit_memory06_64bit',
# 'which' in Android does not accept the tested options b/31152668
- 'commands-which01',
- # tests that are currently killing some lab devices
- 'mm-oom01_64bit',
- 'mm-oom02_64bit',
- 'mm-oom03_64bit',
- 'mm-oom04_64bit',
- 'mm-oom05_64bit',
- 'mm-swapping01_64bit',
- 'mm-thp01_64bit',
- 'mm-thp02_64bit',
- 'mm-thp03_64bit',
- 'mm-vma01_64bit',
+ 'commands.which01',
+ # tests that are currently killing some lab devices 64bit on (pixel and bullhead)
+ # b/31181781
+ 'mm.oom01_64bit',
+ 'mm.oom02_64bit',
+ 'mm.oom03_64bit',
+ 'mm.oom04_64bit',
+ 'mm.oom05_64bit',
+ 'mm.swapping01_64bit',
+ 'mm.thp01_64bit',
+ 'mm.thp02_64bit',
+ 'mm.thp03_64bit',
+ 'mm.vma01_64bit',
+ # kmsg01 would pass but it occasionally causes socket timeout and misalignment
+ # of request and response
+ # b/32343072
+ 'kernel_misc.kmsg01',
# alarm02 tests for a boundary condition which is impractical to implement
# correctly on 32-bit Linux. bionic deliberately breaks with POSIX by reporting
# that it failed to set up the alarm. (Other libc implementations fail to
@@ -626,27 +563,27 @@
# https://android-review.googlesource.com/#/c/127908/
'open13',
# Bug#30675453
- 'syscalls-perf_event_open02',
+ 'syscalls.perf_event_open02',
# Bug#30688551
- 'syscalls-lstat03_64',
- 'syscalls-lstat03',
+ 'syscalls.lstat03_64',
+ 'syscalls.lstat03',
# Bug#30688061
- 'input-input03',
+ 'input.input03',
# Bug#30688056
- 'cpuhotplug-cpuhotplug04',
+ 'cpuhotplug.cpuhotplug04',
# Bug#30699880
- 'mm-mtest01w',
- 'mm-mtest01',
+ 'mm.mtest01w',
+ 'mm.mtest01',
# Bug#30688574
- 'syscalls-accept4_01',
+ 'syscalls.accept4_01',
# Bug#30689411
- 'mm-mmapstress03',
+ 'mm.mmapstress03',
# Bug #32100169
- 'dma_thread_diotest-dma_thread_diotest1',
- 'dma_thread_diotest-dma_thread_diotest2',
- 'dma_thread_diotest-dma_thread_diotest3',
- 'dma_thread_diotest-dma_thread_diotest4',
- 'dma_thread_diotest-dma_thread_diotest5',
- 'dma_thread_diotest-dma_thread_diotest6',
- 'dma_thread_diotest-dma_thread_diotest7',
+ 'dma_thread_diotest.dma_thread_diotest1',
+ 'dma_thread_diotest.dma_thread_diotest2',
+ 'dma_thread_diotest.dma_thread_diotest3',
+ 'dma_thread_diotest.dma_thread_diotest4',
+ 'dma_thread_diotest.dma_thread_diotest5',
+ 'dma_thread_diotest.dma_thread_diotest6',
+ 'dma_thread_diotest.dma_thread_diotest7',
]
diff --git a/testcases/kernel/ltp/stable/KernelLtpTest.config b/testcases/kernel/ltp/stable/KernelLtpTest.config
index de2e1a0..119d247 100644
--- a/testcases/kernel/ltp/stable/KernelLtpTest.config
+++ b/testcases/kernel/ltp/stable/KernelLtpTest.config
@@ -1,6 +1,6 @@
{
"run_staging": false,
"run_32bit": true,
- "run_64bit": false,
+ "run_64bit": true,
"number_of_threads": 1
}
diff --git a/testcases/kernel/ltp/test_case.py b/testcases/kernel/ltp/test_case.py
index 7932c56..9a3e669 100644
--- a/testcases/kernel/ltp/test_case.py
+++ b/testcases/kernel/ltp/test_case.py
@@ -138,7 +138,7 @@
@property
def fullname(self):
"""Return full test name in <testsuite-testname> format"""
- return "%s-%s" % (self.testsuite, self.testname)
+ return "%s.%s" % (self.testsuite, self.testname)
def __str__(self):
return self.fullname
diff --git a/testcases/kernel/ltp/test_cases_parser.py b/testcases/kernel/ltp/test_cases_parser.py
index 5c89cb5..436740a 100644
--- a/testcases/kernel/ltp/test_cases_parser.py
+++ b/testcases/kernel/ltp/test_cases_parser.py
@@ -172,7 +172,6 @@
'''
testsuite_script = os.path.join(self._data_path,
ltp_configs.LTP_RUNTEST_DIR, testsuite)
- testsuite = testsuite.replace('-', '_')
result = []
for line in open(testsuite_script, 'r'):
@@ -183,7 +182,7 @@
testname = line.split()[0]
testname_prefix = ('DISABLED_'
if testname in disabled_tests_list else '')
- testname_modified = testname_prefix + testname.replace('-', '_')
+ testname_modified = testname_prefix + testname
result.append("\t".join([testsuite, testname_modified, line[len(
testname):].strip()]))
diff --git a/tools/build/tasks/list/vts_spec_file_list.mk b/tools/build/tasks/list/vts_spec_file_list.mk
index 25e11b0..8410bc4 100644
--- a/tools/build/tasks/list/vts_spec_file_list.mk
+++ b/tools/build/tasks/list/vts_spec_file_list.mk
@@ -32,3 +32,5 @@
hardware/interfaces/nfc/1.0/vts/Nfc.vts \
hardware/interfaces/nfc/1.0/vts/NfcClientCallback.vts \
hardware/interfaces/nfc/1.0/vts/types.vts \
+ hardware/interfaces/vibrator/1.0/vts/Vibrator.vts \
+ hardware/interfaces/vibrator/1.0/vts/types.vts \
diff --git a/tools/vts-tradefed/etc/vts-tradefed b/tools/vts-tradefed/etc/vts-tradefed
index fd5298c..5510bb6 100755
--- a/tools/vts-tradefed/etc/vts-tradefed
+++ b/tools/vts-tradefed/etc/vts-tradefed
@@ -91,6 +91,7 @@
# to run in the lab.
OPTIONAL_JARS="
+ google-tradefed-vts-prebuilt
google-tradefed-prebuilt
google-tradefed-tests
google-tf-prod-tests"
diff --git a/tools/vts-tradefed/res/config/vts-serving-staging-hal-hidl.xml b/tools/vts-tradefed/res/config/vts-serving-staging-hal-hidl.xml
index 0bd8ce5..a1bd5fc 100644
--- a/tools/vts-tradefed/res/config/vts-serving-staging-hal-hidl.xml
+++ b/tools/vts-tradefed/res/config/vts-serving-staging-hal-hidl.xml
@@ -21,5 +21,6 @@
<option name="compatibility:include-filter" value="HwBinderThroughputBenchmark" />
<option name="compatibility:include-filter" value="HwBinderPerformanceTest" />
<option name="compatibility:include-filter" value="NfcHidlBasicTest" />
+ <option name="compatibility:include-filter" value="VibratorHidlTest" />
<template-include name="reporters" default="basic-reporters" />
</configuration>
diff --git a/tools/vts-tradefed/res/push_groups/HidlHalTest.push b/tools/vts-tradefed/res/push_groups/HidlHalTest.push
index acd468b..30df503 100644
--- a/tools/vts-tradefed/res/push_groups/HidlHalTest.push
+++ b/tools/vts-tradefed/res/push_groups/HidlHalTest.push
@@ -1 +1,7 @@
HostDrivenTest.push
+
+DATA/lib/libvts_driver_hidl_nfc@1.0.so->/data/local/tmp/32/libvts_driver_hidl_nfc@1.0.so
+DATA/lib64/libvts_driver_hidl_nfc@1.0.so->/data/local/tmp/64/libvts_driver_hidl_nfc@1.0.so
+
+DATA/lib/libvts_driver_hidl_vibrator@1.0.so->/data/local/tmp/32/libvts_driver_hidl_vibrator@1.0.so
+DATA/lib64/libvts_driver_hidl_vibrator@1.0.so->/data/local/tmp/64/libvts_driver_hidl_vibrator@1.0.so
diff --git a/utils/python/mirror/hal_mirror.py b/utils/python/mirror/hal_mirror.py
index 8dee7d0..4120c32 100644
--- a/utils/python/mirror/hal_mirror.py
+++ b/utils/python/mirror/hal_mirror.py
@@ -41,6 +41,7 @@
"mobile": 6,
"bluetooth": 7,
"nfc": 8,
+ "vibrator": 12,
"bionic_libm": 1001,
"bionic_libc": 1002,
"vndk_libcutils": 1101}
@@ -147,6 +148,7 @@
target_type,
target_version,
target_package=None,
+ target_component_name=None,
target_basepaths=_DEFAULT_TARGET_BASE_PATHS,
handler_name=None,
bits=64):
@@ -169,6 +171,7 @@
target_type,
target_version,
target_package=target_package,
+ target_component_name=target_component_name,
target_basepaths=target_basepaths,
handler_name=handler_name,
bits=bits)
@@ -196,6 +199,7 @@
target_type,
target_version,
target_package=None,
+ target_component_name=None,
target_basepaths=_DEFAULT_TARGET_BASE_PATHS,
handler_name=None,
bits=64):
@@ -209,6 +213,7 @@
target_type: string, the target type name (e.g., light, camera).
target_version: float, the target component version (e.g., 1.0).
target_package: string, the package name of a HIDL HAL.
+ target_component_name: string, the name of a target component.
target_basepaths: list of strings, the paths to look for target
files in. Default is _DEFAULT_TARGET_BASE_PATHS.
handler_name: string, the name of the handler. target_type is used
@@ -275,7 +280,8 @@
target_class=target_class_id,
target_type=target_type_id,
target_version=target_version,
- target_package=target_package)
+ target_package=target_package,
+ target_component_name=target_component_name)
if not launched:
raise errors.ComponentLoadingError(
diff --git a/web/dashboard/appengine/servlet/pom.xml b/web/dashboard/appengine/servlet/pom.xml
index 8c0ee82..df5f711 100644
--- a/web/dashboard/appengine/servlet/pom.xml
+++ b/web/dashboard/appengine/servlet/pom.xml
@@ -32,6 +32,7 @@
<appengine.senderEmail></appengine.senderEmail>
<appengine.emailDomain></appengine.emailDomain>
<appengine.defaultEmail></appengine.defaultEmail>
+ <appengine.serviceClientID></appengine.serviceClientID>
<hadoop.version>2.4.1</hadoop.version>
<compat.module>hbase-hadoop2-compat</compat.module>
@@ -94,7 +95,6 @@
</pluginRepository>
</pluginRepositories>
-
<dependencies>
<dependency>
<groupId>com.google.cloud.bigtable</groupId>
@@ -139,16 +139,60 @@
<artifactId>slf4j-api</artifactId>
<version>${slf4jVersion}</version>
</dependency>
+
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.7</version>
</dependency>
+
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.0.0-beta2</version>
</dependency>
+
+ <dependency>
+ <groupId>com.google.api-client</groupId>
+ <artifactId>google-api-client</artifactId>
+ <version>1.22.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.api-client</groupId>
+ <artifactId>google-api-client</artifactId>
+ <version>1.20.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.http-client</groupId>
+ <artifactId>google-http-client</artifactId>
+ <version>1.20.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.3.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.http-client</groupId>
+ <artifactId>google-http-client-jackson</artifactId>
+ <version>1.20.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.http-client</groupId>
+ <artifactId>google-http-client-gson</artifactId>
+ <version>1.21.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.apis</groupId>
+ <artifactId>google-api-services-oauth2</artifactId>
+ <version>v1-rev124-1.22.0</version>
+ </dependency>
</dependencies>
<build>
diff --git a/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/api/BigtableApiServlet.java b/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/api/BigtableApiServlet.java
new file mode 100644
index 0000000..c398cab
--- /dev/null
+++ b/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/api/BigtableApiServlet.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2016 Google Inc. All Rights Reserved.
+ *
+ * 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.
+ */
+
+package com.google.android.vts.api;
+
+import com.google.android.vts.helpers.BigtableHelper;
+import com.google.api.client.json.gson.GsonFactory;
+import com.google.api.client.http.javanet.NetHttpTransport;
+import com.google.api.client.json.jackson.JacksonFactory;
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
+import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
+import com.google.api.services.oauth2.Oauth2;
+import com.google.api.services.oauth2.model.Tokeninfo;
+import org.apache.hadoop.hbase.HColumnDescriptor;
+import org.apache.hadoop.hbase.HTableDescriptor;
+import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.Admin;
+import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.client.Table;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.io.BufferedReader;
+import java.io.IOException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Represents the servlet that is invoked on loading the first page of dashboard.
+ */
+@WebServlet(name = "bigtable", urlPatterns = {"/api/bigtable"})
+public class BigtableApiServlet extends HttpServlet {
+
+ private static final String SERVICE_CLIENT_ID = System.getenv("SERVICE_CLIENT_ID");
+ private static final Logger logger = LoggerFactory.getLogger(BigtableApiServlet.class);
+
+ @Override
+ public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ // Retrieve the params
+ String payload = new String();
+ JSONObject payloadJson;
+ try {
+ String line = null;
+ BufferedReader reader = request.getReader();
+ while ((line = reader.readLine()) != null) {
+ payload += line;
+ }
+ payloadJson = new JSONObject(payload);
+ } catch (IOException e) {
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ return;
+ }
+
+ // Verify service account access token.
+ boolean authorized = false;
+ if (payloadJson.has("accessToken")) {
+ String accessToken = payloadJson.getString("accessToken").trim();
+ GoogleCredential credential = new GoogleCredential().setAccessToken(accessToken);
+ Oauth2 oauth2 = new Oauth2.Builder(new NetHttpTransport(), new JacksonFactory(),
+ credential).build();
+ Tokeninfo tokenInfo = oauth2.tokeninfo().setAccessToken(accessToken).execute();
+ if (tokenInfo.getIssuedTo().equals(SERVICE_CLIENT_ID)) {
+ authorized = true;
+ }
+ }
+
+ if (!authorized) {
+ response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+ return;
+ }
+
+ // Parse the desired action and execute the command
+ try {
+ if (payloadJson.has("verb")) {
+ switch (payloadJson.getString("verb")) {
+ case "createTable":
+ createTable(payloadJson);
+ break;
+ case "insertRow":
+ insertRow(payloadJson);
+ break;
+ default:
+ logger.info("Invalid Bigtable API verb: ", payloadJson.getString("verb"));
+ throw new IOException("Unsupported POST verb.");
+ }
+ }
+ } catch (IOException e) {
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ return;
+ }
+ response.setStatus(HttpServletResponse.SC_OK);
+ }
+
+ /**
+ * Creates a table in the Bigtable instance.
+ * @param payloadJson The JSON object representing the table to be created. Of the form:
+ * {
+ * 'tableName' : 'table',
+ * 'familyNames' : ['family1', 'family2', 'family3']
+ * }
+ * @throws IOException
+ */
+ private void createTable(JSONObject payloadJson) throws IOException {
+ if (!payloadJson.has("tableName") || !payloadJson.has("familyNames")) {
+ logger.info("Missing attributes for bigtable api createTable().");
+ throw new IOException("Missing attributes.");
+ }
+ String table = payloadJson.getString("tableName");
+ TableName tableName = TableName.valueOf(table);
+ JSONArray familyArray = payloadJson.getJSONArray("familyNames");
+ HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);
+ for (int i = 0; i < familyArray.length(); i++) {
+ tableDescriptor.addFamily(new HColumnDescriptor(familyArray.getString(i).trim()));
+ }
+ Admin admin = BigtableHelper.getConnection().getAdmin();
+ admin.createTable(tableDescriptor);
+ }
+
+ /**
+ * Inserts a row into the BigTable instance
+ * @param payloadJson The JSON object representing the row to be inserted. Of the form:
+ * {
+ * 'tableName' : 'table',
+ * 'rowKey' : 'row',
+ * 'family' : 'family',
+ * 'qualifier' : 'qualifier',
+ * 'value' : 'value'
+ * }
+ * @throws IOException
+ */
+ private void insertRow(JSONObject payloadJson) throws IOException {
+ if (!payloadJson.has("tableName") || !payloadJson.has("rowKey") ||
+ !payloadJson.has("family") || !payloadJson.has("qualifier") ||
+ !payloadJson.has("value")) {
+ logger.info("Missing attributes for bigtable api insertRow().");
+ throw new IOException("Missing attributes.");
+ }
+ String tableName = payloadJson.getString("tableName");
+ Table table = BigtableHelper.getTable(TableName.valueOf(tableName));
+ String row = payloadJson.getString("rowKey").trim();
+ String family = payloadJson.getString("family").trim();
+ String qualifier = payloadJson.getString("qualifier").trim();
+ String value = payloadJson.getString("value");
+ Put put = new Put(Bytes.toBytes(row));
+ put.addColumn(Bytes.toBytes(family), Bytes.toBytes(qualifier), Bytes.toBytes(value));
+ table.put(put);
+ }
+}
diff --git a/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/DashboardMainServlet.java b/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/DashboardMainServlet.java
index ac6064b..3040035 100644
--- a/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/DashboardMainServlet.java
+++ b/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/DashboardMainServlet.java
@@ -54,7 +54,6 @@
private static final String DASHBOARD_ALL_LINK = "/?showAll=true";
private static final String DASHBOARD_FAVORITES_LINK = "/";
private static final byte[] EMAIL_FAMILY = Bytes.toBytes("email_to_test");
- private static final byte[] TEST_FAMILY = Bytes.toBytes("test_to_email");
private static final String STATUS_TABLE = "vts_status_table";
private static final String TABLE_PREFIX = "result_";
private static final String ALL_HEADER = "All Tests";
@@ -76,6 +75,10 @@
RequestDispatcher dispatcher = null;
String loginURI = userService.createLoginURL(request.getRequestURI());
String logoutURI = userService.createLogoutURL(loginURI);
+ if (currentUser == null || currentUser.getEmail() == null) {
+ response.sendRedirect(loginURI);
+ return;
+ }
Table table = BigtableHelper.getTable(TableName.valueOf(STATUS_TABLE));
List<String> displayedTests = new ArrayList<>();
@@ -139,6 +142,7 @@
String[] testArray = new String[displayedTests.size()];
displayedTests.toArray(testArray);
response.setContentType("text/plain");
+ response.setStatus(HttpServletResponse.SC_OK);
request.setAttribute("testNames", testArray);
request.setAttribute("headerLabel", header);
request.setAttribute("showAll", showAll);
diff --git a/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/PreferencesServlet.java b/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/ShowPreferencesServlet.java
similarity index 95%
rename from web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/PreferencesServlet.java
rename to web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/ShowPreferencesServlet.java
index 171ff7d..740af49 100644
--- a/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/PreferencesServlet.java
+++ b/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/ShowPreferencesServlet.java
@@ -21,7 +21,6 @@
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.HTableDescriptor;
@@ -30,8 +29,6 @@
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.client.ResultScanner;
-import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
import org.slf4j.Logger;
@@ -52,16 +49,16 @@
/**
* Represents the servlet that is invoked on loading the preferences page to manage favorites.
*/
-@WebServlet(name = "preferences", urlPatterns = {"/preferences"})
-public class PreferencesServlet extends HttpServlet {
+@WebServlet(name = "preferences", urlPatterns = {"/show_preferences"})
+public class ShowPreferencesServlet extends HttpServlet {
- private static final String PREFERENCES_JSP = "/preferences.jsp";
+ private static final String PREFERENCES_JSP = "/show_preferences.jsp";
private static final String DASHBOARD_MAIN_LINK = "/";
private static final byte[] EMAIL_FAMILY = Bytes.toBytes("email_to_test");
private static final byte[] TEST_FAMILY = Bytes.toBytes("test_to_email");
private static final String STATUS_TABLE = "vts_status_table";
private static final String TABLE_PREFIX = "result_";
- private static final Logger logger = LoggerFactory.getLogger(PreferencesServlet.class);
+ private static final Logger logger = LoggerFactory.getLogger(ShowPreferencesServlet.class);
@Override
diff --git a/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/VtsAlertJobServlet.java b/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/VtsAlertJobServlet.java
index e1f0f99..fc643f0 100644
--- a/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/VtsAlertJobServlet.java
+++ b/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/servlet/VtsAlertJobServlet.java
@@ -18,7 +18,6 @@
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
@@ -404,9 +403,6 @@
logger.error("Error sending email : ", e);
}
}
- } else {
- Delete del = new Delete(Bytes.toBytes(testName));
- table.delete(del);
}
}
}
diff --git a/web/dashboard/appengine/servlet/src/main/webapp/WEB-INF/appengine-web.xml b/web/dashboard/appengine/servlet/src/main/webapp/WEB-INF/appengine-web.xml
index 70a7b7b..f414966 100644
--- a/web/dashboard/appengine/servlet/src/main/webapp/WEB-INF/appengine-web.xml
+++ b/web/dashboard/appengine/servlet/src/main/webapp/WEB-INF/appengine-web.xml
@@ -17,6 +17,7 @@
<env-var name="EMAIL_DOMAIN" value="${appengine.emailDomain}" />
<env-var name="SENDER_EMAIL" value="${appengine.senderEmail}" />
<env-var name="DEFAULT_EMAIL" value="${appengine.defaultEmail}" />
+ <env-var name="SERVICE_CLIENT_ID" value="${appengine.serviceClientID}" />
</env-variables>
<system-properties>
diff --git a/web/dashboard/appengine/servlet/src/main/webapp/WEB-INF/web.xml b/web/dashboard/appengine/servlet/src/main/webapp/WEB-INF/web.xml
index 22cbb5a..53037d7 100644
--- a/web/dashboard/appengine/servlet/src/main/webapp/WEB-INF/web.xml
+++ b/web/dashboard/appengine/servlet/src/main/webapp/WEB-INF/web.xml
@@ -38,6 +38,11 @@
</servlet>
<servlet>
+ <servlet-name>bigtable</servlet-name>
+ <servlet-class>com.google.android.vts.api.BigtableApiServlet</servlet-class>
+</servlet>
+
+<servlet>
<servlet-name>vts_alert_job</servlet-name>
<servlet-class>com.google.android.vts.servlet.VtsAlertJobServlet</servlet-class>
</servlet>
@@ -49,7 +54,7 @@
<servlet-mapping>
<servlet-name>preferences</servlet-name>
- <url-pattern>/preferences/*</url-pattern>
+ <url-pattern>/show_preferences/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
@@ -68,6 +73,11 @@
</servlet-mapping>
<servlet-mapping>
+ <servlet-name>bigtable</servlet-name>
+ <url-pattern>/api/bigtable/*</url-pattern>
+</servlet-mapping>
+
+<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
@@ -90,7 +100,7 @@
<security-constraint>
<web-resource-collection>
<web-resource-name>all</web-resource-name>
- <url-pattern>/*</url-pattern>
+ <url-pattern>/show_*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
diff --git a/web/dashboard/appengine/servlet/src/main/webapp/css/preferences.css b/web/dashboard/appengine/servlet/src/main/webapp/css/show_preferences.css
similarity index 100%
rename from web/dashboard/appengine/servlet/src/main/webapp/css/preferences.css
rename to web/dashboard/appengine/servlet/src/main/webapp/css/show_preferences.css
diff --git a/web/dashboard/appengine/servlet/src/main/webapp/dashboard_main.jsp b/web/dashboard/appengine/servlet/src/main/webapp/dashboard_main.jsp
index 68c62c8..415d298 100644
--- a/web/dashboard/appengine/servlet/src/main/webapp/dashboard_main.jsp
+++ b/web/dashboard/appengine/servlet/src/main/webapp/dashboard_main.jsp
@@ -67,7 +67,7 @@
</div>
<c:if test='${not showAll}'>
<div id='edit-button-wrapper' class='fixed-action-btn'>
- <a href='/preferences' id='edit-button' class='btn-floating btn-large red waves-effect'>
+ <a href='/show_preferences' id='edit-button' class='btn-floating btn-large red waves-effect'>
<i class='large material-icons'>mode_edit</i>
</a>
</div>
diff --git a/web/dashboard/appengine/servlet/src/main/webapp/preferences.jsp b/web/dashboard/appengine/servlet/src/main/webapp/show_preferences.jsp
similarity index 97%
rename from web/dashboard/appengine/servlet/src/main/webapp/preferences.jsp
rename to web/dashboard/appengine/servlet/src/main/webapp/show_preferences.jsp
index 651d5d8..3efd566 100644
--- a/web/dashboard/appengine/servlet/src/main/webapp/preferences.jsp
+++ b/web/dashboard/appengine/servlet/src/main/webapp/show_preferences.jsp
@@ -10,7 +10,7 @@
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700'>
<link rel='stylesheet' href='https://www.gstatic.com/external_hosted/materialize/all_styles-bundle.css'>
<link rel='stylesheet' href='/css/navbar.css'>
- <link rel='stylesheet' href='/css/preferences.css'>
+ <link rel='stylesheet' href='/css/show_preferences.css'>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js'></script>
<script src='https://www.gstatic.com/external_hosted/materialize/materialize.min.js'></script>
<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.js'></script>
@@ -155,7 +155,7 @@
</c:forEach>
</div>
</div>
- <form id='prefs-form' style='visibility:hidden' action='/preferences' method='post'>
+ <form id='prefs-form' style='visibility:hidden' action='/show_preferences' method='post'>
<input name='addedTests' type='text'>
<input name='removedTests' type='text'>
</form>