mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:23:37 +00:00
hidl_test: move duplicated code to shared lib
Test: hidl_test Change-Id: Ia68b78d44d68a6b254c686afe64faf7cc89510d7
This commit is contained in:
@@ -13,11 +13,13 @@ subdirs = [
|
||||
"tests/expression/1.0",
|
||||
"tests/foo/1.0",
|
||||
"tests/foo/1.0/default",
|
||||
"tests/foo/1.0/default/lib",
|
||||
"tests/libhwbinder/1.0",
|
||||
"tests/libhwbinder/1.0/default",
|
||||
"tests/msgq/1.0",
|
||||
"tests/pointer/1.0",
|
||||
"tests/pointer/1.0/default",
|
||||
"tests/pointer/1.0/default/lib",
|
||||
"wifi/1.0",
|
||||
"wifi/supplicant/1.0",
|
||||
]
|
||||
|
||||
@@ -11,6 +11,7 @@ cc_library_shared {
|
||||
shared_libs: [
|
||||
"libbase",
|
||||
"libhidl",
|
||||
"libfootest",
|
||||
"libhwbinder",
|
||||
"liblog",
|
||||
"libutils",
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "Foo.h"
|
||||
#include "FooCallback.h"
|
||||
#include <android-base/logging.h>
|
||||
#include <hidl-test/FooHelper.h>
|
||||
#include <inttypes.h>
|
||||
#include <utils/Timers.h>
|
||||
|
||||
@@ -108,7 +109,7 @@ Return<void> Foo::callMe(
|
||||
|
||||
ALOGI("SERVER(Foo) callMe %p calling IFooCallback::heyItsYouIsntIt, " \
|
||||
"should block for %" PRId64 " seconds", cb.get(),
|
||||
FooCallback::DELAY_S);
|
||||
DELAY_S);
|
||||
c[1] = systemTime();
|
||||
bool answer = cb->heyItsYouIsntIt(cb);
|
||||
c[1] = systemTime() - c[1];
|
||||
@@ -201,74 +202,6 @@ Return<void> Foo::haveAStringVec(
|
||||
return Void();
|
||||
}
|
||||
|
||||
// NOTE: duplicated code in hidl_test
|
||||
using std::to_string;
|
||||
|
||||
static std::string to_string(const IFoo::StringMatrix5x3 &M);
|
||||
static std::string to_string(const IFoo::StringMatrix3x5 &M);
|
||||
static std::string to_string(const hidl_string &s);
|
||||
|
||||
template<typename T>
|
||||
static std::string to_string(const T *elems, size_t n) {
|
||||
std::string out;
|
||||
out = "[";
|
||||
for (size_t i = 0; i < n; ++i) {
|
||||
if (i > 0) {
|
||||
out += ", ";
|
||||
}
|
||||
out += to_string(elems[i]);
|
||||
}
|
||||
out += "]";
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
template<typename T, size_t SIZE>
|
||||
static std::string to_string(const hidl_array<T, SIZE> &array) {
|
||||
return to_string(&array[0], SIZE);
|
||||
}
|
||||
|
||||
template<typename T, size_t SIZE1, size_t SIZE2>
|
||||
static std::string to_string(const hidl_array<T, SIZE1, SIZE2> &array) {
|
||||
std::string out;
|
||||
out = "[";
|
||||
for (size_t i = 0; i < SIZE1; ++i) {
|
||||
if (i > 0) {
|
||||
out += ", ";
|
||||
}
|
||||
|
||||
out += "[";
|
||||
for (size_t j = 0; j < SIZE2; ++j) {
|
||||
if (j > 0) {
|
||||
out += ", ";
|
||||
}
|
||||
|
||||
out += to_string(array[i][j]);
|
||||
}
|
||||
out += "]";
|
||||
}
|
||||
out += "]";
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
static std::string to_string(const hidl_vec<T> &vec) {
|
||||
return to_string(&vec[0], vec.size());
|
||||
}
|
||||
|
||||
static std::string to_string(const IFoo::StringMatrix5x3 &M) {
|
||||
return to_string(M.s);
|
||||
}
|
||||
|
||||
static std::string to_string(const IFoo::StringMatrix3x5 &M) {
|
||||
return to_string(M.s);
|
||||
}
|
||||
|
||||
static std::string to_string(const hidl_string &s) {
|
||||
return std::string("'") + s.c_str() + "'";
|
||||
}
|
||||
|
||||
Return<void> Foo::transposeMe(
|
||||
const hidl_array<float, 3, 5> &in, transposeMe_cb _cb) {
|
||||
ALOGI("SERVER(Foo) transposeMe(%s)", to_string(in).c_str());
|
||||
@@ -286,48 +219,6 @@ Return<void> Foo::transposeMe(
|
||||
|
||||
return Void();
|
||||
}
|
||||
// end duplicated code
|
||||
|
||||
static std::string QuuxToString(const IFoo::Quux &val) {
|
||||
std::string s;
|
||||
|
||||
s = "Quux(first='";
|
||||
s += val.first.c_str();
|
||||
s += "', last='";
|
||||
s += val.last.c_str();
|
||||
s += "')";
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
static std::string MultiDimensionalToString(const IFoo::MultiDimensional &val) {
|
||||
std::string s;
|
||||
|
||||
s += "MultiDimensional(";
|
||||
|
||||
s += "quuxMatrix=[";
|
||||
|
||||
size_t k = 0;
|
||||
for (size_t i = 0; i < 5; ++i) {
|
||||
if (i > 0) {
|
||||
s += ", ";
|
||||
}
|
||||
|
||||
s += "[";
|
||||
for (size_t j = 0; j < 3; ++j, ++k) {
|
||||
if (j > 0) {
|
||||
s += ", ";
|
||||
}
|
||||
|
||||
s += QuuxToString(val.quuxMatrix[i][j]);
|
||||
}
|
||||
}
|
||||
s += "]";
|
||||
|
||||
s += ")";
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
Return<void> Foo::callingDrWho(
|
||||
const MultiDimensional &in, callingDrWho_cb _hidl_cb) {
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
|
||||
#include "FooCallback.h"
|
||||
#include <android-base/logging.h>
|
||||
#include <hidl-test/FooHelper.h>
|
||||
#include <inttypes.h>
|
||||
#include <utils/Timers.h>
|
||||
|
||||
namespace android {
|
||||
namespace hardware {
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include <hidl/MQDescriptor.h>
|
||||
|
||||
#include <utils/Condition.h>
|
||||
#include <utils/Timers.h>
|
||||
namespace android {
|
||||
namespace hardware {
|
||||
namespace tests {
|
||||
@@ -30,11 +29,6 @@ struct FooCallback : public IFooCallback {
|
||||
Return<void> reportResults(int64_t ns, reportResults_cb _hidl_cb) override;
|
||||
Return<void> youBlockedMeFor(const hidl_array<int64_t, 3 /* 3 */>& callerBlockedInfo) override;
|
||||
|
||||
static constexpr nsecs_t DELAY_S = 1;
|
||||
static constexpr nsecs_t DELAY_NS = seconds_to_nanoseconds(DELAY_S);
|
||||
static constexpr nsecs_t TOLERANCE_NS = milliseconds_to_nanoseconds(10);
|
||||
static constexpr nsecs_t ONEWAY_TOLERANCE_NS = milliseconds_to_nanoseconds(1);
|
||||
|
||||
hidl_array<InvokeInfo, 3> invokeInfo;
|
||||
Mutex mLock;
|
||||
Condition mCond;
|
||||
|
||||
15
tests/foo/1.0/default/lib/Android.bp
Normal file
15
tests/foo/1.0/default/lib/Android.bp
Normal file
@@ -0,0 +1,15 @@
|
||||
cc_library_shared {
|
||||
name: "libfootest",
|
||||
srcs: [
|
||||
"FooHelper.cpp"
|
||||
],
|
||||
|
||||
shared_libs: [
|
||||
"libhidl",
|
||||
"libhwbinder",
|
||||
"android.hardware.tests.foo@1.0",
|
||||
],
|
||||
local_include_dirs: ["include/hidl-test"],
|
||||
export_include_dirs: ["include"],
|
||||
|
||||
}
|
||||
57
tests/foo/1.0/default/lib/FooHelper.cpp
Normal file
57
tests/foo/1.0/default/lib/FooHelper.cpp
Normal file
@@ -0,0 +1,57 @@
|
||||
#include "FooHelper.h"
|
||||
|
||||
namespace android {
|
||||
|
||||
std::string to_string(const IFoo::StringMatrix5x3 &M) {
|
||||
return to_string(M.s);
|
||||
}
|
||||
|
||||
std::string to_string(const IFoo::StringMatrix3x5 &M) {
|
||||
return to_string(M.s);
|
||||
}
|
||||
|
||||
std::string to_string(const hidl_string &s) {
|
||||
return std::string("'") + s.c_str() + "'";
|
||||
}
|
||||
|
||||
std::string QuuxToString(const IFoo::Quux &val) {
|
||||
std::string s;
|
||||
|
||||
s = "Quux(first='";
|
||||
s += val.first.c_str();
|
||||
s += "', last='";
|
||||
s += val.last.c_str();
|
||||
s += "')";
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
std::string MultiDimensionalToString(const IFoo::MultiDimensional &val) {
|
||||
std::string s;
|
||||
|
||||
s += "MultiDimensional(";
|
||||
|
||||
s += "quuxMatrix=[";
|
||||
|
||||
size_t k = 0;
|
||||
for (size_t i = 0; i < 5; ++i) {
|
||||
if (i > 0) {
|
||||
s += ", ";
|
||||
}
|
||||
|
||||
s += "[";
|
||||
for (size_t j = 0; j < 3; ++j, ++k) {
|
||||
if (j > 0) {
|
||||
s += ", ";
|
||||
}
|
||||
|
||||
s += QuuxToString(val.quuxMatrix[i][j]);
|
||||
}
|
||||
}
|
||||
s += "]";
|
||||
|
||||
s += ")";
|
||||
|
||||
return s;
|
||||
}
|
||||
} // namespace android
|
||||
79
tests/foo/1.0/default/lib/include/hidl-test/FooHelper.h
Normal file
79
tests/foo/1.0/default/lib/include/hidl-test/FooHelper.h
Normal file
@@ -0,0 +1,79 @@
|
||||
#ifndef ANDROID_HIDL_TEST_FOO_HELPER_H
|
||||
#define ANDROID_HIDL_TEST_FOO_HELPER_H
|
||||
#include <string>
|
||||
#include <android/hardware/tests/foo/1.0/IFoo.h>
|
||||
#include <utils/Timers.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
using std::to_string;
|
||||
using hardware::hidl_string;
|
||||
using hardware::hidl_vec;
|
||||
using hardware::hidl_array;
|
||||
using hardware::tests::foo::V1_0::IFoo;
|
||||
|
||||
static constexpr nsecs_t DELAY_S = 1;
|
||||
static constexpr nsecs_t DELAY_NS = seconds_to_nanoseconds(DELAY_S);
|
||||
static constexpr nsecs_t TOLERANCE_NS = milliseconds_to_nanoseconds(10);
|
||||
static constexpr nsecs_t ONEWAY_TOLERANCE_NS = milliseconds_to_nanoseconds(1);
|
||||
|
||||
std::string to_string(const IFoo::StringMatrix5x3 &M);
|
||||
std::string to_string(const IFoo::StringMatrix3x5 &M);
|
||||
// Add quotes around s. For testing purposes only.
|
||||
std::string to_string(const hidl_string &s);
|
||||
|
||||
template<typename T>
|
||||
std::string to_string(const T *elems, size_t n) {
|
||||
std::string out;
|
||||
out = "[";
|
||||
for (size_t i = 0; i < n; ++i) {
|
||||
if (i > 0) {
|
||||
out += ", ";
|
||||
}
|
||||
out += to_string(elems[i]);
|
||||
}
|
||||
out += "]";
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
template<typename T, size_t SIZE>
|
||||
std::string to_string(const hidl_array<T, SIZE> &array) {
|
||||
return to_string(&array[0], SIZE);
|
||||
}
|
||||
|
||||
template<typename T, size_t SIZE1, size_t SIZE2>
|
||||
std::string to_string(const hidl_array<T, SIZE1, SIZE2> &array) {
|
||||
std::string out;
|
||||
out = "[";
|
||||
for (size_t i = 0; i < SIZE1; ++i) {
|
||||
if (i > 0) {
|
||||
out += ", ";
|
||||
}
|
||||
|
||||
out += "[";
|
||||
for (size_t j = 0; j < SIZE2; ++j) {
|
||||
if (j > 0) {
|
||||
out += ", ";
|
||||
}
|
||||
|
||||
out += to_string(array[i][j]);
|
||||
}
|
||||
out += "]";
|
||||
}
|
||||
out += "]";
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
std::string to_string(const hidl_vec<T> &vec) {
|
||||
return to_string(&vec[0], vec.size());
|
||||
}
|
||||
|
||||
std::string QuuxToString(const IFoo::Quux &val);
|
||||
|
||||
std::string MultiDimensionalToString(const IFoo::MultiDimensional &val);
|
||||
|
||||
} // namespace android
|
||||
#endif // ANDROID_HIDL_TEST_TEST_HELPER_H
|
||||
@@ -11,6 +11,7 @@ cc_library_shared {
|
||||
shared_libs: [
|
||||
"libbase",
|
||||
"libhidl",
|
||||
"libpointertest",
|
||||
"libhwbinder",
|
||||
"liblog",
|
||||
"libutils",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "Graph.h"
|
||||
#include <android-base/logging.h>
|
||||
#include <hidl-test/PointerHelper.h>
|
||||
|
||||
#define PUSH_ERROR_IF(__cond__) if(__cond__) { errors.push_back(std::to_string(__LINE__) + ": " + #__cond__); }
|
||||
|
||||
@@ -10,38 +11,6 @@ namespace pointer {
|
||||
namespace V1_0 {
|
||||
namespace implementation {
|
||||
|
||||
static void simpleGraph(IGraph::Graph& g) {
|
||||
g.nodes.resize(2);
|
||||
g.edges.resize(1);
|
||||
g.nodes[0].data = 10;
|
||||
g.nodes[1].data = 20;
|
||||
g.edges[0].left = &g.nodes[0];
|
||||
g.edges[0].right = &g.nodes[1];
|
||||
}
|
||||
|
||||
static bool isSimpleGraph(const IGraph::Graph &g) {
|
||||
if(g.nodes.size() != 2) return false;
|
||||
if(g.edges.size() != 1) return false;
|
||||
if(g.nodes[0].data != 10) return false;
|
||||
if(g.nodes[1].data != 20) return false;
|
||||
if(g.edges[0].left != &g.nodes[0]) return false;
|
||||
if(g.edges[0].right != &g.nodes[1]) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
static void logSimpleGraph(const char *prefix, const IGraph::Graph& g) {
|
||||
ALOGI("%s Graph %p, %d nodes, %d edges", prefix, &g, (int)g.nodes.size(), (int)g.edges.size());
|
||||
std::ostringstream os;
|
||||
for(size_t i = 0; i < g.nodes.size(); i++)
|
||||
os << &g.nodes[i] << " = " << g.nodes[i].data << ", ";
|
||||
ALOGI("%s Nodes: [%s]", prefix, os.str().c_str());
|
||||
os.str("");
|
||||
os.clear();
|
||||
for(size_t i = 0; i < g.edges.size(); i++)
|
||||
os << g.edges[i].left << " -> " << g.edges[i].right << ", ";
|
||||
ALOGI("%s Edges: [%s]", prefix, os.str().c_str());
|
||||
}
|
||||
|
||||
// Methods from ::android::hardware::tests::pointer::V1_0::IGraph follow.
|
||||
Return<void> Graph::passAGraph(const IGraph::Graph& g) {
|
||||
ALOGI("SERVER(Graph) passAGraph start.");
|
||||
|
||||
17
tests/pointer/1.0/default/lib/Android.bp
Normal file
17
tests/pointer/1.0/default/lib/Android.bp
Normal file
@@ -0,0 +1,17 @@
|
||||
cc_library_shared {
|
||||
name: "libpointertest",
|
||||
srcs: [
|
||||
"PointerHelper.cpp"
|
||||
],
|
||||
|
||||
shared_libs: [
|
||||
"libbase",
|
||||
"libhidl",
|
||||
"libhwbinder",
|
||||
"liblog",
|
||||
"android.hardware.tests.pointer@1.0",
|
||||
],
|
||||
local_include_dirs: ["include/hidl-test"],
|
||||
export_include_dirs: ["include"],
|
||||
|
||||
}
|
||||
37
tests/pointer/1.0/default/lib/PointerHelper.cpp
Normal file
37
tests/pointer/1.0/default/lib/PointerHelper.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
#define LOG_TAG "hidl_test"
|
||||
#include <android-base/logging.h>
|
||||
#include "PointerHelper.h"
|
||||
namespace android {
|
||||
|
||||
void simpleGraph(IGraph::Graph& g) {
|
||||
g.nodes.resize(2);
|
||||
g.edges.resize(1);
|
||||
g.nodes[0].data = 10;
|
||||
g.nodes[1].data = 20;
|
||||
g.edges[0].left = &g.nodes[0];
|
||||
g.edges[0].right = &g.nodes[1];
|
||||
}
|
||||
|
||||
bool isSimpleGraph(const IGraph::Graph &g) {
|
||||
if(g.nodes.size() != 2) return false;
|
||||
if(g.edges.size() != 1) return false;
|
||||
if(g.nodes[0].data != 10) return false;
|
||||
if(g.nodes[1].data != 20) return false;
|
||||
if(g.edges[0].left != &g.nodes[0]) return false;
|
||||
if(g.edges[0].right != &g.nodes[1]) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void logSimpleGraph(const char *prefix, const IGraph::Graph& g) {
|
||||
ALOGI("%s Graph %p, %d nodes, %d edges", prefix, &g, (int)g.nodes.size(), (int)g.edges.size());
|
||||
std::ostringstream os;
|
||||
for(size_t i = 0; i < g.nodes.size(); i++)
|
||||
os << &g.nodes[i] << " = " << g.nodes[i].data << ", ";
|
||||
ALOGI("%s Nodes: [%s]", prefix, os.str().c_str());
|
||||
os.str("");
|
||||
os.clear();
|
||||
for(size_t i = 0; i < g.edges.size(); i++)
|
||||
os << g.edges[i].left << " -> " << g.edges[i].right << ", ";
|
||||
ALOGI("%s Edges: [%s]", prefix, os.str().c_str());
|
||||
}
|
||||
} // namespace android
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef ANDROID_HIDL_TEST_POINTER_HELPER_H
|
||||
#define ANDROID_HIDL_TEST_POINTER_HELPER_H
|
||||
|
||||
#include <android/hardware/tests/pointer/1.0/IGraph.h>
|
||||
|
||||
using ::android::hardware::tests::pointer::V1_0::IGraph;
|
||||
|
||||
namespace android {
|
||||
|
||||
void simpleGraph(IGraph::Graph& g);
|
||||
bool isSimpleGraph(const IGraph::Graph &g);
|
||||
void logSimpleGraph(const char *prefix, const IGraph::Graph& g);
|
||||
|
||||
} // namespace android
|
||||
#endif // ANDROID_HIDL_TEST_POINTER_HELPER_H
|
||||
Reference in New Issue
Block a user