133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair/*
233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair * Copyright (C) 2017 The Android Open Source Project
333fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair *
433fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair * Licensed under the Apache License, Version 2.0 (the "License");
533fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair * you may not use this file except in compliance with the License.
633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair * You may obtain a copy of the License at
733fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair *
833fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair *      http://www.apache.org/licenses/LICENSE-2.0
933fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair *
1033fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair * Unless required by applicable law or agreed to in writing, software
1133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair * distributed under the License is distributed on an "AS IS" BASIS,
1233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1333fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair * See the License for the specific language governing permissions and
1433fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair * limitations under the License.
1533fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair */
1633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
17357988777218502ed68a56a0c8b247ba64b74721Vishnu Nair#include "serviceutils/PriorityDumper.h"
1833fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
1933fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair#include <vector>
2033fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
2133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair#include <gmock/gmock.h>
2233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair#include <gtest/gtest.h>
2333fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
2433fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair#include <utils/String16.h>
2533fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair#include <utils/Vector.h>
2633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
2733fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nairusing namespace android;
2833fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
2933fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nairusing ::testing::ElementsAreArray;
3033fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nairusing ::testing::Mock;
3133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nairusing ::testing::Test;
3233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
3333fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nairclass PriorityDumperMock : public PriorityDumper {
3433fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nairpublic:
356a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    MOCK_METHOD3(dumpCritical, status_t(int, const Vector<String16>&, bool));
366a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    MOCK_METHOD3(dumpHigh, status_t(int, const Vector<String16>&, bool));
376a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    MOCK_METHOD3(dumpNormal, status_t(int, const Vector<String16>&, bool));
386a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    MOCK_METHOD3(dumpAll, status_t(int, const Vector<String16>&, bool));
3933fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair};
4033fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
4133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nairclass DumpAllMock : public PriorityDumper {
4233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nairpublic:
436a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    MOCK_METHOD3(dumpCritical, status_t(int, const Vector<String16>&, bool));
446a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    MOCK_METHOD3(dumpHigh, status_t(int, const Vector<String16>&, bool));
456a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    MOCK_METHOD3(dumpNormal, status_t(int, const Vector<String16>&, bool));
4633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair};
4733fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
4833fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nairclass PriorityDumperTest : public Test {
4933fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nairpublic:
5033fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    PriorityDumperTest() : dumper_(), dumpAlldumper_(), fd(1) {}
5133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    PriorityDumperMock dumper_;
5233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    DumpAllMock dumpAlldumper_;
5333fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    int fd;
5433fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair};
5533fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
5633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nairstatic void addAll(Vector<String16>& av, const std::vector<std::string>& v) {
5733fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    for (auto element : v) {
5833fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair        av.add(String16(element.c_str()));
5933fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    }
6033fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair}
6133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
6233fd3be6088bfacaf659108bad67d24103494aa1Vishnu NairTEST_F(PriorityDumperTest, noArgsPassed) {
6333fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> args;
646a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpAll(fd, ElementsAreArray(args), /*asProto=*/false));
65357988777218502ed68a56a0c8b247ba64b74721Vishnu Nair    dumper_.priorityDump(fd, args);
6633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair}
6733fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
6833fd3be6088bfacaf659108bad67d24103494aa1Vishnu NairTEST_F(PriorityDumperTest, noPriorityArgsPassed) {
6933fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> args;
7033fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    addAll(args, {"bunch", "of", "args"});
716a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpAll(fd, ElementsAreArray(args), /*asProto=*/false));
72357988777218502ed68a56a0c8b247ba64b74721Vishnu Nair    dumper_.priorityDump(fd, args);
7333fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair}
7433fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
7533fd3be6088bfacaf659108bad67d24103494aa1Vishnu NairTEST_F(PriorityDumperTest, priorityArgsOnly) {
7633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> args;
7733fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    addAll(args, {"--dump-priority", "CRITICAL"});
7833fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> strippedArgs;
796a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpCritical(fd, ElementsAreArray(strippedArgs), /*asProto=*/false));
80357988777218502ed68a56a0c8b247ba64b74721Vishnu Nair    dumper_.priorityDump(fd, args);
8133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair}
8233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
8333fd3be6088bfacaf659108bad67d24103494aa1Vishnu NairTEST_F(PriorityDumperTest, dumpCritical) {
8433fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> args;
8533fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    addAll(args, {"--dump-priority", "CRITICAL", "args", "left", "behind"});
8633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> strippedArgs;
8733fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    addAll(strippedArgs, {"args", "left", "behind"});
8833fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
896a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpCritical(fd, ElementsAreArray(strippedArgs), /*asProto=*/false));
906a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    dumper_.priorityDump(fd, args);
916a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair}
926a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
936a40853e06f5274d84b0fc66e349a36510d1497fVishnu NairTEST_F(PriorityDumperTest, dumpCriticalInMiddle) {
946a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> args;
956a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(args, {"args", "left", "--dump-priority", "CRITICAL", "behind"});
966a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> strippedArgs;
976a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(strippedArgs, {"args", "left", "behind"});
986a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
996a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpCritical(fd, ElementsAreArray(strippedArgs), /*asProto=*/false));
100357988777218502ed68a56a0c8b247ba64b74721Vishnu Nair    dumper_.priorityDump(fd, args);
10133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair}
10233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
10333fd3be6088bfacaf659108bad67d24103494aa1Vishnu NairTEST_F(PriorityDumperTest, dumpHigh) {
10433fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> args;
10533fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    addAll(args, {"--dump-priority", "HIGH", "args", "left", "behind"});
10633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> strippedArgs;
10733fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    addAll(strippedArgs, {"args", "left", "behind"});
10833fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
1096a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpHigh(fd, ElementsAreArray(strippedArgs), /*asProto=*/false));
1106a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    dumper_.priorityDump(fd, args);
1116a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair}
1126a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
1136a40853e06f5274d84b0fc66e349a36510d1497fVishnu NairTEST_F(PriorityDumperTest, dumpHighInEnd) {
1146a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> args;
1156a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(args, {"args", "left", "behind", "--dump-priority", "HIGH"});
1166a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> strippedArgs;
1176a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(strippedArgs, {"args", "left", "behind"});
1186a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
1196a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpHigh(fd, ElementsAreArray(strippedArgs), /*asProto=*/false));
120357988777218502ed68a56a0c8b247ba64b74721Vishnu Nair    dumper_.priorityDump(fd, args);
12133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair}
12233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
12333fd3be6088bfacaf659108bad67d24103494aa1Vishnu NairTEST_F(PriorityDumperTest, dumpNormal) {
12433fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> args;
12533fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    addAll(args, {"--dump-priority", "NORMAL", "args", "left", "behind"});
12633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> strippedArgs;
12733fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    addAll(strippedArgs, {"args", "left", "behind"});
12833fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
1296a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpNormal(fd, ElementsAreArray(strippedArgs), /*asProto=*/false));
130357988777218502ed68a56a0c8b247ba64b74721Vishnu Nair    dumper_.priorityDump(fd, args);
13133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair}
13233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
13333fd3be6088bfacaf659108bad67d24103494aa1Vishnu NairTEST_F(PriorityDumperTest, dumpAll) {
13433fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> args;
13533fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    addAll(args, {"args", "left", "behind"});
13633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
1376a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumpAlldumper_, dumpCritical(fd, ElementsAreArray(args), /*asProto=*/false));
1386a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumpAlldumper_, dumpHigh(fd, ElementsAreArray(args), /*asProto=*/false));
1396a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumpAlldumper_, dumpNormal(fd, ElementsAreArray(args), /*asProto=*/false));
14033fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
141357988777218502ed68a56a0c8b247ba64b74721Vishnu Nair    dumpAlldumper_.priorityDump(fd, args);
14233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair}
14333fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
14433fd3be6088bfacaf659108bad67d24103494aa1Vishnu NairTEST_F(PriorityDumperTest, priorityArgWithPriorityMissing) {
14533fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> args;
14633fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    addAll(args, {"--dump-priority"});
1476a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> strippedArgs;
1486a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpAll(fd, ElementsAreArray(strippedArgs), /*asProto=*/false));
14933fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
150357988777218502ed68a56a0c8b247ba64b74721Vishnu Nair    dumper_.priorityDump(fd, args);
15133fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair}
15233fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
15333fd3be6088bfacaf659108bad67d24103494aa1Vishnu NairTEST_F(PriorityDumperTest, priorityArgWithInvalidPriority) {
15433fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    Vector<String16> args;
15533fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair    addAll(args, {"--dump-priority", "REALLY_HIGH"});
1566a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> strippedArgs;
1576a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpAll(fd, ElementsAreArray(strippedArgs), /*asProto=*/false));
1586a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
1596a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    dumper_.priorityDump(fd, args);
1606a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair}
1616a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
1626a40853e06f5274d84b0fc66e349a36510d1497fVishnu NairTEST_F(PriorityDumperTest, protoArg) {
1636a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> args;
1646a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(args, {"--proto"});
1656a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> strippedArgs;
1666a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpAll(fd, ElementsAreArray(strippedArgs), /*asProto=*/true));
1676a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
1686a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    dumper_.priorityDump(fd, args);
1696a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair}
1706a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
1716a40853e06f5274d84b0fc66e349a36510d1497fVishnu NairTEST_F(PriorityDumperTest, protoArgWithPriorityArgs) {
1726a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> args;
1736a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(args, {"--proto", "args", "--dump-priority", "NORMAL", "left", "behind"});
1746a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> strippedArgs;
1756a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(strippedArgs, {"args", "left", "behind"});
1766a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpNormal(fd, ElementsAreArray(strippedArgs), /*asProto=*/true));
1776a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
1786a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    dumper_.priorityDump(fd, args);
1796a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair}
1806a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
1816a40853e06f5274d84b0fc66e349a36510d1497fVishnu NairTEST_F(PriorityDumperTest, protoArgWithPriorityArgsInReverseOrder) {
1826a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> args;
1836a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(args, {"--dump-priority", "NORMAL", "--proto", "args", "left", "behind"});
1846a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> strippedArgs;
1856a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(strippedArgs, {"args", "left", "behind"});
1866a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpNormal(fd, ElementsAreArray(strippedArgs), /*asProto=*/true));
1876a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
1886a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    dumper_.priorityDump(fd, args);
1896a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair}
1906a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
1916a40853e06f5274d84b0fc66e349a36510d1497fVishnu NairTEST_F(PriorityDumperTest, protoArgInMiddle) {
1926a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> args;
1936a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(args, {"--unknown", "args", "--proto", "args", "left", "behind"});
1946a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> strippedArgs;
1956a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(strippedArgs, {"--unknown", "args", "args", "left", "behind"});
1966a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpAll(fd, ElementsAreArray(strippedArgs), /*asProto=*/true));
1976a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
1986a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    dumper_.priorityDump(fd, args);
1996a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair}
2006a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
2016a40853e06f5274d84b0fc66e349a36510d1497fVishnu NairTEST_F(PriorityDumperTest, protoArgAtEnd) {
2026a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> args;
2036a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(args, {"--unknown", "args", "args", "left", "behind", "--proto"});
2046a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> strippedArgs;
2056a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(strippedArgs, {"--unknown", "args", "args", "left", "behind"});
2066a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpAll(fd, ElementsAreArray(strippedArgs), /*asProto=*/true));
2076a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
2086a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    dumper_.priorityDump(fd, args);
2096a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair}
2106a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair
2116a40853e06f5274d84b0fc66e349a36510d1497fVishnu NairTEST_F(PriorityDumperTest, protoArgWithInvalidPriorityType) {
2126a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> args;
2136a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(args, {"--dump-priority", "NOT_SO_HIGH", "--proto", "args", "left", "behind"});
2146a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    Vector<String16> strippedArgs;
2156a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    addAll(strippedArgs, {"args", "left", "behind"});
2166a40853e06f5274d84b0fc66e349a36510d1497fVishnu Nair    EXPECT_CALL(dumper_, dumpAll(fd, ElementsAreArray(strippedArgs), /*asProto=*/true));
21733fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair
218357988777218502ed68a56a0c8b247ba64b74721Vishnu Nair    dumper_.priorityDump(fd, args);
21933fd3be6088bfacaf659108bad67d24103494aa1Vishnu Nair}