Skip OUTPUT_INSUFFICIENT_SIZE test for zero-sized output.

Bug: 126737477
Test: 1.2 VTS with sample driver
Change-Id: I04afd962ed45eac16aacfa9664ad80ba0d4f5855
Merged-In: I04afd962ed45eac16aacfa9664ad80ba0d4f5855
(cherry picked from commit d293315d93)
This commit is contained in:
Xusong Wang 2019-03-12 14:40:32 -07:00
parent 41be3682a3
commit 0237edd144

View file

@ -77,6 +77,13 @@ void copy_back(MixedTyped* dst, const std::vector<RequestArgument>& ra, char* sr
"Number of types in MixedTyped changed, but copy_back function wasn't updated");
}
static bool isZeroSized(const MixedTyped& example, uint32_t index) {
for (auto i : example.operandDimensions.at(index)) {
if (i == 0) return true;
}
return false;
}
// Top level driver for models and examples generated by test_generator.py
// Test driver for those generated from ml/nn/runtime/test/spec
static Return<ErrorStatus> ExecutePreparedModel(sp<V1_0::IPreparedModel>& preparedModel,
@ -178,17 +185,18 @@ void EvaluatePreparedModel(sp<T_IPreparedModel>& preparedModel, std::function<bo
// Go through all outputs, initialize RequestArgument descriptors
resize_accordingly(golden, test);
bool sizeLargerThanOne = true;
for_all(golden, [&outputs_info, &outputSize, &outputType, &sizeLargerThanOne](
for_all(golden, [&golden, &outputs_info, &outputSize, &outputType, &sizeLargerThanOne](
int index, auto, auto s) {
if (outputs_info.size() <= static_cast<size_t>(index)) outputs_info.resize(index + 1);
if (index == 0) {
// On OutputType::INSUFFICIENT, set the output operand with index 0 with
// buffer size one byte less than needed.
if (outputType == OutputType::INSUFFICIENT) {
if (s > 1)
if (s > 1 && !isZeroSized(golden, index)) {
s -= 1;
else
} else {
sizeLargerThanOne = false;
}
}
}
RequestArgument arg = {